|
@@ -1364,26 +1364,22 @@ class SmartSceneView(View):
|
|
|
# 判断条件是否为设置时间
|
|
|
time_type = scene_data_dict['condition'].get('time')
|
|
|
if time_type:
|
|
|
- time_task_list = scene_data_dict['task_list']
|
|
|
apscheduler_obj = ApschedulerObject()
|
|
|
# 关闭: 暂停任务, 打开: 恢复任务
|
|
|
if scene_status == SCENE_STATUS_OFF:
|
|
|
- cls.pause_job(apscheduler_obj, time_task_list)
|
|
|
+ cls.pause_time_job(apscheduler_obj, scene_data_dict)
|
|
|
else:
|
|
|
- time_stamp = cls.resume_job(apscheduler_obj, time_type, time_task_list)
|
|
|
- # 返回时间戳,则更新
|
|
|
- if time_stamp:
|
|
|
- scene_data_dict['condition']['time_dict']['time_stamp'] = time_stamp
|
|
|
- return scene_data_dict
|
|
|
+ cls.resume_time_job(apscheduler_obj, time_type, scene_data_dict)
|
|
|
|
|
|
@staticmethod
|
|
|
- def pause_job(apscheduler_obj, time_task_list):
|
|
|
+ def pause_time_job(apscheduler_obj, scene_data_dict):
|
|
|
"""
|
|
|
暂停定时任务
|
|
|
@param apscheduler_obj: apscheduler对象
|
|
|
- @param time_task_list: 定时任务列表
|
|
|
+ @param scene_data_dict: 场景数据
|
|
|
@return:
|
|
|
"""
|
|
|
+ time_task_list = scene_data_dict['task_list']
|
|
|
for time_task in time_task_list:
|
|
|
task_id = time_task.get('task_id')
|
|
|
if task_id:
|
|
@@ -1393,14 +1389,15 @@ class SmartSceneView(View):
|
|
|
continue
|
|
|
|
|
|
@classmethod
|
|
|
- def resume_job(cls, apscheduler_obj, time_type, time_task_list):
|
|
|
+ def resume_time_job(cls, apscheduler_obj, time_type, scene_data_dict):
|
|
|
"""
|
|
|
恢复定时任务
|
|
|
@param apscheduler_obj: apscheduler对象
|
|
|
@param time_type: 时间类型: date, cron
|
|
|
- @param time_task_list: 定时任务列表
|
|
|
+ @param scene_data_dict: 场景数据
|
|
|
@return: None or time_stamp
|
|
|
"""
|
|
|
+ time_task_list = scene_data_dict['task_list']
|
|
|
if time_type == 'cron':
|
|
|
for time_task in time_task_list:
|
|
|
task_id = time_task.get('task_id')
|
|
@@ -1412,7 +1409,7 @@ class SmartSceneView(View):
|
|
|
return None
|
|
|
else:
|
|
|
now_time = int(time.time())
|
|
|
- time_stamp = time_task_list[0]['time_dict']['time_stamp']
|
|
|
+ time_stamp = scene_data_dict['condition']['time_dict']['time_stamp']
|
|
|
if time_stamp > now_time:
|
|
|
for time_task in time_task_list:
|
|
|
task_id = time_task.get('task_id')
|
|
@@ -1434,7 +1431,8 @@ class SmartSceneView(View):
|
|
|
args=(device_type, event_type, serial_number))
|
|
|
# 更新task_id
|
|
|
time_task['task_id'] = task_id
|
|
|
- return time_stamp
|
|
|
+ # 更新场景数据的时间戳
|
|
|
+ scene_data_dict['condition']['time_dict']['time_stamp'] = time_stamp
|
|
|
|
|
|
|
|
|
#
|