helpers.taskschedule.TaskSchedule.is_time_to_run()   B
last analyzed

Complexity

Conditions 8

Size

Total Lines 18
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 15
nop 1
dl 0
loc 18
rs 7.3333
c 0
b 0
f 0
1
2
import datetime
3
4
class TaskSchedule(object):
5
6
    def __init__(self, run_on_init=False):
7
        self.lastrun = None
8
        self.start = None
9
        self.pending_run = run_on_init
10
    #default to 0 seconds means disabled
11
    #interval is in seconds
12
        self.interval = 0
13
14
    def is_disabled(self):
15
        return self.interval <= 0
16
17
    def is_time_to_run(self):
18
        if self.is_disabled():
19
            return False
20
        now = datetime.datetime.now()
21
        if self.pending_run:
22
            self.pending_run = False
23
            return self.kick_it_off(True)
24
        if self.lastrun is None and self.start is None:
25
            #never run before, run now
26
            return self.kick_it_off(True)
27
        elif self.start is not None and self.lastrun is None:
28
            #never run before and after start time
29
            return self.kick_it_off(now >= self.start)
30
        else:
31
            sincelast = now - self.lastrun
32
            if sincelast.total_seconds() >= self.interval:
33
                return self.kick_it_off(True)
34
        return False
35
36
    def kick_it_off(self, dorun=False):
37
        if dorun:
38
            self.lastrun = datetime.datetime.now()
39
        return dorun
40