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

@@ -33,6 +33,7 @@ class Script(ControllerBase, TimerMixin):
33
33
  admin_widget_template = 'admin/controller_widgets/script.html'
34
34
  default_config = {'autostart': True, 'autorestart': True}
35
35
  default_value = 'stopped'
36
+ masters_only = True
36
37
 
37
38
  def _validate_val(self, value, occasion=None):
38
39
  if occasion == BEFORE_SEND:
Binary file
simo/core/api.py CHANGED
@@ -722,11 +722,6 @@ class ControllerTypes(InstanceMixin, viewsets.GenericViewSet):
722
722
  basename = 'controller-types'
723
723
  queryset = []
724
724
 
725
- def get_permissions(self):
726
- permissions = super().get_permissions()
727
- permissions.append(IsInstanceSuperuser())
728
- return permissions
729
-
730
725
  def list(self, request, *args, **kwargs):
731
726
  from .utils.type_constants import get_controller_types_map
732
727
  data = {}
@@ -752,11 +747,6 @@ class GWControllerTypes(InstanceMixin, viewsets.GenericViewSet):
752
747
  basename = 'gw-controller-types'
753
748
  queryset = []
754
749
 
755
- def get_permissions(self):
756
- permissions = super().get_permissions()
757
- permissions.append(IsInstanceSuperuser())
758
- return permissions
759
-
760
750
  def list(self, request, *args, **kwargs):
761
751
  from .utils.type_constants import get_controller_types_map
762
752
  data = {}
simo/core/api_meta.py CHANGED
@@ -119,7 +119,8 @@ class SIMOAPIMetadata(SimpleMetadata):
119
119
  if form_field and hasattr(form_field, 'zoom'):
120
120
  field_info['zoom'] = form_field.zoom
121
121
 
