Coverage for farmbot_sidecar_starter_pack/functions/jobs.py: 100%
30 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-09-11 15:43 -0700
« prev ^ index » next coverage.py v7.4.4, created at 2024-09-11 15:43 -0700
1"""
2JobHandling class.
3"""
5# └── functions/jobs.py
6# ├── [BROKER] get_job()
7# ├── [BROKER] set_job()
8# └── [BROKER] complete_job()
10from .broker import BrokerConnect
12from .information import Information
13from .resources import Resources
16class JobHandling():
17 """Job handling class."""
19 def __init__(self, state):
20 self.broker = BrokerConnect(state)
21 self.info = Information(state)
22 self.resource = Resources(state)
23 self.state = state
25 def get_job(self, job_name=None):
26 """Retrieves the status or details of the specified job."""
27 self.state.print_status(description="Retrieving job data...")
29 status_data = self.info.read_status()
31 if status_data is None:
32 error = "ERROR: No job data available."
33 self.state.print_status(description=error, update_only=True)
34 self.state.error = error
35 return
37 if job_name is None:
38 jobs = status_data["jobs"]
39 else:
40 jobs = status_data["jobs"][job_name]
42 self.state.print_status(endpoint_json=jobs, update_only=True)
43 return jobs
45 def set_job(self, job_name, status, percent):
46 """Initiates or modifies job with given parameters."""
47 self.state.print_status(
48 description=f"Marking job {job_name} as {percent}% {status}.")
50 lua_code = f"""
51 local job_name = "{job_name}"
52 set_job(job_name)
54 -- Update the job\'s status and percent:
55 set_job(job_name, {
56 status = "{status}",
57 percent = {percent}
58 } )
59 """
61 self.resource.lua(lua_code)
63 def complete_job(self, job_name):
64 """Marks job as completed and triggers any associated actions."""
65 self.state.print_status(
66 description=f"Marking job {job_name} as `complete`.")
68 lua_code = f"complete_job(\"{job_name}\")"
70 self.resource.lua(lua_code)