simo 2.0.28__py3-none-any.whl → 2.0.29__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
Binary file
simo/core/forms.py CHANGED
@@ -287,15 +287,11 @@ class ComponentAdminForm(forms.ModelForm):
287
287
 
288
288
  # fields that can be edited via SIMO.io app by instance owners.
289
289
  # Users who have is_owner enabled on their user role.
290
- basic_fields = ['name', 'icon', 'zone', 'category']
290
+ basic_fields = ['name', 'icon', 'zone', 'category', 'show_in_app']
291
291
 
292
292
  class Meta:
293
293
  model = Component
294
- fields = '__all__'
295
- exclude = (
296
- 'gateway', 'controller_uid', 'base_type', 'instance_methods',
297
- 'alive', 'value_type', 'value', 'arm_status', 'slaves',
298
- )
294
+ fields = 'name', 'icon', 'zone', 'category', 'show_in_app', 'notes'
299
295
  widgets = {
300
296
  'icon': autocomplete.ModelSelect2(
301
297
  url='autocomplete-icon', attrs={'data-html': True}
simo/core/serializers.py CHANGED
@@ -236,6 +236,7 @@ class ComponentSerializer(FormSerializer):
236
236
  app_widget = serializers.SerializerMethodField()
237
237
  slaves = serializers.SerializerMethodField()
238
238
  base_type = ObjectSerializerMethodField()
239
+ show_in_app = ObjectSerializerMethodField()
239
240
  controller_uid = ObjectSerializerMethodField()
240
241
  alive = ObjectSerializerMethodField()
241
242
  value = ObjectSerializerMethodField()
simo/core/tasks.py CHANGED
@@ -344,7 +344,8 @@ def low_battery_notifications():
344
344
  battery_level__isnull=False, battery_level__lt=20
345
345
  ):
346
346
  users = User.objects.filter(
347
- roles__is_owner=True, roles__instance=comp.zone.instance
347
+ roles__is_owner=True, roles__instance=comp.zone.instance,
348
+ instance_roles__is_active=True
348
349
  ).distinct()
349
350
  if users:
350
351
  notify_users(
simo/generic/forms.py CHANGED
@@ -29,7 +29,11 @@ ACTION_METHODS = (
29
29
  class ScriptConfigForm(BaseComponentForm):
30
30
  autostart = forms.BooleanField(
31
31
  initial=True, required=False,
32
- help_text="Wake up every 60 s if not running."
32
+ help_text="Start automatically on system boot."
33
+ )
34
+ keep_alive = forms.BooleanField(
35
+ initial=True, required=False,
36
+ help_text="Wake up every 10s if not running."
33
37
  )
34
38
  code = forms.CharField(widget=PythonCode)
35
39
  log = forms.CharField(
@@ -38,6 +42,7 @@ class ScriptConfigForm(BaseComponentForm):
38
42
 
39
43
  def __init__(self, *args, **kwargs):
40
44
  super().__init__(*args, **kwargs)
45
+ self.basic_fields.extend(['autostart', 'keep_alive'])
41
46
  if self.instance.pk:
42
47
  prefix = get_script_prefix()
43
48
  if prefix == '/':
simo/generic/gateways.py CHANGED
@@ -215,7 +215,7 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
215
215
  from simo.generic.controllers import Script
216
216
  for script in Component.objects.filter(
217
217
  controller_uid=Script.uid,
218
- config__autostart=True
218
+ config__keep_alive=True
219
219
  ).exclude(value='running'):
220
220
  self.start_script(script)
221
221
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simo
3
- Version: 2.0.28
3
+ Version: 2.0.29
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
@@ -38,7 +38,7 @@ simo/core/controllers.py,sha256=iJ7cIGv2WhSGjyxCFfK49pZXuEMfSe75bMEAkRN8G4g,2710
38
38
  simo/core/dynamic_settings.py,sha256=U2WNL96JzVXdZh0EqMPWrxqO6BaRR2Eo5KTDqz7MC4o,1943
39
39
  simo/core/events.py,sha256=LvtonJGNyCb6HLozs4EG0WZItnDwNdtnGQ4vTcnKvUs,4438
40
40
  simo/core/filters.py,sha256=ghtOZcrwNAkIyF5_G9Sn73NkiI71mXv0NhwCk4IyMIM,411
41
- simo/core/forms.py,sha256=fLPVOZOuHZigeXhuFaliY03-egMKiad1QW91LPpSMA8,23786
41
+ simo/core/forms.py,sha256=2IvhlJ_mSePd3cAQULfaYMQ0JRBHZCDKZBUpcQn1EL8,23678
42
42
  simo/core/gateways.py,sha256=s_c2W0v2_te89i6LS4Nj7F2wn9UwjZXPT7pfy6SToVo,3714
43
43
  simo/core/loggers.py,sha256=EBdq23gTQScVfQVH-xeP90-wII2DQFDjoROAW6ggUP4,1645
44
44
  simo/core/managers.py,sha256=WoQ4OX3akIvoroSYji-nLVqXBSJzCiC1u_IiWkKbKmA,2413
@@ -46,11 +46,11 @@ simo/core/middleware.py,sha256=pO52hQOJV_JRmNyUe7zfufSnJFlRITOWX6jwkoPWJhk,2052
46
46
  simo/core/models.py,sha256=PAVuRYldy4qw7KTsU3ClkEHY7UVvW7CPGGqM3frtvz4,19755
47
47
  simo/core/permissions.py,sha256=yqVXq6SNZccSKcOoGdb0oh-WHsyTTtI9ovJdJyhjv28,2707
48
48
  simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
49
- simo/core/serializers.py,sha256=vOrWlfSkmdyaG0VPM0fmRLd7OkkNNGyAkc6Q8Cwa_1Q,18179
49
+ simo/core/serializers.py,sha256=uc6LfrDNQ4rrbTFjXTe764wOKcgnu65j_tmDqy9wodw,18227
50
50
  simo/core/signal_receivers.py,sha256=EZ8NSYZxUgSaLS16YZdK7T__l8dl0joMRllOxx5PUt4,2809
51
51
  simo/core/socket_consumers.py,sha256=n7VE2Fvqt4iEAYLTRbTPOcI-7tszMAADu7gimBxB-Fg,9635
52
52
  simo/core/storage.py,sha256=YlxmdRs-zhShWtFKgpJ0qp2NDBuIkJGYC1OJzqkbttQ,572
53
- simo/core/tasks.py,sha256=PEGGsKBbkQOl3LhLfGR5orbYtCxzcv8peMLiVxgl3R0,12228
53
+ simo/core/tasks.py,sha256=ZbFRo4DecbB1kPG75d9tl6nt_QDQobJnq24zxMfFW2Y,12276
54
54
  simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
55
55
  simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
56
56
  simo/core/views.py,sha256=hlAKpAbCbqI3a-uL5tDp532T2oLFiF0MBzKUJ_SNzo0,5833
@@ -69,7 +69,7 @@ simo/core/__pycache__/controllers.cpython-38.pyc,sha256=40wJ3mu0CnzexxDzXyDIlSxa
69
69
  simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=ELu06Hub4DOidja71ybvD3ZM4HdXiyZjNJrZfnXZXNA,2476
70
70
  simo/core/__pycache__/events.cpython-38.pyc,sha256=A1Axx-qftd1r7st7wkO3DkvTdt9-RkcJe5KJhpzJVk8,5109
71
71
  simo/core/__pycache__/filters.cpython-38.pyc,sha256=VIMADCBiYhziIyRmxAyUDJluZvuZmiC4bNYWTRsGSao,721
72
- simo/core/__pycache__/forms.cpython-38.pyc,sha256=jHbvv2098I6-lWHLg6_G6sxTmXSzk670WophuMGcSzI,19987
72
+ simo/core/__pycache__/forms.cpython-38.pyc,sha256=_Fpn-nG_lwHaMaOHwPofkz9O56bw6UjV6xkhXVhtFqs,19956
73
73
  simo/core/__pycache__/gateways.cpython-38.pyc,sha256=XBiwMfBkjoQ2re6jvADJOwK0_0Aav-crzie9qtfqT9U,4599
74
74
  simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NMEdPAiHK0cFaIL7I8,1623
75
75
  simo/core/__pycache__/managers.cpython-38.pyc,sha256=5vstOMfm997CZBBkaSiaS7EojhLTWZlbeA_EQ8u-yfg,2554
@@ -77,11 +77,11 @@ simo/core/__pycache__/middleware.cpython-38.pyc,sha256=ESR5JPtITo9flczO0672sfzYU
77
77
  simo/core/__pycache__/models.cpython-38.pyc,sha256=Meg9pm3gCMVgE1a37nEsCtqONMNFeG9R4oPON4CQgcw,17231
78
78
  simo/core/__pycache__/permissions.cpython-38.pyc,sha256=flJOCh94U8mFhE0XWzUD0sGR6Xe1HlfG4hQtNSnAGZ4,2788
79
79
  simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
80
- simo/core/__pycache__/serializers.cpython-38.pyc,sha256=Pi9lddoS_DtMuA1iZ4mFHu_dG2mjouWxajM4udPQKqo,17185
80
+ simo/core/__pycache__/serializers.cpython-38.pyc,sha256=vaaIbfOd-n0pRX5QtHBy8Hmc87o5RH7LulUE6YOTJlg,17206
81
81
  simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=sgjH_wv-1U99auH5uHb3or0qettPeHAlsz8P7B03ajY,2430
82
82
  simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=NJUr7nRyHFvmAumxxWpsod5wzVVZM99rCEuJs1utHA4,8432
83
83
  simo/core/__pycache__/storage.cpython-38.pyc,sha256=BTkYH8QQyjqI0WOtJC8fHNtgu0YA1vjqZclXjC2vCVI,1116
84
- simo/core/__pycache__/tasks.cpython-38.pyc,sha256=8VyzcG4psw5cS2oTy8W7EVW_nP7fzhoMvxXczTe1rcw,9134
84
+ simo/core/__pycache__/tasks.cpython-38.pyc,sha256=7ai1mcn4C4jouM2TFsOAdusr9egDDvx5ZMUZwSIJUeM,9165
85
85
  simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
86
86
  simo/core/__pycache__/views.cpython-38.pyc,sha256=YrKRZPaV_JM4VGpdhVhsK-90UwUTOqp-V-Yj0SRGZgs,4212
87
87
  simo/core/__pycache__/widgets.cpython-38.pyc,sha256=sR0ZeHCHrhnNDBJuRrxp3zUsfBp0xrtF0xrK2TkQv1o,3520
@@ -10276,8 +10276,8 @@ simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10276
10276
  simo/generic/app_widgets.py,sha256=E_pnpA1hxMIhenRCrHoQ5cik06jm2BAHCkl_eo-OudU,1264
10277
10277
  simo/generic/base_types.py,sha256=djymox_boXTHX1BTTCLXrCH7ED-uAsV_idhaDOc3OLI,409
10278
10278
  simo/generic/controllers.py,sha256=WYuOUzDWvkYRaTvlbdGy_qmwp1o_ohqKDfV7OrOq2QU,52218
10279
- simo/generic/forms.py,sha256=uLZ25Fw1xGqyDBngWPve9EaHpyldFegY_TPBKV4Oby0,24051
10280
- simo/generic/gateways.py,sha256=b3tQ2bAkDVYXCF5iZi2yi-6nZAM8WmHE9ICwxMyR0to,17034
10279
+ simo/generic/forms.py,sha256=PcYe6emum8wEvnhUxXpEo2hXNZA6dk2YL2TYUN2YOxs,24249
10280
+ simo/generic/gateways.py,sha256=LYCOOO6TffOiLvHYvJcMt6t_lkunlKfUNjhYghEKI2Q,17035
10281
10281
  simo/generic/models.py,sha256=92TACMhJHadAg0TT9GnARO_R3_Sl6i-GGjhG_x7YdFI,7391
10282
10282
  simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
10283
10283
  simo/generic/socket_consumers.py,sha256=NfTQGYtVAc864IoogZRxf_0xpDPM0eMCWn0SlKA5P7Y,1751
@@ -10285,8 +10285,8 @@ simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFI
10285
10285
  simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=0IoKRG9n1tkNRRkrqAeOQwWBPd_33u98JBcVtMVVCio,2374
10286
10286
  simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=ptw6axyAqemZA35oa6vzr7EihzvbhW9w7Y-G6kfDedU,555
10287
10287
  simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=e0bvgyePgJbIs1omBq0TRPlVSKar2sK_JbUKqDRj7mY,33235
10288
- simo/generic/__pycache__/forms.cpython-38.pyc,sha256=U67jiwt6R8J547n7d84-_9mUxCXxKl-L0VFdYfo1aiM,17787
10289
- simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=a4lLIMPyxm9tNzIqorXHIPZFVTcXlPsM1ycJMghxcHA,12673
10288
+ simo/generic/__pycache__/forms.cpython-38.pyc,sha256=oUFqYD3Tlm9AE1HMMlfnyWCnhtMY5hrF2U6rBgzYpU4,17911
10289
+ simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=e9_y6PdY05SDZkBT2u1V9jQUowC0hjqsquzWK2YXBjI,12695
10290
10290
  simo/generic/__pycache__/models.cpython-38.pyc,sha256=PzlZsM1jxo3FVb7QDm3bny8UFwTsGrMQe4mj4tJ06eQ,5675
10291
10291
  simo/generic/__pycache__/routing.cpython-38.pyc,sha256=xtxTUTBTdivzFyA5Wh7k-hUj1WDO_FiRq6HYXdbr9Ks,382
10292
10292
  simo/generic/__pycache__/socket_consumers.cpython-38.pyc,sha256=piFHces0J9QuXu_CNBCQCYjoZEeoaxyVjLfJ9KaR8C8,1898
@@ -10456,8 +10456,8 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
10456
10456
  simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10457
10457
  simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10458
10458
  simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10459
- simo-2.0.28.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10460
- simo-2.0.28.dist-info/METADATA,sha256=_YtDqotbhb9Tmq6gjFTcocuHWtFdM-7pcy2H10cipLQ,1730
10461
- simo-2.0.28.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
10462
- simo-2.0.28.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10463
- simo-2.0.28.dist-info/RECORD,,
10459
+ simo-2.0.29.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10460
+ simo-2.0.29.dist-info/METADATA,sha256=-QXL9LMFmWhxr7ZZhTuZPEjsl3pr_dKvmNqpWXM9-ok,1730
10461
+ simo-2.0.29.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
10462
+ simo-2.0.29.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10463
+ simo-2.0.29.dist-info/RECORD,,
File without changes