122
- if not field_info.get('read_only') and hasattr(field, 'choices'):# and not hasattr(form_field, 'forward'):
122
+ if not field_info.get('read_only') and hasattr(field, 'choices')\
123
+ and not hasattr(form_field, 'forward'):
123
124
  field_info['choices'] = [
124
125
  {
125
126
  'value': choice_value,
@@ -217,8 +217,6 @@ class ComponentController(SIMOWebsocketConsumer):
217
217
  if not self.scope['user'].is_active:
218
218
  return self.close()
219
219
 
220
- introduce_instance(self.component.zone.instance)
221
-
222
220
  self._mqtt_client = mqtt.Client()
223
221
  self._mqtt_client.username_pw_set('root', settings.SECRET_KEY)
224
222
  self._mqtt_client.on_connect = self._on_mqtt_connect
@@ -236,7 +234,6 @@ class ComponentController(SIMOWebsocketConsumer):
236
234
  payload = json.loads(msg.payload)
237
235
  component = get_event_obj(payload, Component)
238
236
  if component == self.component:
239
- introduce_instance(self.component.zone.instance)
240
237
  # print("Object changed [%s], %s" % (str(component), payload))
241
238
  self.component = component
242
239
  if self.send_value:
@@ -253,7 +250,6 @@ class ComponentController(SIMOWebsocketConsumer):
253
250
 
254
251
  def receive(self, text_data=None, bytes_data=None, **kwargs):
255
252
  introduce(self.scope['user'])
256
- introduce_instance(self.component.zone.instance)
257
253
  json_data = json.loads(text_data)
258
254
  self.send_value = json_data.pop('send_value', False)
259
255
  for method, param in json_data.items():
simo/core/tasks.py CHANGED
@@ -436,7 +436,7 @@ def restart_postgresql():
436
436
  @celery_app.task
437
437
  def low_battery_notifications():
438
438
  from simo.notifications.utils import notify_users
439
- from simo.generic.scripting.helpers import be_or_not_to_be
439
+ from simo.automation.helpers import be_or_not_to_be
440
440
  for instance in Instance.objects.filter(is_active=True):
441
441
  timezone.activate(instance.timezone)
442
442
  hour = timezone.localtime().hour
@@ -13,7 +13,7 @@ import paho.mqtt.client as mqtt
13
13
  from channels.generic.websocket import AsyncWebsocketConsumer
14
14
  from asgiref.sync import sync_to_async
15
15
  from simo.core.utils.model_helpers import get_log_file_path
16
- from simo.core.middleware import introduce_instance, drop_current_instance
16
+ from simo.core.middleware import drop_current_instance
17
17
  from simo.core.utils.logs import capture_socket_errors
18
18
  from simo.core.events import GatewayObjectCommand, get_event_obj
19
19
  from simo.core.models import Gateway, Instance, Component
@@ -1163,7 +1163,7 @@ class MainState(StateSelect):
1163
1163
 
1164
1164
  def owner_phones_on_sleep(self):
1165
1165
  sleeping_phones_hour = self.component.config.get('sleeping_phones_hour')
1166
- if sleeping_phones_hour is not None:
1166
+ if sleeping_phones_hour is None:
1167
1167
  return False
1168
1168
 
1169
1169
  if not self.is_sleep_time():
simo/generic/forms.py CHANGED
@@ -29,7 +29,8 @@ ACTION_METHODS = (
29
29
  class ControlForm(forms.Form):
30
30
  button = Select2ModelChoiceField(
31
31
  queryset=Component.objects.filter(base_type='button'),
32
- url='autocomplete-component'
32
+ url='autocomplete-component',
33
+ forward=(forward.Const(['button',], 'base_type'),)
33
34
  )
34
35
  prefix = 'controls'
35
36
 
simo/generic/gateways.py CHANGED
@@ -157,6 +157,7 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
157
157
  self.last_sensor_actions = {}
158
158
  self.sensors_on_watch = {}
159
159
  self.sleep_is_on = {}
160
+ self.last_set_state = None
160
161
 
161
162
 
162
163
 
@@ -176,7 +177,6 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
176
177
  for alarm_clock in Component.objects.filter(
177
178
  controller_uid=AlarmClock.uid
178
179
  ):
179
- introduce_instance(alarm_clock.zone.instance)
180
180
  tz = pytz.timezone(alarm_clock.zone.instance.timezone)
181
181
  timezone.activate(tz)
182
182
  alarm_clock.tick()
@@ -185,7 +185,6 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
185
185
  drop_current_instance()
186
186
  from .controllers import Watering
187
187
  for watering in Component.objects.filter(controller_uid=Watering.uid):
188
- introduce_instance(watering.zone.instance)
189
188
  tz = pytz.timezone(watering.zone.instance.timezone)
190
189
  timezone.activate(tz)
191
190
  if watering.value['status'] == 'running_program':
@@ -237,7 +236,6 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
237
236
  component = get_event_obj(payload, Component)
238
237
  if not component:
239
238
  return
240
- introduce_instance(component.zone.instance)
241
239
  try:
242
240
  if component.controller_uid == AlarmGroup.uid:
243
241
  self.control_alarm_group(component, payload.get('set_val'))
@@ -325,13 +323,32 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
325
323
  print(traceback.format_exc(), file=sys.stderr)
326
324
 
327
325
 
326
+ def set_get_day_evening_night_morning(self, state):
327
+ if state.value not in ('day', 'night', 'evening', 'morning'):
328
+ return
329
+ new_state = state.get_day_evening_night_morning()
330
+ if new_state == state.value:
331
+ self.last_set_state = state.value
332
+ return
333
+ if self.last_set_state:
334
+ # check if user maybe changed the state manually.
335
+ # If that's the case, we should not intervene
336
+ if new_state == 'day' and self.last_set_state not in ('night', 'morning'):
337
+ return
338
+ if new_state == 'evening' and self.last_set_state != 'day':
339
+ return
340
+ if new_state == 'night' and self.last_set_state != 'evening':
341
+ return
342
+ if new_state == 'morning' and self.last_set_state != 'night':
343
+ return
344
+
345
+ print(f"New main state of {state.zone.instance} - {new_state}")
346
+ state.send(new_state)
347
+
348
+
328
349
  def watch_main_state(self, state):
329
350
  i_id = state.zone.instance.id
330
- if state.value in ('day', 'night', 'evening', 'morning'):
331
- new_state = state.get_day_evening_night_morning()
332
- if new_state != state.value:
333
- print(f"New main state of {state.zone.instance} - {new_state}")
334
- state.send(new_state)
351
+ self.set_get_day_evening_night_morning(state)
335
352
 
336
353
  if state.config.get('away_on_no_action'):
337
354
  if i_id not in self.last_sensor_actions:
@@ -66,9 +66,9 @@ class BasePlayer(Switch):
66
66
 
67
67
  def toggle(self):
68
68
  if self.component.value == 'playing':
69
- self.turn_off()
69
+ self.pause()
70
70
  else:
71
- self.turn_on()
71
+ self.play()
72
72
 
73
73
 
74
74
  class BaseAudioPlayer(BasePlayer):
simo/users/tasks.py CHANGED
@@ -9,7 +9,6 @@ def clear_device_report_logs():
9
9
  from simo.core.models import Instance
10
10
  from .models import UserDeviceReportLog
11
11
  for instance in Instance.objects.all():
12
- introduce_instance(instance)
13
12
  # keeping at least 1 hour of logs so that we could evaluate
14
13
  # user's current location using Kalman filter
15
14
  UserDeviceReportLog.objects.filter(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simo
3
- Version: 2.7.5
3
+ Version: 2.7.7
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
@@ -13,7 +13,7 @@ simo/__pycache__/urls.cpython-38.pyc,sha256=u0x6EqT8S1YfDOSPgbI8Kf-RDlveY9OV-EDX
13
13
  simo/__pycache__/wsgi.cpython-38.pyc,sha256=TpRxO7VM_ql31hbKphVdanydC5RI1nHB4l0QA2pdWxo,322
14
14
  simo/automation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  simo/automation/app_widgets.py,sha256=gaqImMZjuMHm7nIb9a4D-Y3qipz_WhSPAHXcwGx4Uzs,199
16
- simo/automation/controllers.py,sha256=kST668ljPAxp4HSWgPJuBDeTDKeQTr83fZxkZmLVRLg,11468
16
+ simo/automation/controllers.py,sha256=Ow8xG9hkdyMRZbrNPX5uZloYM9jZqa9mgCh4k6FeoJw,11492
17
17
  simo/automation/forms.py,sha256=UWnkxw8pILPK0smRPTo4SLgsZl78zOySx7JIc30Bgtk,10228
18
18
  simo/automation/gateways.py,sha256=nWiWaDcNFpOumtTEE1xbhuYLt4Qvs8K0-zVEupdRPRU,14563
19
19
  simo/automation/helpers.py,sha256=iP-fxxB8HsFQy3k2CjFubu86aMqvWgmh-p24DiyOrek,4330
@@ -22,7 +22,7 @@ simo/automation/serializers.py,sha256=PjyFrjdPK1mBsgbNhyqMi9SWzcymqTa742ipy0LhAN
22
22
  simo/automation/state.py,sha256=aZZvNBae7unnux_zGHCIWCV2z47hVJc-DIL72Hqfkeo,600
23
23
  simo/automation/__pycache__/__init__.cpython-38.pyc,sha256=YmP0xAD-mxpQHgdTZeC64sXChA8TriMZD1jckNYi3xg,164
24
24
  simo/automation/__pycache__/app_widgets.cpython-38.pyc,sha256=7DfUA9V_1MiwrOe_ta-ts8dYY8xXb9UMg2_9A3XoRcs,523
25
- simo/automation/__pycache__/controllers.cpython-38.pyc,sha256=jOeue93TpWhmbmbrvL8ORwGX-1aYsjaqHzCo0Zwt4WU,8380
25
+ simo/automation/__pycache__/controllers.cpython-38.pyc,sha256=m-c96x4Pl4uui7VyE34NrWYQFay2L9o7IYWWbCK1LSs,8391
26
26
  simo/automation/__pycache__/forms.cpython-38.pyc,sha256=cpA5hA2Iz3JsPC0Dq01ki1I7S9c5DKRcXveHApI1dJo,7772
27
27
  simo/automation/__pycache__/gateways.cpython-38.pyc,sha256=K8y3DNQFfcEQiLTgHl5p0Uk58R5QCuqFCluvbQ6I_9g,10652
28
28
  simo/automation/__pycache__/helpers.cpython-38.pyc,sha256=4VSSarOFnUk_KExWwvDlx5dEhv8aHUCHMZDtGG--pUY,3627
@@ -61,9 +61,9 @@ simo/backups/migrations/__pycache__/0004_alter_backup_options_alter_backuplog_op
61
61
  simo/backups/migrations/__pycache__/__init__.cpython-38.pyc,sha256=Lz1fs6V05h2AoxTOLNye0do9bEMnyuaXB_hHOjG5-HU,172
62
62
  simo/core/__init__.py,sha256=_s2TjJfQImsMrTIxqLAx9AZie1Ojmm6sCHASdl3WLGU,50
63
63
  simo/core/admin.py,sha256=j07Dy3IsW7SRRsAJ2XXGzE0MTxmfY87CEEbT22kLlS4,18550
64
- simo/core/api.py,sha256=eJCV5kScDWfVUa7RprMWvu8PQlGX2T3vCGIhIl4Z6Jw,30306
64
+ simo/core/api.py,sha256=D5FBWvhYpQeM9wVfapzRvBi_ypOtXBt9tmmCaUxpGjI,29992
65
65
  simo/core/api_auth.py,sha256=vCxvczA8aWNcW0VyKs5WlC_ytlqeGP_H_hkKUNVkCwM,1247
66
- simo/core/api_meta.py,sha256=dBIpQNDSMO4yum4Xa6acHkWwEDItooZC4QLV_EZfwIc,5221
66
+ simo/core/api_meta.py,sha256=DuX6BmUC2uY_mXb8NC_UMq6T3FcMSQoD2Rv0Pp0NdQo,5228
67
67
  simo/core/app_widgets.py,sha256=VxZzapuc-a29wBH7JzpvNF2SK1ECrgNUySId5ke1ffc,2509
68
68
  simo/core/apps.py,sha256=CsqpiQerhmrMsH-wGiG-gQgXd9qEkIi-LUaA9cXpKSw,425
69
69
  simo/core/auto_urls.py,sha256=FBDclIeRp5UVWomIUbRzUgY-AoMk-r2qC2htlwKD4Lo,1106
@@ -85,18 +85,18 @@ 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
87
87
  simo/core/signal_receivers.py,sha256=y8p0BG3PzhHI3w2WXS8QXyxXc7YKUE_mmO2-QElvrP4,6276
88
- simo/core/socket_consumers.py,sha256=trRZvBGTJ7xIbfdmVvn7zoiWp_qssSkMZykDrI5YQyE,9783
88
+ simo/core/socket_consumers.py,sha256=Es_NmacQGZjsncBXDTEXR2yZbRs7mf2FKOBJjbZRGac,9607
89
89
  simo/core/storage.py,sha256=_5igjaoWZAiExGWFEJMElxUw55DzJG1jqFty33xe8BE,342
90
- simo/core/tasks.py,sha256=ridh-22XWY3v9DCWrGYaXrOM0w4XOebkjkkZT9NtnP4,16911
90
+ simo/core/tasks.py,sha256=LMTkZQDGFus5L2Q8AGzYegjpnZKf9Klgo3V9BT5L2ng,16904
91
91
  simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
92
92
  simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
93
93
  simo/core/views.py,sha256=yx9I0byeVUa-LAOnklpWIYwpNNOf5m9fyjKBvj4YCh4,2475
94
94
  simo/core/widgets.py,sha256=J9e06C6I22F6xKic3VMgG7WeX07glAcl-4bF2Mg180A,2827
95
95
  simo/core/__pycache__/__init__.cpython-38.pyc,sha256=ZJFM_XN0RmJMULQulgA_wFiOnEtsMoedcOWnXjH-Y8o,208
96
96
  simo/core/__pycache__/admin.cpython-38.pyc,sha256=oDG9Kem_VbiRDB6ednmvPS9asBDb3iki7OyLzzNRYCQ,14155
97
- simo/core/__pycache__/api.cpython-38.pyc,sha256=uSPeR38cxPN2H875ky5tDlF_tkkuInzB92qaK4lQWUA,23249
97
+ simo/core/__pycache__/api.cpython-38.pyc,sha256=JXCs5U9MPyZTdO4_j-ytpH1_Fo9-w36zs1eHXZ-czwo,22925
98
98
  simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=mi3mu5qEKio_PvfQEvr3Q6AhdPLAHxzxAxrMbAz_pKU,1712
99
- simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=0IkX6_e09XSsHuA4NDhmyXtegiXo0bpiAeJvEl8LFoc,3837
99
+ simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=km2IBFS1ot6CTYuIAnCwQToQLVQqRasAvfQ6UC8-1ts,3853
100
100
  simo/core/__pycache__/app_widgets.cpython-38.pyc,sha256=oN657XMMZ6GYN9nblv7fX3kdnTEzSP9XV6PXM6Z0wl4,4358
101
101
  simo/core/__pycache__/apps.cpython-38.pyc,sha256=JL0BEqgXcSQvMlcK48PBpPfyDEkPMdO1Y0teqMRGirs,713
102
102
  simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=ib_ns5Ko8ybfrdJJWYVV1jevihxOFs39aBF4bez6Lzs,874
@@ -10265,7 +10265,7 @@ simo/fleet/managers.py,sha256=ZNeHFSkF5kzsl9E1DCBevOW6kXJlD6kw0LU4B-JMOG8,828
10265
10265
  simo/fleet/models.py,sha256=zPplx_v64nfKBmb-nCb74aCVtEeY3m3SjEy-VhbnydU,17511
10266
10266
  simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
10267
10267
  simo/fleet/serializers.py,sha256=PQnjp7LaEpMts-om2OPV5XOU9ut6KFWiePPDCXK0M98,2679
10268
- simo/fleet/socket_consumers.py,sha256=4hVSvFNq9Hi44R7JmaujFoEtgmH5YBST2cFYtIiMDRA,18840
10268
+ simo/fleet/socket_consumers.py,sha256=3Ayry0PJgP5K2V7c-4a11QFOxfM8lOSXfIVhaBB8wTM,18820
10269
10269
  simo/fleet/tasks.py,sha256=NX_opj-rbkK9eeQMeRNwHj_ZJ0LC4rYOZovMg9_r0kA,904
10270
10270
  simo/fleet/utils.py,sha256=wNJvURzLP3-aho3D3rfg07N9kWCaMIw5gOsmeeO9Nlg,4740
10271
10271
  simo/fleet/views.py,sha256=ao1e5ZAkQDZ2AuGiPYTbfgxgH_9efRwnTkk-ZjwnpPc,5122
@@ -10379,9 +10379,9 @@ simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LS
10379
10379
  simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10380
10380
  simo/generic/app_widgets.py,sha256=y8W3jR76Hh26O9pPQyg2SophMbYIOtAWD33MPKbB8Mg,856
10381
10381
  simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
10382
- simo/generic/controllers.py,sha256=ksn_8LvBn3RM-OegI32h4fp7te_Koq-rQy7DtHCiOI4,46063
10383
- simo/generic/forms.py,sha256=kQL8NdK_9-PxFcoPK6fMMCmtroY2Nbx_MqERgBoRg6g,22933
10384
- simo/generic/gateways.py,sha256=om0KdIPOQVyNbxUQuD7Angf4o0Jg8OblMFsWjOfRGXw,15210
10382
+ simo/generic/controllers.py,sha256=B4C6vEk1lzAqjxZ7s7uoM4_qQgomEqy_STCrOoSninM,46059
10383
+ simo/generic/forms.py,sha256=ikSwn6hg6m4XoaWyZNydw9e5aoFRHxbeM8tWsyYlen4,22993
10384
+ simo/generic/gateways.py,sha256=ZlxBKbsjcKXDrQk3MsoNLsHBUUmgqP8KUVuBKtfG784,15809
10385
10385
  simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
10386
10386
  simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
10387
10387
  simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-qaQ,1757
@@ -10430,7 +10430,7 @@ simo/multimedia/admin.py,sha256=GgXiKTLfi3omjBurU-bKgneJRK-tAeiR8o2jo3zD7zs,1002
10430
10430
  simo/multimedia/api.py,sha256=mZ5BTggWdc_kL8P70JGC3rTCiZKPnxWYoyNcAQkFnX4,285
10431
10431
  simo/multimedia/app_widgets.py,sha256=g_IPx5bNmIS6JbaXXDCzYZYV2KVKAiYvWjH4oI30lWM,331
10432
10432
  simo/multimedia/base_types.py,sha256=dAP7_uh_b3A03yXBJZyQdRFucKIro4_RkIZ5yOaWXVE,151
10433
- simo/multimedia/controllers.py,sha256=lwBWzy_hFFHV7dZQgNwHNAWogOnfLzNwkZ2S38_vu48,1999
10433
+ simo/multimedia/controllers.py,sha256=kaoi-nv9b6O87k1eijgk-6ub0-E2KdTN1lL99OPGpo8,1993
10434
10434
  simo/multimedia/forms.py,sha256=oMCVUXRNiESrY3w_uBLRRgjMjx8BrmNeVglzorA9QtY,239
10435
10435
  simo/multimedia/models.py,sha256=5aWGLWDdCkekGAOGZIdanvX1l6ULnhgJN4JAvDZT4nQ,734
10436
10436
  simo/multimedia/requirements.txt,sha256=QeIhjf1RfNGCYn_WZm3VuinPI2wK31WEJPbCxRWxssY,28
@@ -10440,7 +10440,7 @@ simo/multimedia/__pycache__/admin.cpython-38.pyc,sha256=kIVA9sfSgBYNMC64CaSDXLl4
10440
10440
  simo/multimedia/__pycache__/api.cpython-38.pyc,sha256=lFGEB74vgyEM98B42wwcN9WvH8FAupIiSY0SwEBd5Dw,605
10441
10441
  simo/multimedia/__pycache__/app_widgets.cpython-38.pyc,sha256=6pr3fz21tQ5ReC9SJ8VzheUZ0hpxDIClB0SA8YCwcPk,730
10442
10442
  simo/multimedia/__pycache__/base_types.cpython-38.pyc,sha256=c4nmNziLs4RB3MAnxltn3W5XNW6PM5_vK_mm3Yvy42Y,324
10443
- simo/multimedia/__pycache__/controllers.cpython-38.pyc,sha256=aDFKmyduOm4hMf-CqVhQKQ8r8ERBNFkVgsOGg8J6DOg,3473
10443
+ simo/multimedia/__pycache__/controllers.cpython-38.pyc,sha256=C9stIL6FgGiFOxMy76QemVvc7wshVEsPxfa0wCtG4PQ,3464
10444
10444
  simo/multimedia/__pycache__/forms.cpython-38.pyc,sha256=99h7Yj2jim3QOrqej00wiPufrCF3F--RoYvwa6lzhPI,697
10445
10445
  simo/multimedia/__pycache__/models.cpython-38.pyc,sha256=2LViRCOULb9g_k3wZvrODVIuj-iFgfwoWXyg-mAx8Ys,1195
10446
10446
  simo/multimedia/__pycache__/serializers.cpython-38.pyc,sha256=n86txYSrkmN0Xlrr8dMwKSY7rEzMc1iovepCZi_Fcw8,886
@@ -10488,7 +10488,7 @@ simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
10488
10488
  simo/users/serializers.py,sha256=zzw1KONTnaTNBaU0r4rNVxJ827KzD6Z5LuQt27ZsQ98,2516
10489
10489
  simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
10490
10490
  simo/users/sso_views.py,sha256=5J0D4qUFQDvd-Fcqx_xLJWLJgPdqtVD5DDiPJyPsT2Q,4336
10491
- simo/users/tasks.py,sha256=M8MDQ1oR6WXWoOP5SQYui-CsCIV0jUmfI84TbRgGKo8,1199
10491
+ simo/users/tasks.py,sha256=FhbczWFHRFI6To4xqkx4gUX4p0vCwwTT297GWBPAoIg,1162
10492
10492
  simo/users/utils.py,sha256=-Lu7C_sz8JJauLaIwgEa6umArqzNL7JJTY-ZcuF4irA,2004
10493
10493
  simo/users/views.py,sha256=CVhNczY7FjtpFxzQSwRZj39HIBTHsA_2wtkTFUfzKRA,4134
10494
10494
  simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
@@ -10606,9 +10606,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
10606
10606
  simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10607
10607
  simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10608
10608
  simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10609
- simo-2.7.5.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10610
- simo-2.7.5.dist-info/METADATA,sha256=UvkGUGuSL3HwgkzES1Ec_Cy0aqKB3fJMKtw_lc4p_X0,1952
10611
- simo-2.7.5.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10612
- simo-2.7.5.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10613
- simo-2.7.5.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10614
- simo-2.7.5.dist-info/RECORD,,
10609
+ simo-2.7.7.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10610
+ simo-2.7.7.dist-info/METADATA,sha256=W1qgQXe6c87xWycPgFJRemCSruU2t0BpDNpZSk-duok,1952
10611
+ simo-2.7.7.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10612
+ simo-2.7.7.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10613
+ simo-2.7.7.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10614
+ simo-2.7.7.dist-info/RECORD,,
File without changes