Skip to content

Commit 6e263f6

Browse files
committed
Use the new JSON format for scheduled events.
1 parent 739b9ca commit 6e263f6

File tree

3 files changed

+90
-81
lines changed

3 files changed

+90
-81
lines changed

myDevices/cloud/scheduler.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -162,24 +162,24 @@ def create_job(self, schedule_item):
162162
debug('Create job: {}'.format(schedule_item))
163163
try:
164164
with self.mutex:
165-
event = schedule_item['event']
166-
if event['type'] == 'date':
167-
schedule_item['job'] = schedule.once().at(event['start_date'])
168-
if event['type'] == 'interval':
169-
if event['unit'] == 'hour':
170-
schedule_item['job'] = schedule.every(event['interval'], event['start_date']).hours
171-
if event['unit'] == 'minute':
172-
schedule_item['job'] = schedule.every(event['interval'], event['start_date']).minutes
173-
if event['unit'] == 'day':
174-
schedule_item['job'] = schedule.every(event['interval'], event['start_date']).days.at(event['start_date'])
175-
if event['unit'] == 'week':
176-
schedule_item['job'] = schedule.every(event['interval'], event['start_date']).weeks.at(event['start_date'])
177-
if event['unit'] == 'month':
178-
schedule_item['job'] = schedule.every(event['interval'], event['start_date']).months.at(event['start_date'])
179-
if event['unit'] == 'year':
180-
schedule_item['job'] = schedule.every(event['interval'], event['start_date']).years.at(event['start_date'])
181-
if 'last_run' in event:
182-
schedule_item['job'].set_last_run(event['last_run'])
165+
config = schedule_item['event']['config']
166+
if config['type'] == 'date':
167+
schedule_item['job'] = schedule.once().at(config['start_date'])
168+
if config['type'] == 'interval':
169+
if config['unit'] == 'hour':
170+
schedule_item['job'] = schedule.every(config['interval'], config['start_date']).hours
171+
if config['unit'] == 'minute':
172+
schedule_item['job'] = schedule.every(config['interval'], config['start_date']).minutes
173+
if config['unit'] == 'day':
174+
schedule_item['job'] = schedule.every(config['interval'], config['start_date']).days.at(config['start_date'])
175+
if config['unit'] == 'week':
176+
schedule_item['job'] = schedule.every(config['interval'], config['start_date']).weeks.at(config['start_date'])
177+
if config['unit'] == 'month':
178+
schedule_item['job'] = schedule.every(config['interval'], config['start_date']).months.at(config['start_date'])
179+
if config['unit'] == 'year':
180+
schedule_item['job'] = schedule.every(config['interval'], config['start_date']).years.at(config['start_date'])
181+
if 'last_run' in config:
182+
schedule_item['job'].set_last_run(config['last_run'])
183183
schedule_item['job'].do(self.run_scheduled_item, schedule_item)
184184
except:
185185
exception('Failed setting up scheduler')
@@ -196,15 +196,16 @@ def run_scheduled_item(self, schedule_item):
196196
return
197197
result = True
198198
event = schedule_item['event']
199-
event['last_run'] = datetime.strftime(datetime.utcnow(), '%Y-%m-%d %H:%M')
199+
config = event['config']
200+
config['last_run'] = datetime.strftime(datetime.utcnow(), '%Y-%m-%d %H:%M')
200201
with self.mutex:
201202
self.update_database_record(event['id'], event)
202203
for action in event['actions']:
203204
info('Executing scheduled action: {}'.format(action))
204205
result = self.client.RunAction(action)
205206
if result == False:
206207
error('Failed to execute action: {}'.format(action))
207-
if event['type'] == 'date' and result == True:
208+
if config['type'] == 'date' and result == True:
208209
with self.mutex:
209210
schedule.cancel_job(schedule_item['job'])
210211

myDevices/schedule/__init__.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,10 @@ def at(self, time_str):
287287

288288
def make_date(self, datetime_str):
289289
"""Make datetime from string."""
290-
date = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M')
290+
try:
291+
date = datetime.strptime(datetime_str, '%Y-%m-%dT%H:%M:%S.%fZ')
292+
except ValueError:
293+
date = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M')
291294
assert 0 <= date.hour <= 23
292295
assert 0 <= date.minute <= 59
293296
assert 1 <= date.day <= 31
@@ -401,7 +404,11 @@ def _schedule_next_run(self):
401404
#todo: no 'minutes' implementation
402405
if self.unit in ('hours'):
403406
if self.start_date != None:
404-
self.next_run = datetime.strptime(self.start_date, "%Y-%m-%d %H:%M")
407+
try:
408+
date = datetime.strptime(self.start_date, '%Y-%m-%dT%H:%M:%S.%fZ')
409+
except ValueError:
410+
date = datetime.strptime(self.start_date, '%Y-%m-%d %H:%M')
411+
self.next_run = date
405412
#'2016-11-30 17:52'
406413
now = datetime.utcnow()
407414
if self.next_run < now:

0 commit comments

Comments
 (0)