Bladeren bron

使用filter查询EffectiveTime

locky 2 jaren geleden
bovenliggende
commit
802adfe3a3
1 gewijzigde bestanden met toevoegingen van 17 en 12 verwijderingen
  1. 17 12
      Controller/SensorGateway/SmartSceneController.py

+ 17 - 12
Controller/SensorGateway/SmartSceneController.py

@@ -1059,20 +1059,25 @@ class SmartSceneView(View):
             repeat = int(request_dict.get('repeat'))
             for smart_scene in smart_scene_qs:
                 effective_time_id = smart_scene['effective_time_id']
-                effective_time_md = EffectiveTime.objects.get(id=effective_time_id)
-                # 每天重复
-                if repeat == 127:
-                    # 判断时间是否在已设置过的时间范围之内
-                    if effective_time_md.start_time <= start_time <= effective_time_md.end_time or \
-                            effective_time_md.start_time <= end_time <= effective_time_md.end_time:
-                        return True
-                else:
-                    # 有相同的重复天
-                    if repeat & effective_time_md.repeat != 0:
+                effective_time_qs = EffectiveTime.objects.filter(id=effective_time_id).\
+                    values('start_time', 'end_time', 'repeat')
+                if effective_time_qs.exists():
+                    old_start_time = effective_time_qs[0]['start_time']
+                    old_end_time = effective_time_qs[0]['end_time']
+                    old_repeat = effective_time_qs[0]['repeat']
+                    # 每天重复
+                    if repeat == 127:
                         # 判断时间是否在已设置过的时间范围之内
-                        if effective_time_md.start_time <= start_time <= effective_time_md.end_time or \
-                                effective_time_md.start_time <= end_time <= effective_time_md.end_time:
+                        if old_start_time <= start_time <= old_end_time or \
+                                old_start_time <= end_time <= old_end_time:
                             return True
+                    else:
+                        # 有相同的重复天
+                        if repeat & old_repeat != 0:
+                            # 判断时间是否在已设置过的时间范围之内
+                            if old_start_time <= start_time <= old_end_time or \
+                                    old_start_time <= end_time <= old_end_time:
+                                return True
             return False
 
 #