simo 2.7.9__py3-none-any.whl → 2.7.10__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.

simo/core/forms.py CHANGED
@@ -310,6 +310,7 @@ class ComponentAdminForm(forms.ModelForm):
310
310
 
311
311
  base_fields.append('zone')
312
312
  base_fields.append('category')
313
+ base_fields.append('show_in_app')
313
314
 
314
315
  for field_name in cls.declared_fields:
315
316
  if field_name not in main_fields:
@@ -319,7 +320,9 @@ class ComponentAdminForm(forms.ModelForm):
319
320
  base_fields.append('notes')
320
321
 
321
322
  fieldsets = [
322
- (_("Base settings"), {'fields': base_fields + ['value_units', 'value_translation']}),
323
+ (_("Base settings"), {
324
+ 'fields': base_fields + ['value_units', 'value_translation']}
325
+ ),
323
326
  ]
324
327
  if cls.has_alarm:
325
328
  fieldsets.append(
simo/core/models.py CHANGED
@@ -586,21 +586,6 @@ def is_in_alarm(self):
586
586
  return self.is_in_alarm()
587
587
  return bool(self.value)
588
588
 
589
- def can_read(self, user):
590
- if user.is_master:
591
- return True
592
- from .middleware import get_current_instance
593
- instance = get_current_instance()
594
- if instance:
595
- role = user.get_role(instance)
596
- if not role:
597
- return False
598
- for perm in role.component_permissions.all():
599
- if perm.component.id == self.id:
600
- return any([perm.write, perm.read])
601
- return False
602
- return False
603
-
604
589
  def get_controller_methods(self):
605
590
  c_methods = []
606
591
  for m in inspect.getmembers(
simo/fleet/forms.py CHANGED
@@ -306,12 +306,6 @@ class ColonelButtonConfigForm(ColonelComponentForm):
306
306
  ('up', "UP (On +5V delivery)")
307
307
  )
308
308
  )
309
- btn_type = forms.ChoiceField(
310
- label="Type", initial='momentary',
311
- choices=(
312
- ('momentary', "Momentary"), ('toggle', "Toggle")
313
- )
314
- )
315
309
 
316
310
  def __init__(self, *args, **kwargs):
317
311
  super().__init__(*args, **kwargs)
@@ -33,11 +33,11 @@ class CamStreamConsumer(AsyncWebsocketConsumer):
33
33
  except:
34
34
  return self.close()
35
35
 
36
- can_read = await sync_to_async(
37
- self.component.can_read, thread_sensitive=True
38
- )(self.scope['user'])
39
- if not can_read:
40
- return self.close()
36
+ # can_read = await sync_to_async(
37
+ # self.component.can_read, thread_sensitive=True
38
+ # )(self.scope['user'])
39
+ # if not can_read:
40
+ # return self.close()
41
41
 
42
42
  # self.video = cv2.VideoCapture(self.component.config['rtsp_address'])
43
43
  # asyncio.create_task(self.send_cam())
@@ -56,6 +56,7 @@ class BasePlayer(Switch):
56
56
  self.send({'set_volume': val})
57
57
 
58
58
  def get_volume(self):
59
+ '''override of possible with something more reliable'''
59
60
  return self.component.meta['volume']
60
61
 
61
62
  def set_shuffle_play(self, val):
@@ -33,7 +33,7 @@ def notify_users(severity, title, body=None, component=None, instance_users=None
33
33
  severity=severity, body=body,
34
34
  component=component
35
35
  )
36
- if not instance_users:
36
+ if instance_users is None:
37
37
  instance_users = instance.instance_users.filter(
38
38
  is_active=True
39
39
  ).select_related('user')
