1
0
Fork 0
mirror of https://github.com/morpheus65535/bazarr synced 2024-12-26 01:27:07 +00:00

Rework of tasks listing to avoid parsing of string.

This commit is contained in:
Louis Vézina 2019-03-27 06:48:14 -04:00
parent f47f107433
commit 98567c4a1c

View file

@ -1558,56 +1558,35 @@ def check_update():
def system(): def system():
authorize() authorize()
def get_time_from_interval(interval): def get_time_from_interval(td_object):
interval_clean = interval.split('[') seconds = int(td_object.total_seconds())
interval_clean = interval_clean[1][:-1] periods = [
interval_split = interval_clean.split(':') ('year', 60 * 60 * 24 * 365),
('month', 60 * 60 * 24 * 30),
('day', 60 * 60 * 24),
('hour', 60 * 60),
('minute', 60),
('second', 1)
]
hour = interval_split[0] strings = []
minute = interval_split[1].lstrip("0") for period_name, period_seconds in periods:
second = interval_split[2].lstrip("0") if seconds > period_seconds:
period_value, seconds = divmod(seconds, period_seconds)
has_s = 's' if period_value > 1 else ''
strings.append("%s %s%s" % (period_value, period_name, has_s))
text = "every " return ", ".join(strings)
if hour != "0":
text = text + hour
if hour == "1":
text = text + " hour"
else:
text = text + " hours"
if minute != "" and second != "":
text = text + ", "
elif minute == "" and second != "":
text = text + " and "
elif minute != "" and second == "":
text = text + " and "
if minute != "":
text = text + minute
if minute == "1":
text = text + " minute"
else:
text = text + " minutes"
if second != "":
text = text + " and "
if second != "":
text = text + second
if second == "1":
text = text + " second"
else:
text = text + " seconds"
return text
def get_time_from_cron(cron): def get_time_from_cron(cron):
text = "at " text = ""
sun = str(cron[4]) sun = str(cron[4])
hour = str(cron[5]) hour = str(cron[5])
minute = str(cron[6]) minute = str(cron[6])
second = str(cron[7]) second = str(cron[7])
if sun != "*": if sun != "*":
text = "Sunday " + text text = "Sunday at "
if hour != "0" and hour != "*": if hour != "0" and hour != "*":
text = text + hour text = text + hour
@ -1639,19 +1618,25 @@ def system():
text = text + " second" text = text + " second"
else: else:
text = text + " seconds" text = text + " seconds"
if text != "" and sun == "*":
text = "everyday at " + text
elif text == "":
text = "Never"
return text return text
task_list = [] task_list = []
for job in scheduler.get_jobs(): for job in scheduler.get_jobs():
if job.next_run_time is not None: if isinstance(job.trigger, CronTrigger):
next_run = pretty.date(job.next_run_time.replace(tzinfo=None)) if str(job.trigger.__getstate__()['fields'][0]) == "2100":
next_run = 'Never'
else: else:
next_run = "Never" next_run = pretty.date(job.next_run_time.replace(tzinfo=None))
if job.trigger.__str__().startswith('interval'): if isinstance(job.trigger, IntervalTrigger):
task_list.append([job.name, get_time_from_interval(str(job.trigger)), next_run, job.id]) interval = "every " + get_time_from_interval(job.trigger.__getstate__()['interval'])
elif job.trigger.__str__().startswith('cron'): task_list.append([job.name, interval, next_run, job.id])
elif isinstance(job.trigger, CronTrigger):
task_list.append([job.name, get_time_from_cron(job.trigger.fields), next_run, job.id]) task_list.append([job.name, get_time_from_cron(job.trigger.fields), next_run, job.id])
throttled_providers = list_throttled_providers() throttled_providers = list_throttled_providers()