Package linspector :: Package lib :: Package config :: Module periods
[hide private]
[frames] | no frames]

Source Code for Module linspector.lib.config.periods

  1  from apscheduler.scheduler import Scheduler 
  2   
  3   
4 -class Period(object):
5 - def __init__(self, name):
6 self.name = name
7
8 - def getName(self):
9 return self.name
10
11 - def createJob(self, scheduler, jobInfo, func):
12 pass
13 14
15 -class IntervalPeriod(Period):
16 - def __init__(self, name="", weeks=0,days=0, hours=0, minutes=0, seconds=0, start_date=None, 17 comment=None):
18 super(IntervalPeriod, self).__init__(name) 19 20 self.days = days # number of days to wait 21 self.weeks = weeks # number of weeks to wait 22 self.hours = hours # number of hours to wait 23 self.minutes = minutes # number of minutes to wait 24 self.seconds = seconds # number of seconds to wait 25 self.start_date = start_date # when to first execute 26 self.comment = comment # comment
27
28 - def createJob(self, scheduler, jobInfo, func):
29 return scheduler.add_interval_job(func, self.weeks, self.hours, self.minutes, self.seconds, self.start_date, jobInfo)
30 31
32 - def __str__(self):
33 ret = "IntervalPeriod(Name: " + self.name + ")" 34 return ret
35 36
37 -class CronPeriod(Period):
38 - def __init__(self, name="", year="*", month="*", day="*", week="*", 39 day_of_week="*", hour="*", minute="*", second="0", 40 comment=None):
41 super(CronPeriod, self).__init__(name) 42 self.year = year # 4-digit year number 43 self.month = month # month number (1-12) 44 self.day = day # day of the month (1-31) 45 self.week = week # ISO week number (1-53) 46 self.day_of_week = day_of_week # number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun) 47 self.hour = hour # hour (0-23) 48 self.minute = minute # minute (0-59) 49 self.second = second # second (0-59) 50 self.comment = comment 51 self.date = date
52
53 - def __str__(self):
54 ret = "CronPeriod(Name: " + self.name + ")" 55 return ret
56
57 - def createJob(self, scheduler, jobInfo, func):
58 return scheduler.add_cron_job(func, self.year, self.month, self.day, self.week, self.day_of_week, self.hour, self.minute, self.second, jobInfo)
59 60
61 -class DatePeriod(Period):
62 - def __init__(self, name, date, comment=None):
63 super(DatePeriod, self).__init__(name) 64 self.date = date 65 self.comment = comment
66
67 - def __str__(self):
68 ret = "DatePeriod(Name: " + self.name + ","+ str(self.date) + ")" 69 return ret
70
71 - def createJob(self, scheduler, jobInfo, func):
72 return scheduler.add_date_job(func, self.date, jobInfo)
73 74 75 76 77
78 -def parsePeriodList(periodlist,log):
79 periods=[] 80 for name, values in periodlist.items(): 81 if "date" in values: 82 periods.append(DatePeriod(name, **values)) 83 break 84 85 for i in [ "weeks","days", "hours", "minutes", "seconds", "start_date"]: 86 if i in values: 87 periods.append(IntervalPeriod(name, **values)) 88 break 89 90 for i in ["year", "month", "day", "week", "day_of_week", "hour", "minute", "second"]: 91 if i in values: 92 periods.append(CronPeriod(name, **values)) 93 break 94 95 log.w("ignoring Period: " +str(name)) 96 log.w("reason: could not determine PeriodType: " + str(values)) 97 98 99 return periods
100