@@ -43,7 +43,7 @@ def notify_users(severity, title, body=None, component=None, instance_users=None
43
43
  continue
44
44
  if iuser.instance.id != instance.id:
45
45
  continue
46
- if component and not component.can_read(iuser.user):
46
+ if not iuser.can_read(component):
47
47
  continue
48
48
  UserNotification.objects.create(
49
49
  user=iuser.user, notification=notification,
simo/users/models.py CHANGED
@@ -4,6 +4,7 @@ import subprocess
4
4
  from django.urls import reverse
5
5
  from django.utils.translation import gettext_lazy as _
6
6
  from django.db import models
7
+ from django.db.models import Q
7
8
  from django.db import transaction
8
9
  from django.db.models.signals import post_save, post_delete, m2m_changed
9
10
  from django.dispatch import receiver
@@ -129,6 +130,27 @@ class InstanceUser(DirtyFieldsMixin, models.Model, OnChangeMixin):
129
130
  def get_instance(self):
130
131
  return self.instance
131
132
 
133
+ def can_read(self, component):
134
+ if self.user.is_master:
135
+ return True
136
+ if self.role.is_superuser:
137
+ return True
138
+ return bool(
139
+ self.role.component_permissions.filter(component=component).filter(
140
+ Q(read=True) | Q(write=True)
141
+ ).count())
142
+
143
+ def can_write(self, component):
144
+ if self.user.is_master:
145
+ return True
146
+ if self.role.is_superuser:
147
+ return True
148
+ return bool(
149
+ self.role.component_permissions.filter(
150
+ component=component, write=True
151
+ ).count()
152
+ )
153
+
132
154
 
133
155
  @receiver(post_save, sender=InstanceUser)
134
156
  def post_instance_user_save(sender, instance, created, **kwargs):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simo
3
- Version: 2.7.9
3
+ Version: 2.7.10
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
@@ -75,12 +75,12 @@ simo/core/dynamic_settings.py,sha256=bUs58XEZOCIEhg1TigR3LmYggli13KMryBZ9pC7ugAQ
75
75
  simo/core/events.py,sha256=1_KIk5pJqdLPRQlCQ9xSyALst2Cn0b2lAEAJ3QjwIjE,4801
76
76
  simo/core/filters.py,sha256=6wbn8C2WvKTTjtfMwwLBp2Fib1V0-DMpS4iqJd6jJQo,2540
77
77
  simo/core/form_fields.py,sha256=m3dR31M31q3DQM-7P4jBOXLofm-PiC0ykIfUrpWhOjg,5007
78
- simo/core/forms.py,sha256=KZKmc5dWGvEicTEokQdijM5SgA-ZjrdenJPVwcb5R3s,21675
78
+ simo/core/forms.py,sha256=UGGsBU8qPFWf_NMGg6IvImloojhoU0sTX2jrJ9mJPjs,21748
79
79
  simo/core/gateways.py,sha256=Y2BME6zSyeUq_e-hzEUF6gErCUCP6nFxedkLZKiLVOo,4141
80
80
  simo/core/loggers.py,sha256=EBdq23gTQScVfQVH-xeP90-wII2DQFDjoROAW6ggUP4,1645
81
81
  simo/core/managers.py,sha256=n-b3I4uXzfHKTeB1VMjSaMsDUxp8FegFJwnbV1IsWQ4,3019
82
82
  simo/core/middleware.py,sha256=eUFf6iP-Snx_0TE3MoXsSwqrd5IjlukqZk2GQGStRCo,3385
83
- simo/core/models.py,sha256=cJrY7mBnKD-AsM62WzCnrNw21wmGu6bGuxpvBPjQg60,23220
83
+ simo/core/models.py,sha256=-zhQEvQRqacTjdqL4Gv7shlP1Uo09Rj3vHKqNONlxWU,22716
84
84
  simo/core/permissions.py,sha256=2YNRot2qoHjHKWPGOpO4PBseecctPbTlUQpepnFkCRs,3027
85
85
  simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
86
86
  simo/core/serializers.py,sha256=pa4F5fSvIxgGJWBEcXdzpmemRWl6QbUoUDMqQ_RdA2o,22514
@@ -10259,7 +10259,7 @@ simo/fleet/auto_urls.py,sha256=vrfrooPyY4pDuQjya-eLxCgZldfhwbEeEiXa7diO_CY,847
10259
10259
  simo/fleet/base_types.py,sha256=wL9RVkHr0gA7HI1wZq0pruGEIgvQqpfnCL4cC3ywsvw,102
10260
10260
  simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
10261
10261
  simo/fleet/controllers.py,sha256=PezfOT-1N_UONSsbyTXEIyGO6Po57KdEBRv4yzk_sw0,28605
10262
- simo/fleet/forms.py,sha256=CHSmIz9bsdyukyTQnU5t554ggriWJjjwoBQe68l4FKI,67022
10262
+ simo/fleet/forms.py,sha256=VcqATlX-omZruUgUC2fJpeLNUGSR-szmf36_M3aa5dg,66850
10263
10263
  simo/fleet/gateways.py,sha256=C7dyapWDlJ5erYPNLkSoH50I8kj0lIXicSno0_CrdXc,5783
10264
10264
  simo/fleet/managers.py,sha256=ZNeHFSkF5kzsl9E1DCBevOW6kXJlD6kw0LU4B-JMOG8,828
10265
10265
  simo/fleet/models.py,sha256=zPplx_v64nfKBmb-nCb74aCVtEeY3m3SjEy-VhbnydU,17511
@@ -10385,7 +10385,7 @@ simo/generic/forms.py,sha256=ikSwn6hg6m4XoaWyZNydw9e5aoFRHxbeM8tWsyYlen4,22993
10385
10385
  simo/generic/gateways.py,sha256=SBQPlcU2oNCWzRQ1H1XWQ11O2E3zWDNImXlWNDzKg-Y,15865
10386
10386
  simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
10387
10387
  simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
10388
- simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-qaQ,1757
10388
+ simo/generic/socket_consumers.py,sha256=pyiqzfGxSKBNqfrfEJ_kCU0UbSC28XnvDn6QjKkbqyY,1767
10389
10389
  simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
10390
10390
  simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=D9b13pbMlirgHmjDnQhfLIDGSVINoSouHb4SWOeCRrs,1642
10391
10391
  simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
@@ -10431,7 +10431,7 @@ simo/multimedia/admin.py,sha256=GgXiKTLfi3omjBurU-bKgneJRK-tAeiR8o2jo3zD7zs,1002
10431
10431
  simo/multimedia/api.py,sha256=mZ5BTggWdc_kL8P70JGC3rTCiZKPnxWYoyNcAQkFnX4,285
10432
10432
  simo/multimedia/app_widgets.py,sha256=g_IPx5bNmIS6JbaXXDCzYZYV2KVKAiYvWjH4oI30lWM,331
10433
10433
  simo/multimedia/base_types.py,sha256=dAP7_uh_b3A03yXBJZyQdRFucKIro4_RkIZ5yOaWXVE,151
10434
- simo/multimedia/controllers.py,sha256=U8AuSW-jXYBwFm9960L9bYDlgmHswP7HKxcNd1Mt5NI,3304
10434
+ simo/multimedia/controllers.py,sha256=A_kSKOVRJIiGvEl4CzpqjcWt4v-JsDQNQJ8ylrgplCc,3368
10435
10435
  simo/multimedia/forms.py,sha256=oMCVUXRNiESrY3w_uBLRRgjMjx8BrmNeVglzorA9QtY,239
10436
10436
  simo/multimedia/models.py,sha256=5aWGLWDdCkekGAOGZIdanvX1l6ULnhgJN4JAvDZT4nQ,734
10437
10437
  simo/multimedia/requirements.txt,sha256=QeIhjf1RfNGCYn_WZm3VuinPI2wK31WEJPbCxRWxssY,28
@@ -10461,7 +10461,7 @@ simo/notifications/admin.py,sha256=WQbN_bd2KRxVjbOajeworNrV9QlDNSadQT58La0Nn2M,1
10461
10461
  simo/notifications/api.py,sha256=QrfFn5kBU0vlqi8X368w1-0iTmDGu_hmMxLW2R0OTTg,1765
10462
10462
  simo/notifications/models.py,sha256=QGDLGAi5gk8OTcvd7ho5WNdctDymWGmGF1ZqN4-G_ZA,2443
10463
10463
  simo/notifications/serializers.py,sha256=altDEAPWwOhxRcEzE9-34jL8EFpyf3vPoEdAPoVLfGc,523
10464
- simo/notifications/utils.py,sha256=RnvwKFGZ6e34ishUWHfZq4m3H6XFxFbRF4NQCi2LT-E,2049
10464
+ simo/notifications/utils.py,sha256=k-dtvgPDuNB5T_PDPBA3NhQN_xZoIgRUGHQkBy1EGMg,2034
10465
10465
  simo/notifications/__pycache__/__init__.cpython-38.pyc,sha256=YvucUfu98XFvEEg1LYFMlOZJpo_jSGxTVrM-ylAFLOg,167
10466
10466
  simo/notifications/__pycache__/admin.cpython-38.pyc,sha256=MScNrtVM1wavefsPfxy0A7LVyXKcbvEkLH9GJkgNOl8,1945
10467
10467
  simo/notifications/__pycache__/api.cpython-38.pyc,sha256=eQmCHwTnr4zQ3ZY_SKZVCryiSEnzmyIjHQM13pZ5LT0,2071
@@ -10485,7 +10485,7 @@ simo/users/auto_urls.py,sha256=RSUW3ai5LbMTknS8M7M5aOnG_YlFOVQrnNVNH-fkwlg,357
10485
10485
  simo/users/dynamic_settings.py,sha256=sEIsi4yJw3kH46Jq_aOkSuK7QTfQACGUE-lkyBogCaM,570
10486
10486
  simo/users/managers.py,sha256=OHgEP85MBtdkdYxdstBd8RavTBT8F_2WyDxUJ9aCqqM,246
10487
10487
  simo/users/middleware.py,sha256=GMCrnWSc_2qCleyQIkfQGdL-pU-UTEcSg1wPvIKZ9uk,1210
10488
- simo/users/models.py,sha256=2c9unF8xd9kjwzwQEUEsxw79NrO1_YSJZl6h4wpNsI8,19915
10488
+ simo/users/models.py,sha256=qTlhML4zRfL_Gcomblc09GU1xWDa4DOwbFaxCgd_rsE,20563
10489
10489
  simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
10490
10490
  simo/users/serializers.py,sha256=zzw1KONTnaTNBaU0r4rNVxJ827KzD6Z5LuQt27ZsQ98,2516
10491
10491
  simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
@@ -10608,9 +10608,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
10608
10608
  simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10609
10609
  simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10610
10610
  simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10611
- simo-2.7.9.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10612
- simo-2.7.9.dist-info/METADATA,sha256=jHAhp_0GQNyZhG5GjyR2Y60aZaxf0qFH5aFlP-qatmo,1952
10613
- simo-2.7.9.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10614
- simo-2.7.9.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10615
- simo-2.7.9.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10616
- simo-2.7.9.dist-info/RECORD,,
10611
+ simo-2.7.10.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10612
+ simo-2.7.10.dist-info/METADATA,sha256=FMpBbEAAJ0ZOZX4tmR9O9f-8ytqI4l4BHTCYUWAELbA,1953
10613
+ simo-2.7.10.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10614
+ simo-2.7.10.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10615
+ simo-2.7.10.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10616
+ simo-2.7.10.dist-info/RECORD,,
File without changes