simo 2.5.37__py3-none-any.whl → 2.5.39__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of simo might be problematic. Click here for more details.

Binary file
simo/core/serializers.py CHANGED
@@ -530,11 +530,11 @@ class ComponentSerializer(FormSerializer):
530
530
  role = user.get_role(instance)
531
531
  if not role:
532
532
  return True
533
- return not bool(
534
- role.component_permissions.filter(
535
- component=obj, write=True
536
- )
537
- )
533
+ for perm in role.component_permissions.all(): # prefetched
534
+ if perm.component.id == obj.id:
535
+ return not perm.write
536
+ return False
537
+
538
538
 
539
539
  def get_app_widget(self, obj):
540
540
  try:
simo/core/tasks.py CHANGED
@@ -460,7 +460,7 @@ def low_battery_notifications():
460
460
  )
461
461
  if iusers:
462
462
  notify_users(
463
- comp.zone.instance, 'warning',
463
+ 'warning',
464
464
  f"Low battery ({comp.battery_level}%) on {comp}",
465
465
  component=comp, instance_users=iusers
466
466
  )
@@ -169,6 +169,13 @@ class PresenceLighting(Script):
169
169
  sensor.on_change(self._on_sensor)
170
170
  self.sensors[id] = sensor
171
171
 
172
+ if self.component.config['off_value'] != 0:
173
+ for id in self.component.config['lights']:
174
+ light = Component.objects.filter(id=id).first()
175
+ if not light or not light.controller:
176
+ continue
177
+ light.on_change(self._on_light_change)
178
+
172
179
  for condition in self.component.config.get('conditions', []):
