Procházet zdrojové kódy

一次性场景执行后关闭场景

locky před 1 rokem
rodič
revize
7326baae7c
2 změnil soubory, kde provedl 13 přidání a 1 odebrání
  1. 11 1
      Controller/gatewayController.py
  2. 2 0
      Model/models.py

+ 11 - 1
Controller/gatewayController.py

@@ -306,7 +306,7 @@ class GatewayView(View):
             return response.json(444)
 
         smart_scene_qs = SmartScene.objects.filter(id=scene_id).values('scene_name', 'conditions', 'tasks', 'device_id',
-                                                                       'sub_device_id', 'user_id')
+                                                                       'sub_device_id', 'user_id', 'scene_data')
         if not smart_scene_qs.exists():
             return response.json(173)
 
@@ -316,6 +316,7 @@ class GatewayView(View):
         sub_device_id = smart_scene_qs[0]['sub_device_id']
         n_time = int(time.time())
         user_id = smart_scene_qs[0]['user_id']
+        scene_data = smart_scene_qs[0]['scene_data']
         if sub_device_id:
             gateway_sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('nickname')
             nickname = gateway_sub_device_qs[0]['nickname'] if gateway_sub_device_qs.exists() else ''
@@ -335,6 +336,15 @@ class GatewayView(View):
 
         try:
             SceneLog.objects.create(**log_dict)
+            # 如果是一次性场景,关闭场景
+            if scene_data:
+                scene_data_dict = eval(scene_data)
+                condition = scene_data_dict.get('condition')
+                if condition:
+                    time_type = condition.get('time')
+                    if time_type == 'date':
+                        smart_scene_qs.update(is_enable=False)
+
             # 推送日志
             gateway_push_qs = GatewayPush.objects.filter(user_id=user_id, logout=False). \
                 values('user_id', 'app_bundle_id', 'app_type', 'push_type', 'token_val', 'm_code', 'lang', 'm_code',

+ 2 - 0
Model/models.py

@@ -2731,6 +2731,8 @@ class SmartScene(models.Model):
     effective_time_id = models.IntegerField(default=0, verbose_name=u'关联场景执行时间id')
     is_enable = models.BooleanField(default=True, verbose_name=u'是否开启')
     device_data = models.TextField(default='', verbose_name=u'设备场景数据')
+    tz = models.FloatField(default=0, verbose_name='时区')
+    scene_data = models.TextField(default='', verbose_name='场景数据')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
     updated_time = models.IntegerField(default=0, verbose_name='更新时间')