Coverage for farmbot/functions/jobs.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-09-12 12:03 -0700

1""" 

2JobHandling class. 

3""" 

4 

5# └── functions/jobs.py 

6# ├── [BROKER] get_job() 

7# ├── [BROKER] set_job() 

8# └── [BROKER] complete_job() 

9 

10from .broker import BrokerConnect 

11 

12from .information import Information 

13from .resources import Resources 

14 

15 

16class JobHandling(): 

17 """Job handling class.""" 

18 

19 def __init__(self, state): 

20 self.broker = BrokerConnect(state) 

21 self.info = Information(state) 

22 self.resource = Resources(state) 

23 self.state = state 

24 

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...") 

28 

29 status_data = self.info.read_status() 

30 

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 

36 

37 if job_name is None: 

38 jobs = status_data["jobs"] 

39 else: 

40 jobs = status_data["jobs"][job_name] 

41 

42 self.state.print_status(endpoint_json=jobs, update_only=True) 

43 return jobs 

44 

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}.") 

49 

50 lua_code = f""" 

51 local job_name = "{job_name}" 

52 set_job(job_name) 

53 

54 -- Update the job\'s status and percent: 

55 set_job(job_name, { 

56 status = "{status}", 

57 percent = {percent} 

58 } ) 

59 """ 

60 

61 self.resource.lua(lua_code) 

62 

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`.") 

67 

68 lua_code = f"complete_job(\"{job_name}\")" 

69 

70 self.resource.lua(lua_code)