173
180
  comp = Component.objects.filter(
174
181
  id=condition.get('component', 0)
@@ -196,6 +203,11 @@ class PresenceLighting(Script):
196
203
  self._regulate()
197
204
 
198
205
 
206
+ def _on_light_change(self, light):
207
+ if self.is_on:
208
+ self.light_org_values[light.id] = light.value
209
+
210
+
199
211
  def _regulate(self, on_val_change=True):
200
212
  presence_values = [s.value for id, s in self.sensors.items()]
201
213
  if self.component.config.get('act_on', 0) == 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simo
3
- Version: 2.5.37
3
+ Version: 2.5.39
4
4
  Summary: Smart Home on Steroids!
5
5
  Author-email: Simanas Venčkauskas <simanas@simo.io>
6
6
  Project-URL: Homepage, https://simo.io
@@ -55,11 +55,11 @@ simo/core/middleware.py,sha256=eUFf6iP-Snx_0TE3MoXsSwqrd5IjlukqZk2GQGStRCo,3385
55
55
  simo/core/models.py,sha256=1eJRIxOYtzx7JOGSAyo75QBoTEaigxjsRXIFghDSz9k,22837
56
56
  simo/core/permissions.py,sha256=INQPrUAIM3WXCvd7e6cmYytKaak8fMEn7VooX-fIds0,3002
57
57
  simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
58
- simo/core/serializers.py,sha256=tY0pQWe_EtUHOOsYPqg89NH-0-Me76_mG1ppvxsMTHY,21816
58
+ simo/core/serializers.py,sha256=UIIKinmCICMbJZRkI6xInZau3VfkesRe_LX-GMrJYHg,21849
59
59
  simo/core/signal_receivers.py,sha256=2WfF3FI5ZmJM1S-oT_1w3TdnBUX6fjbI4Rpg-DKsuYA,8696
60
60
  simo/core/socket_consumers.py,sha256=trRZvBGTJ7xIbfdmVvn7zoiWp_qssSkMZykDrI5YQyE,9783
61
61
  simo/core/storage.py,sha256=_5igjaoWZAiExGWFEJMElxUw55DzJG1jqFty33xe8BE,342
62
- simo/core/tasks.py,sha256=MnyEFDzdIGpE0nvR8BOksSybcKYKj2j8QpyzmX4TXd8,16931
62
+ simo/core/tasks.py,sha256=ridh-22XWY3v9DCWrGYaXrOM0w4XOebkjkkZT9NtnP4,16911
63
63
  simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
64
64
  simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
65
65
  simo/core/views.py,sha256=yx9I0byeVUa-LAOnklpWIYwpNNOf5m9fyjKBvj4YCh4,2475
@@ -86,13 +86,13 @@ simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NME
86
86
  simo/core/__pycache__/managers.cpython-38.pyc,sha256=6RTIxyjOgpQGtAqcUyE2vFPS09w1V5Wmd_vOV7rHRRI,3370
87
87
  simo/core/__pycache__/middleware.cpython-38.pyc,sha256=g3d4L2PwxFyRKIPMP9Hkdjk1PL9NarQd4hSHS55I8n8,2649
88
88
  simo/core/__pycache__/models.cpython-38.pyc,sha256=m2KdO5zWXwHT3pIDyGW9SQgnesSAGPPcttOXoKCArzM,18610
89
- simo/core/__pycache__/permissions.cpython-38.pyc,sha256=bO13B8uGCv4AiWNBoU2Gxt3mNuQ3gCxb7eKFihwFb5o,2974
89
+ simo/core/__pycache__/permissions.cpython-38.pyc,sha256=LXfbPrLm81oquflywAdK-a53-g7N1tkUuiePIdvk0ek,2974
90
90
  simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
91
- simo/core/__pycache__/serializers.cpython-38.pyc,sha256=n5l1QLqke0RpQPKT1jjFacchQrVcIyyx9Ug-4K41BPE,19554
91
+ simo/core/__pycache__/serializers.cpython-38.pyc,sha256=yBOmGPbCvfwk6j0dWN3sBuuf75ZG2FpSNWi84xLoX6Q,19577
92
92
  simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=Od1ejof2nHAFzTAG5vGGVjMA8WUJNVJ9o_KWGqRSR34,6669
93
93
  simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=KqbO1cOewodVPcy0-htVefyUjCuELKV0o7fOfYqfgPc,8490
94
94
  simo/core/__pycache__/storage.cpython-38.pyc,sha256=9R1Xu0FJDflfRXUPsqEgt0SpwiP7FGk7HaR8s8XRyI8,721
95
- simo/core/__pycache__/tasks.cpython-38.pyc,sha256=2LjlK_AA7b8_X-bnmAtdtxBqblyOCS8iytjwx_q8dt4,11228
95
+ simo/core/__pycache__/tasks.cpython-38.pyc,sha256=A2qCdGJtaM1vpiM7LmzAMsuPkt5EG4vLzW2s0-WnklE,11220
96
96
  simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
97
97
  simo/core/__pycache__/views.cpython-38.pyc,sha256=IRjbX3MwKkAb10sMIJ3esKZH8W-tHwnuzm-mLIT_NWc,2584
98
98
  simo/core/__pycache__/widgets.cpython-38.pyc,sha256=sR0ZeHCHrhnNDBJuRrxp3zUsfBp0xrtF0xrK2TkQv1o,3520
@@ -10346,7 +10346,7 @@ simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LS
10346
10346
  simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10347
10347
  simo/generic/app_widgets.py,sha256=TPRLj4hri2hBuY6mrdwBiv-01z2hDxZmsup-GDD9LrM,953
10348
10348
  simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
10349
- simo/generic/controllers.py,sha256=i-xKQ5PrNKwCuO0dFaHHUaD5rF9lDnq18ziVSNBENao,50134
10349
+ simo/generic/controllers.py,sha256=QwmVXC3phIDYXAP98MtKbzHuamWPc1kVg9FQfjkP22g,50566
10350
10350
  simo/generic/forms.py,sha256=tCbIZtbruBHjZRzulGXJQOjmxaGJ2uoKqjT1scScdDQ,29004
10351
10351
  simo/generic/gateways.py,sha256=0gDjWSCAt6MABR6k8xV7N1zXutDLCileGtAm6pSl4Q4,16165
10352
10352
  simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
@@ -10355,7 +10355,7 @@ simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-
10355
10355
  simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
10356
10356
  simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=YZ5db6-FPynBi6ooPW5crK9lZ6ymRh2DlGN6FwxfX4M,1820
10357
10357
  simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
10358
- simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=-Y3fV0gbkye9WgWpdNY7qG9VvMWpFUT7Spl1eukztgQ,33352
10358
+ simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=f0nzxm3U7pgmn7TbUOM3KfIWk50II2XeGbkCyFDix_w,33658
10359
10359
  simo/generic/__pycache__/forms.cpython-38.pyc,sha256=Dd-hgbRNdIFzUDjSZ4yQp7wwR-ILBYQFI8MCob_ZYwQ,21232
10360
10360
  simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=uubZtp-UgEmKU4vG9ophnCZFEDqmKkeY1yyWUXzdmdY,12015
10361
10361
  simo/generic/__pycache__/models.cpython-38.pyc,sha256=MZpum7syAFxuulf47K7gtUlJJ7xRD-IBUBAwUM1ZRnw,5825
@@ -10579,9 +10579,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
10579
10579
  simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10580
10580
  simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10581
10581
  simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10582
- simo-2.5.37.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10583
- simo-2.5.37.dist-info/METADATA,sha256=YdREwzpaq7cvPlA4bpxDyxrW5sgu3rRknR20DQlau2A,1953
10584
- simo-2.5.37.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10585
- simo-2.5.37.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10586
- simo-2.5.37.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10587
- simo-2.5.37.dist-info/RECORD,,
10582
+ simo-2.5.39.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10583
+ simo-2.5.39.dist-info/METADATA,sha256=eJDjovPyXN783fHsdMkLjCh0MweABo21kJdAHUSvhE4,1953
10584
+ simo-2.5.39.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10585
+ simo-2.5.39.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10586
+ simo-2.5.39.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10587
+ simo-2.5.39.dist-info/RECORD,,
File without changes