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

Files changed (82) hide show
  1. simo/backups/__pycache__/admin.cpython-38.pyc +0 -0
  2. simo/backups/__pycache__/models.cpython-38.pyc +0 -0
  3. simo/backups/__pycache__/tasks.cpython-38.pyc +0 -0
  4. simo/backups/admin.py +10 -13
  5. simo/backups/migrations/0003_alter_backuplog_options_alter_backup_size.py +22 -0
  6. simo/backups/migrations/0004_alter_backup_options_alter_backuplog_options_and_more.py +29 -0
  7. simo/backups/migrations/__pycache__/0003_alter_backuplog_options_alter_backup_size.cpython-38.pyc +0 -0
  8. simo/backups/migrations/__pycache__/0004_alter_backup_options_alter_backuplog_options_and_more.cpython-38.pyc +0 -0
  9. simo/backups/models.py +1 -7
  10. simo/backups/tasks.py +221 -145
  11. simo/core/__pycache__/admin.cpython-38.pyc +0 -0
  12. simo/core/__pycache__/api.cpython-38.pyc +0 -0
  13. simo/core/__pycache__/app_widgets.cpython-38.pyc +0 -0
  14. simo/core/__pycache__/controllers.cpython-38.pyc +0 -0
  15. simo/core/__pycache__/events.cpython-38.pyc +0 -0
  16. simo/core/__pycache__/forms.cpython-38.pyc +0 -0
  17. simo/core/__pycache__/middleware.cpython-38.pyc +0 -0
  18. simo/core/__pycache__/models.cpython-38.pyc +0 -0
  19. simo/core/__pycache__/serializers.cpython-38.pyc +0 -0
  20. simo/core/__pycache__/tasks.cpython-38.pyc +0 -0
  21. simo/core/admin.py +4 -4
  22. simo/core/api.py +20 -4
  23. simo/core/app_widgets.py +5 -0
  24. simo/core/controllers.py +2 -2
  25. simo/core/events.py +2 -0
  26. simo/core/forms.py +2 -0
  27. simo/core/management/commands/gateways_manager.py +0 -3
  28. simo/core/middleware.py +7 -1
  29. simo/core/migrations/0042_alter_instance_timezone.py +18 -0
  30. simo/core/migrations/__pycache__/0042_alter_instance_timezone.cpython-38.pyc +0 -0
  31. simo/core/models.py +26 -6
  32. simo/core/serializers.py +17 -17
  33. simo/core/tasks.py +10 -7
  34. simo/fleet/__pycache__/controllers.cpython-38.pyc +0 -0
  35. simo/fleet/__pycache__/forms.cpython-38.pyc +0 -0
  36. simo/fleet/__pycache__/models.cpython-38.pyc +0 -0
  37. simo/fleet/controllers.py +86 -22
  38. simo/fleet/forms.py +224 -185
  39. simo/fleet/migrations/0038_alter_colonel_type.py +18 -0
  40. simo/fleet/migrations/0039_auto_20241016_1047.py +28 -0
  41. simo/fleet/migrations/0040_alter_colonel_pwm_frequency.py +18 -0
  42. simo/fleet/migrations/__pycache__/0038_alter_colonel_type.cpython-38.pyc +0 -0
  43. simo/fleet/migrations/__pycache__/0039_auto_20241016_1047.cpython-38.pyc +0 -0
  44. simo/fleet/migrations/__pycache__/0040_alter_colonel_pwm_frequency.cpython-38.pyc +0 -0
  45. simo/fleet/models.py +2 -2
  46. simo/generic/__pycache__/controllers.cpython-38.pyc +0 -0
  47. simo/generic/__pycache__/forms.cpython-38.pyc +0 -0
  48. simo/generic/__pycache__/gateways.cpython-38.pyc +0 -0
  49. simo/generic/__pycache__/models.cpython-38.pyc +0 -0
  50. simo/generic/controllers.py +41 -2
  51. simo/generic/forms.py +71 -7
  52. simo/generic/models.py +0 -1
  53. simo/generic/scripting/__init__.py +16 -0
  54. simo/generic/scripting/__pycache__/__init__.cpython-38.pyc +0 -0
  55. simo/generic/scripting/__pycache__/serializers.cpython-38.pyc +0 -0
  56. simo/generic/scripting/helpers.py +35 -0
  57. simo/generic/scripting/serializers.py +77 -0
  58. simo/generic/templates/admin/controller_widgets/weather_forecast.html +2 -2
  59. simo/notifications/__pycache__/models.cpython-38.pyc +0 -0
  60. simo/notifications/__pycache__/utils.cpython-38.pyc +0 -0
  61. simo/notifications/utils.py +30 -12
  62. simo/scripting.py +2 -2
  63. simo/users/__pycache__/api.cpython-38.pyc +0 -0
  64. simo/users/__pycache__/managers.cpython-38.pyc +0 -0
  65. simo/users/__pycache__/models.cpython-38.pyc +0 -0
  66. simo/users/__pycache__/serializers.cpython-38.pyc +0 -0
  67. simo/users/__pycache__/utils.cpython-38.pyc +0 -0
  68. simo/users/api.py +36 -7
  69. simo/users/managers.py +5 -1
  70. simo/users/migrations/0033_alter_user_ssh_key.py +18 -0
  71. simo/users/migrations/0034_instanceuser_last_seen_location_and_more.py +24 -0
  72. simo/users/migrations/__pycache__/0033_alter_user_ssh_key.cpython-38.pyc +0 -0
  73. simo/users/migrations/__pycache__/0034_instanceuser_last_seen_location_and_more.cpython-38.pyc +0 -0
  74. simo/users/models.py +37 -32
  75. simo/users/serializers.py +11 -8
  76. simo/users/utils.py +14 -3
  77. {simo-2.4.1.dist-info → simo-2.5.1.dist-info}/METADATA +1 -1
  78. {simo-2.4.1.dist-info → simo-2.5.1.dist-info}/RECORD +82 -59
  79. {simo-2.4.1.dist-info → simo-2.5.1.dist-info}/WHEEL +1 -1
  80. {simo-2.4.1.dist-info → simo-2.5.1.dist-info}/LICENSE.md +0 -0
  81. {simo-2.4.1.dist-info → simo-2.5.1.dist-info}/entry_points.txt +0 -0
  82. {simo-2.4.1.dist-info → simo-2.5.1.dist-info}/top_level.txt +0 -0
simo/users/models.py CHANGED
@@ -22,6 +22,7 @@ from simo.conf import dynamic_settings
22
22
  from simo.core.utils.mixins import SimoAdminMixin
23
23
  from simo.core.utils.helpers import get_random_string
24
24
  from simo.core.events import OnChangeMixin
25
+ from simo.core.middleware import get_current_instance
25
26
  from .middleware import get_current_user
26
27
  from .utils import rebuild_authorized_keys
27
28
  from .managers import ActiveInstanceManager
@@ -98,6 +99,12 @@ class InstanceUser(DirtyFieldsMixin, models.Model, OnChangeMixin):
98
99
  role = models.ForeignKey(PermissionsRole, on_delete=models.CASCADE)
99
100
  at_home = models.BooleanField(default=False, db_index=True)
100
101
  is_active = models.BooleanField(default=True, db_index=True)
102
+ last_seen_location = PlainLocationField(
103
+ zoom=7, null=True, blank=True, help_text="Sent by user mobile app"
104
+ )
105
+ last_seen_location_datetime = models.DateTimeField(
106
+ null=True, blank=True,
107
+ )
101
108
 
102
109
  objects = ActiveInstanceManager()
103
110
 
@@ -123,17 +130,18 @@ def post_instance_user_save(sender, instance, created, **kwargs):
123
130
  return
124
131
  from simo.core.events import ObjectChangeEvent
125
132
  dirty_fields = instance.get_dirty_fields()
126
- if 'at_home' in dirty_fields:
133
+ if 'at_home' in dirty_fields or 'last_seen_location' in dirty_fields:
127
134
  def post_update():
128
- if instance.at_home:
129
- verb = 'came home'
130
- else:
131
- verb = 'left'
132
- action.send(
133
- instance.user, verb=verb,
134
- instance_id=instance.instance.id,
135
- action_type='user_presence', value=instance.at_home
136
- )
135
+ if 'at_home' in dirty_fields:
136
+ if instance.at_home:
137
+ verb = 'came home'
138
+ else:
139
+ verb = 'left'
140
+ action.send(
141
+ instance.user, verb=verb,
142
+ instance_id=instance.instance.id,
143
+ action_type='user_presence', value=instance.at_home
144
+ )
137
145
  ObjectChangeEvent(
138
146
  instance.instance, instance, dirty_fields=dirty_fields
139
147
  ).publish()
@@ -182,8 +190,6 @@ class User(AbstractBaseUser, SimoAdminMixin):
182
190
  USERNAME_FIELD = 'email'
183
191
  REQUIRED_FIELDS = ['name']
184
192
 
185
- _instance = None
186
-
187
193
  class Meta:
188
194
  verbose_name = _('user')
189
195
  verbose_name_plural = _('users')
@@ -206,12 +212,10 @@ class User(AbstractBaseUser, SimoAdminMixin):
206
212
  obj = super().save(*args, **kwargs)
207
213
 
208
214
  if org:
209
- if org.can_ssh() != self.can_ssh():
215
+ if org.can_ssh() != self.can_ssh() or org.ssh_key != self.ssh_key:
210
216
  rebuild_authorized_keys()
211
217
  elif self.can_ssh():
212
218
  rebuild_authorized_keys()
213
- elif org and org.ssh_key != self.ssh_key:
214
- rebuild_authorized_keys()
215
219
 
216
220
  if not org or (org.secret_key != self.secret_key):
217
221
  self.update_mqtt_secret()
@@ -230,7 +234,7 @@ class User(AbstractBaseUser, SimoAdminMixin):
230
234
  )
231
235
 
232
236
  def can_ssh(self):
233
- return self.is_active and self.ssh_key and self.is_master
237
+ return self.is_active and self.is_master
234
238
 
235
239
  def get_role(self, instance):
236
240
  cache_key = f'user-{self.id}_instance-{instance.id}_role'
@@ -244,19 +248,17 @@ class User(AbstractBaseUser, SimoAdminMixin):
244
248
  cache.set(cache_key, role, 20)
245
249
  return role
246
250
 
247
- def set_instance(self, instance):
248
- self._instance = instance
249
-
250
251
  @property
251
252
  def role_id(self):
252
253
  '''Used by API serializer to get users role on a given instance.'''
253
- if not self._instance:
254
+ instance = get_current_instance()
255
+ if not instance:
254
256
  return None
255
- cache_key = f'user-{self.id}_instance-{self._instance.id}-role-id'
257
+ cache_key = f'user-{self.id}_instance-{instance.id}-role-id'
256
258
  cached_val = cache.get(cache_key, 'expired')
257
259
  if cached_val == 'expired':
258
260
  for role in self.roles.all().select_related('instance'):
259
- if role.instance == self._instance:
261
+ if role.instance == instance:
260
262
  cached_val = role.id
261
263
  cache.set(cache_key, role.id, 20)
262
264
  return cached_val
@@ -264,16 +266,17 @@ class User(AbstractBaseUser, SimoAdminMixin):
264
266
 
265
267
  @role_id.setter
266
268
  def role_id(self, id):
267
- if not self._instance:
269
+ instance = get_current_instance()
270
+ if not instance:
268
271
  return
269
272
  role = PermissionsRole.objects.filter(
270
- id=id, instance=self._instance
273
+ id=id, instance=instance
271
274
  ).first()
272
275
  if not role:
273
276
  raise ValueError("There is no such a role on this instance")
274
277
 
275
278
  InstanceUser.objects.update_or_create(
276
- user=self, instance=self._instance, defaults={
279
+ user=self, instance=instance, defaults={
277
280
  'role': role
278
281
  }
279
282
  )
@@ -305,20 +308,21 @@ class User(AbstractBaseUser, SimoAdminMixin):
305
308
 
306
309
  @property
307
310
  def is_active(self):
308
- if not self._instance:
311
+ instance = get_current_instance()
312
+ if not instance:
309
313
  cache_key = f'user-{self.id}_is_active'
310
314
  else:
311
- cache_key = f'user-{self.id}_is_active_instance-{self._instance.id}'
315
+ cache_key = f'user-{self.id}_is_active_instance-{instance.id}'
312
316
  cached_value = cache.get(cache_key, 'expired')
313
317
  if cached_value == 'expired':
314
318
  if self.is_master and not self.instance_roles.all():
315
319
  # Master who have no roles on any instance are in GOD mode!
316
320
  # It can not be disabled by anybody, nor it is seen by anybody. :)
317
321
  cached_value = True
318
- elif self._instance:
322
+ elif instance:
319
323
  cached_value = bool(
320
324
  self.instance_roles.filter(
321
- instance=self._instance, is_active=True
325
+ instance=instance, is_active=True
322
326
  ).first()
323
327
  )
324
328
  else:
@@ -331,13 +335,14 @@ class User(AbstractBaseUser, SimoAdminMixin):
331
335
 
332
336
  @is_active.setter
333
337
  def is_active(self, val):
334
- if not self._instance:
338
+ instance = get_current_instance()
339
+ if not instance:
335
340
  return
336
341
 
337
342
  self.instance_roles.filter(
338
- instance=self._instance
343
+ instance=instance
339
344
  ).update(is_active=bool(val))
340
- cache_key = f'user-{self.id}_is_active_instance-{self._instance.id}'
345
+ cache_key = f'user-{self.id}_is_active_instance-{instance.id}'
341
346
  try:
342
347
  cache.delete(cache_key)
343
348
  except:
simo/users/serializers.py CHANGED
@@ -1,9 +1,10 @@
1
1
  from rest_framework import serializers
2
2
  from collections.abc import Iterable
3
- from simo.core.middleware import get_current_request
3
+ from simo.core.middleware import get_current_request, get_current_instance
4
4
  from simo.core.utils.api import ReadWriteSerializerMethodField
5
5
  from .models import (
6
- User, PermissionsRole, InstanceInvitation, InstanceUser, Fingerprint
6
+ User, PermissionsRole, ComponentPermission,
7
+ InstanceInvitation, InstanceUser, Fingerprint
7
8
  )
8
9
 
9
10
 
@@ -15,11 +16,6 @@ class UserSerializer(serializers.ModelSerializer):
15
16
 
16
17
  def __init__(self, *args, **kwargs):
17
18
  super().__init__(*args, **kwargs)
18
- if isinstance(self.instance, Iterable):
19
- for inst in self.instance:
20
- inst.set_instance(self.context['instance'])
21
- elif self.instance:
22
- self.instance.set_instance(self.context['instance'])
23
19
 
24
20
  class Meta:
25
21
  model = User
@@ -53,7 +49,7 @@ class UserSerializer(serializers.ModelSerializer):
53
49
 
54
50
  def get_at_home(self, obj):
55
51
  iu = InstanceUser.objects.filter(
56
- user=obj, instance=obj._instance
52
+ user=obj, instance=get_current_instance()
57
53
  ).first()
58
54
  if iu:
59
55
  return iu.at_home
@@ -68,6 +64,13 @@ class PermissionsRoleSerializer(serializers.ModelSerializer):
68
64
  fields = '__all__'
69
65
 
70
66
 
67
+ class ComponentPermissionSerializer(serializers.ModelSerializer):
68
+
69
+ class Meta:
70
+ model = ComponentPermission
71
+ fields = '__all__'
72
+
73
+
71
74
  class InstanceInvitationSerializer(serializers.ModelSerializer):
72
75
 
73
76
  class Meta:
simo/users/utils.py CHANGED
@@ -29,10 +29,21 @@ def rebuild_authorized_keys():
29
29
  try:
30
30
  with open('/root/.ssh/authorized_keys', 'w') as keys_file:
31
31
  for user in User.objects.filter(
32
- ssh_key__isnull=False
32
+ ssh_key__isnull=False, is_master=True
33
33
  ):
34
- if user.is_active and user.is_master:
35
- keys_file.write(user.ssh_key + '\n')
34
+ has_roles = user.instance_roles.filter(
35
+ instance__is_active=True
36
+ ).first()
37
+ has_active_roles = user.instance_roles.filter(
38
+ instance__is_active=True, is_active=True
39
+ ).first()
40
+ # if master user has active roles on some instances
41
+ # but no longer has a single active role on an instance
42
+ # he is most probably has been disabled by the property owner
43
+ # therefore he should no longer be able to ssh in to this hub!
44
+ if has_roles and not has_active_roles:
45
+ continue
46
+ keys_file.write(user.ssh_key + '\n')
36
47
  except:
37
48
  print(traceback.format_exc(), file=sys.stderr)
38
49
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: simo
3
- Version: 2.4.1
3
+ Version: 2.5.1
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
@@ -2,7 +2,7 @@ simo/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
2
2
  simo/asgi.py,sha256=L8CUVZLM32IMzWDZ4IShdDN-m69t7oxAUeHods4-xNM,822
3
3
  simo/celeryc.py,sha256=eab7_e9rw0c__DCeoUFUh_tjAGVlulxVrk75BaJf57Q,1512
4
4
  simo/conf.py,sha256=H2BhXAV8MEDVXF8AbkaLSfR4ULd-9_bS4bnhE5sE5fg,112
5
- simo/scripting.py,sha256=PVIkGsiMDWj4CNTbOM3rq7pJ6ruavuns-ZMU7VudLa4,923
5
+ simo/scripting.py,sha256=ixgi6mKzxHJD5d9-TDl4YhG9n8dZWIoCFNzku_I648g,931
6
6
  simo/settings.py,sha256=BcirAAKau1KiJ5qKTD0ni8hTk3jHAASBcUCBNZPGNCk,6962
7
7
  simo/urls.py,sha256=fRmAsNQ_pzFloimLmxNeDcR6hHRJ3rOoZ3kGy8zOQ_A,2402
8
8
  simo/__pycache__/__init__.cpython-38.pyc,sha256=j81de0BqHMr6bs0C7cuYrXl7HwtK_vv8hDEtAdSwDJc,153
@@ -13,82 +13,87 @@ simo/__pycache__/settings.cpython-38.pyc,sha256=Mi9iweMgAZ16ppKmiK0eFSDYsrY6XRHF
13
13
  simo/__pycache__/urls.cpython-38.pyc,sha256=u0x6EqT8S1YfDOSPgbI8Kf-RDlveY9OV-EDXMYKAQ7w,2125
14
14
  simo/__pycache__/wsgi.cpython-38.pyc,sha256=TpRxO7VM_ql31hbKphVdanydC5RI1nHB4l0QA2pdWxo,322
15
15
  simo/backups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- simo/backups/admin.py,sha256=2079VRAih91_F4k2yIi8068Po2QtTTfEqI2r0yQM7Zs,2797
16
+ simo/backups/admin.py,sha256=cEakxnQlOHvUf8LdBdekXpDAvnqPoVN8y7pnN3WK29A,2487
17
17
  simo/backups/dynamic_settings.py,sha256=Q52RLa3UQsmAhqkwR16cM6pbBnIbXqmVQ2oIUP2ZVD0,416
18
- simo/backups/models.py,sha256=XNaGprjSS3XKHMu36PZj11kjT4AtO0R5LDWfRGY7H-k,875
19
- simo/backups/tasks.py,sha256=7A5sJtY-ratqf9QSv4wuhe66uQijW6YVRw_1n5579eA,11041
18
+ simo/backups/models.py,sha256=-tgILgkqmBEuxBwoymKZN1a0UVQzmJvqWrIGYMMFDaQ,695
19
+ simo/backups/tasks.py,sha256=Vz6hJGWzlfaHtXRkLMhCg8e3oH80aQtgc3YfDsRLpgg,13372
20
20
  simo/backups/__pycache__/__init__.cpython-38.pyc,sha256=vzOf-JIMeZ6P85FyvTpYev3mscFosUy-SJTshcQbOHU,161
21
- simo/backups/__pycache__/admin.cpython-38.pyc,sha256=eUSpoTgvrQ2Dfq87G6ljvij9KUKZ6jibSuPko0-7jW8,3172
21
+ simo/backups/__pycache__/admin.cpython-38.pyc,sha256=KnVH67nEpTeoOzSFB-x1i-XMcC9fMgW8Y_C-hANs9jw,3065
22
22
  simo/backups/__pycache__/dynamic_settings.cpython-38.pyc,sha256=51gJFjn_XqQBRoHeubo6ppb9pNuFQKI5hAR0ms9flE8,731
23
- simo/backups/__pycache__/models.cpython-38.pyc,sha256=1c0gqn5zP9OfQfqDLXbXej7v1n5mBMFjWDewxrPPHEg,1476
23
+ simo/backups/__pycache__/models.cpython-38.pyc,sha256=zclX7HwOT4_izweyKNQ8LmgSHb3hNcYcfsSiwwfQoLY,1220
24
+ simo/backups/__pycache__/tasks.cpython-38.pyc,sha256=bKz_Rxt_H0lC0d9_4Dxqv7cirQDSH9LVurZZC0LU94s,9179
24
25
  simo/backups/migrations/0001_initial.py,sha256=0LzCusTUyYf61ksiepdnqXIuYYNTNd_djh_Wa484HA0,770
25
26
  simo/backups/migrations/0002_backuplog_backup_level_backup_size.py,sha256=w9T9MQWuecy91OZE1fMExriwPuXA8HMPKsPwXhmC8_k,1023
27
+ simo/backups/migrations/0003_alter_backuplog_options_alter_backup_size.py,sha256=0e3roYpxOmMTEfaEu41-OKPOZRnRiOhFDG5Fw2vuzZM,531
28
+ simo/backups/migrations/0004_alter_backup_options_alter_backuplog_options_and_more.py,sha256=MU0NUVXRG5YUxaJSLXnVzb0Axz5BCetXyPPxH1i_ZMI,655
26
29
  simo/backups/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
30
  simo/backups/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=jumm0xjwRhiYPOAXi4o-AGpcRi-GVOj5bSJkOTYtT7w,834
28
31
  simo/backups/migrations/__pycache__/0002_backuplog_backup_level_backup_size.cpython-38.pyc,sha256=moD04sv6Fc6crxZwTQHMtJ18iFG2O_zrqbMBzskPhgw,1024
32
+ simo/backups/migrations/__pycache__/0003_alter_backuplog_options_alter_backup_size.cpython-38.pyc,sha256=eYzS4qm7T8AoWGFr6G7XtgnHW5dQUHLtiwr3UjRJERQ,743
33
+ simo/backups/migrations/__pycache__/0004_alter_backup_options_alter_backuplog_options_and_more.cpython-38.pyc,sha256=f4leTBkOB2kraQYyCkz9B_2pb6aKn7srV2unQA5HV1Q,710
29
34
  simo/backups/migrations/__pycache__/__init__.cpython-38.pyc,sha256=Lz1fs6V05h2AoxTOLNye0do9bEMnyuaXB_hHOjG5-HU,172
30
35
  simo/core/__init__.py,sha256=_s2TjJfQImsMrTIxqLAx9AZie1Ojmm6sCHASdl3WLGU,50
31
- simo/core/admin.py,sha256=hoJ0OhfWL9T0d6JCY6_Gm3GR-nrgtDR2UQM67rMsjiE,18141
32
- simo/core/api.py,sha256=BU-Lkt7m5sj5nzCqCi6uDU__xzBU97MwugL7FghI-es,27775
36
+ simo/core/admin.py,sha256=5mi0Qe9TM-OILCxbcRfGJvq397QCPxjYX30K3CIZrPs,18133
37
+ simo/core/api.py,sha256=A8P47OFFcqw-AXQPF3XqIV3pshEyqQGwLdM8aByddns,28288
33
38
  simo/core/api_auth.py,sha256=vCxvczA8aWNcW0VyKs5WlC_ytlqeGP_H_hkKUNVkCwM,1247
34
39
  simo/core/api_meta.py,sha256=EaiY-dCADP__9MvLpoHvhjytFT92IrxPZDv95xgqasU,4955
35
- simo/core/app_widgets.py,sha256=4Lh9FDzdkfh_mccJMe09dyRTT3Uqf9VXwbkurJ9E9oQ,2115
40
+ simo/core/app_widgets.py,sha256=ReWXLolUX6xW7QgB_qXTrrYyNvzustj9tXCXnUyCvJ8,2224
36
41
  simo/core/apps.py,sha256=CsqpiQerhmrMsH-wGiG-gQgXd9qEkIi-LUaA9cXpKSw,425
37
42
  simo/core/auto_urls.py,sha256=nNXEgLAAAQAhRWQDA9AbDtw-zcPKmu_pufJaSa8g818,1102
38
43
  simo/core/autocomplete_views.py,sha256=JT5LA2_Wtr60XYSAIqaXFKFYPjrmkEf6yunXD9y2zco,4022
39
44
  simo/core/base_types.py,sha256=qVh6MrXZEfN7bFOyFftC7u0yyz0PkvpsjllLBc6SCp4,616
40
45
  simo/core/context.py,sha256=snfPIGcZQTrx8iiZc5PI91A0dRQH6y5kH4uG_lfhU6Q,1486
41
- simo/core/controllers.py,sha256=KB-nzDR60x5EPwtfraIRE_CoXQXpnvjqcLFw6nqcOtQ,29930
46
+ simo/core/controllers.py,sha256=nX6AtkYX6GjRnHuywWesrvRwA8EBHt_fR7yB_8BGA_I,29932
42
47
  simo/core/dynamic_settings.py,sha256=bUs58XEZOCIEhg1TigR3LmYggli13KMryBZ9pC7ugAQ,1872
43
- simo/core/events.py,sha256=LvtonJGNyCb6HLozs4EG0WZItnDwNdtnGQ4vTcnKvUs,4438
48
+ simo/core/events.py,sha256=HXapr_aLPM-T42yl4RB3M_HC76Bg_KmGJry5M8AlNK8,4493
44
49
  simo/core/filters.py,sha256=ghtOZcrwNAkIyF5_G9Sn73NkiI71mXv0NhwCk4IyMIM,411
45
50
  simo/core/form_fields.py,sha256=9tIjiEN3IE55GPyB4tOlfkd51JDne3-h8pKhpL3tLFE,2220
46
- simo/core/forms.py,sha256=sFVz8tENhi4QSudORu_e5tlGEC0aXumy6wzJqQNYBPk,21904
51
+ simo/core/forms.py,sha256=nL_trDNs7RLic11zLSen4EobtywGx8igUMYe7Ojuv1k,21988
47
52
  simo/core/gateways.py,sha256=m0eS3XjVe34Dge6xtoCq16kFWCKJcdQrT0JW0REqoq8,3715
48
53
  simo/core/loggers.py,sha256=EBdq23gTQScVfQVH-xeP90-wII2DQFDjoROAW6ggUP4,1645
49
54
  simo/core/managers.py,sha256=n-b3I4uXzfHKTeB1VMjSaMsDUxp8FegFJwnbV1IsWQ4,3019
50
- simo/core/middleware.py,sha256=1xKsaN0Ro5Fb2slB9FnlQdlDEdO4_kUGdnhA8rccBsA,2730
51
- simo/core/models.py,sha256=5UwGbe2UYj15yM-P6QCIO1HErEdzpNF3nHJnInBGdpM,21666
55
+ simo/core/middleware.py,sha256=aEHwnyR9IFGWxmrYuViJiXIWcCpD5GUeCxcTCpfX_Q8,2934
56
+ simo/core/models.py,sha256=fEbRVY128-FdjG2ueQhBlSMRpvKcxY2VKCJUqXsSMPI,22441
52
57
  simo/core/permissions.py,sha256=v0iJM4LOeYoEfMiw3OLPYio272G1aUEAg_z9Wd1q5m0,2993
53
58
  simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
54
- simo/core/serializers.py,sha256=1hcCnLnItw8T3jLWivKBjSAt7kwqjcOYE0vaepw55Z0,20966
59
+ simo/core/serializers.py,sha256=Pa2lhJ6VgNalbH4awbKdGJCYAPNsu5WQWfo6Tz6LbOQ,20782
55
60
  simo/core/signal_receivers.py,sha256=9-qFCCeSLcMFEMg6QUtKOVgUsoNoqhzGoI98nuNSTEo,6228
56
61
  simo/core/socket_consumers.py,sha256=n7VE2Fvqt4iEAYLTRbTPOcI-7tszMAADu7gimBxB-Fg,9635
57
62
  simo/core/storage.py,sha256=_5igjaoWZAiExGWFEJMElxUw55DzJG1jqFty33xe8BE,342
58
- simo/core/tasks.py,sha256=-swS6mJIJhAbdgKgPkGwYNn03-E9MKM_SO18mI7sml0,14433
63
+ simo/core/tasks.py,sha256=wYCaARytOqnBkoZ1zV59yCtZBqmu3Sd-eNpyZsv4LW0,14572
59
64
  simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
60
65
  simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
61
66
  simo/core/views.py,sha256=3SRZr00fyLQf8ja3U-9eekKt-ld5TvU1WQqUWprXfQ4,2390
62
67
  simo/core/widgets.py,sha256=J9e06C6I22F6xKic3VMgG7WeX07glAcl-4bF2Mg180A,2827
63
68
  simo/core/__pycache__/__init__.cpython-38.pyc,sha256=ZJFM_XN0RmJMULQulgA_wFiOnEtsMoedcOWnXjH-Y8o,208
64
- simo/core/__pycache__/admin.cpython-38.pyc,sha256=c5Q8YfIiLk25yVCxQvNsH-lwuOwfQa88X6xDYjOBogU,13428
65
- simo/core/__pycache__/api.cpython-38.pyc,sha256=w4uvlv0sZtY-xlVJ4UNLC60EyP8fRFGqUwKNc9XcrrE,21694
69
+ simo/core/__pycache__/admin.cpython-38.pyc,sha256=ksoB8Jz8PxcFQ3FlgPJtShwTnBR0LayaVZv6ezDe9OE,13723
70
+ simo/core/__pycache__/api.cpython-38.pyc,sha256=OFl3_PMd48Is0ohUEXeN-eQv_V2oAlphKyWS4FzKGhY,21862
66
71
  simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=6M9Cl_ha4y_Vf8Rv4GMYL8dcBCmp0KzYi6jn3SQTgys,1712
67
72
  simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=VYx5ZeDyNBI4B_CBEIhV5B3GnLsMOx9s3rNZTSMODco,3703
68
- simo/core/__pycache__/app_widgets.cpython-38.pyc,sha256=vUCEAYqppjgRZYMs6pTuSxWWuZxreLygPuPBGw044dQ,3643
73
+ simo/core/__pycache__/app_widgets.cpython-38.pyc,sha256=fmZhynYrx5X5gidhXovhnf8-FdbCLfUB9NS_lpHBF3s,3830
69
74
  simo/core/__pycache__/apps.cpython-38.pyc,sha256=JL0BEqgXcSQvMlcK48PBpPfyDEkPMdO1Y0teqMRGirs,713
70
75
  simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=Tyf8PYHq5YqSwTp25Joy-eura_Fm86fpX9zKLSklhvo,872
71
76
  simo/core/__pycache__/autocomplete_views.cpython-38.pyc,sha256=hJ6JILI1LqrAtpQMvxnLvljGdW1v1gpvBsD79vFkZ58,3972
72
77
  simo/core/__pycache__/base_types.cpython-38.pyc,sha256=hmq22vvGyCmhbYyuV6bFAOOSIupspgW5yq_VzqWd-vY,759
73
78
  simo/core/__pycache__/context.cpython-38.pyc,sha256=ck1FcBljLB4__5F6poS2tEEn8IDDgK7pU3FcXDPc_mI,1329
74
- simo/core/__pycache__/controllers.cpython-38.pyc,sha256=EOs8vHYOjzV9-zrOLr6FS49fywErGkegPteuKt2FqGU,26860
79
+ simo/core/__pycache__/controllers.cpython-38.pyc,sha256=P90-jhkH086_z3Mawo-gYjBWRnZtsxTffqtsSiTTDDU,26864
75
80
  simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=wGpnscX1DxFpRl54MQURhjz2aD3NJohSzw9JCFnzh2Y,2384
76
- simo/core/__pycache__/events.cpython-38.pyc,sha256=A1Axx-qftd1r7st7wkO3DkvTdt9-RkcJe5KJhpzJVk8,5109
81
+ simo/core/__pycache__/events.cpython-38.pyc,sha256=wMN1cxlAKSGVzBU4rAsnbIJwMgbKImBCoSBgdZhkPUg,5131
77
82
  simo/core/__pycache__/filters.cpython-38.pyc,sha256=VIMADCBiYhziIyRmxAyUDJluZvuZmiC4bNYWTRsGSao,721
78
83
  simo/core/__pycache__/form_fields.cpython-38.pyc,sha256=u0voKXkA64xbH6LY_-jMBHQS4mOJZZeuB9WTvtv9JWE,3433
79
- simo/core/__pycache__/forms.cpython-38.pyc,sha256=JDCNYJQrZHUaMb4qZ6A0f1JptoCHQK1yfJwMJlhV7fI,17892
84
+ simo/core/__pycache__/forms.cpython-38.pyc,sha256=O_mCWAQHAJhiqcKLUina7tIFbw5uXwnLOYlJoWxqUDQ,17918
80
85
  simo/core/__pycache__/gateways.cpython-38.pyc,sha256=D1ooHL-iSpQrxnD8uAl4xWFJmm-QWZfbkLiLlFOMtdU,4553
81
86
  simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NMEdPAiHK0cFaIL7I8,1623
82
87
  simo/core/__pycache__/managers.cpython-38.pyc,sha256=6RTIxyjOgpQGtAqcUyE2vFPS09w1V5Wmd_vOV7rHRRI,3370
83
- simo/core/__pycache__/middleware.cpython-38.pyc,sha256=OH2wvHHavuS4YYCgyvJd4GTrTCEV577CQ-ZBrTFuy6Y,2408
84
- simo/core/__pycache__/models.cpython-38.pyc,sha256=h8vUx9VV721RwNmMMjKc8OY3qva4h-Ydc7Gr60un_tM,18017
88
+ simo/core/__pycache__/middleware.cpython-38.pyc,sha256=Ae2NvZ8sv-AeYoFS-xzuA196ajCuE411Ao-U1SY5HXU,2500
89
+ simo/core/__pycache__/models.cpython-38.pyc,sha256=vq7ysMUjqPdcPl6DfLzAzmJWPC9_WNR5W789w8fZirc,18460
85
90
  simo/core/__pycache__/permissions.cpython-38.pyc,sha256=fH4iyqd9DdzRLEu2b621-FeM-napR0M7hzBUTHo9Q3g,2972
86
91
  simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
87
- simo/core/__pycache__/serializers.cpython-38.pyc,sha256=xsGMcx9ISHmvY_PzWqosUdkWRBNqYKOtVkFDYNEHc1A,19479
92
+ simo/core/__pycache__/serializers.cpython-38.pyc,sha256=qIHxrurPk555mHc9P8Udg9eGv-ODw1FTmBS_jXrPuws,19220
88
93
  simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=3Bt9S47DR_ZFS3O-crElFgLLXPIYyDgPIc2ibwEkaic,4904
89
94
  simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=NJUr7nRyHFvmAumxxWpsod5wzVVZM99rCEuJs1utHA4,8432
90
95
  simo/core/__pycache__/storage.cpython-38.pyc,sha256=9R1Xu0FJDflfRXUPsqEgt0SpwiP7FGk7HaR8s8XRyI8,721
91
- simo/core/__pycache__/tasks.cpython-38.pyc,sha256=t2WCeMMfyXe9pdJVU-QP6g8pOP1iXYljjQl20AF2Kew,9968
96
+ simo/core/__pycache__/tasks.cpython-38.pyc,sha256=HCp_TnVN3_q7WlAXrLbTbux30OG0hyTOqOHYvqcz1hU,9989
92
97
  simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
93
98
  simo/core/__pycache__/views.cpython-38.pyc,sha256=ySH8l-clhUdpkIVm9aMQOlt1VoZoJgNrqoE_sEiYMR8,2495
94
99
  simo/core/__pycache__/widgets.cpython-38.pyc,sha256=sR0ZeHCHrhnNDBJuRrxp3zUsfBp0xrtF0xrK2TkQv1o,3520
@@ -153,7 +158,7 @@ simo/core/management/_hub_template/hub/supervisor.conf,sha256=MOsMo8QjBKUl5EUWG4
153
158
  simo/core/management/_hub_template/hub/urls.py,sha256=Ydm-1BkYAzWeEF-MKSDIFf-7aE4qNLPm48-SA51XgJQ,25
154
159
  simo/core/management/_hub_template/hub/wsgi.py,sha256=Lo-huLHnMDTxSmMBOodVFMWBls9poddrV2KRzXU0xGo,280
155
160
  simo/core/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
- simo/core/management/commands/gateways_manager.py,sha256=a_JmUG1SPJhbhPh5QdViCT5DL0YvKQH-KsO8ptLhB34,6970
161
+ simo/core/management/commands/gateways_manager.py,sha256=oHzgC-eV4w_KHkiz6eCAlt3XMIwtS8_7mHDQ4UsU5y0,6967
157
162
  simo/core/management/commands/on_http_start.py,sha256=A2V40pyGY7AfONhtnxiGATOkqd0i9FUvRRxkwyAJF9k,2252
158
163
  simo/core/management/commands/run_gateway.py,sha256=bp0FQQoBeOSoxjHCCMicDL1fxPZZGyLgnq2QKht3bJo,645
159
164
  simo/core/management/commands/__pycache__/__init__.cpython-38.pyc,sha256=WKpfZZpAB9D7U4X6oWQIrU_H-6rUmq8Gl9fj9XaY2fw,178
@@ -200,6 +205,7 @@ simo/core/migrations/0038_remove_instance_cover_image_and_more.py,sha256=cmTNDcR
200
205
  simo/core/migrations/0039_instance_is_active_alter_instance_timezone.py,sha256=8VobRMIQDxa22gBsERRXn0akiVvD2L_qchPY2Sd5a7k,23490
201
206
  simo/core/migrations/0040_alter_instance_name.py,sha256=FqUq-NnO_eqMy3lg5Yl0uG3C-NgC_Qff7bcoBipTZSc,424
202
207
  simo/core/migrations/0041_alter_instance_slug.py,sha256=MmuW0n5CCpF7NyKYINDcqChOU1DynSqQu_3wAYQypCo,401
208
+ simo/core/migrations/0042_alter_instance_timezone.py,sha256=5fLprOmoV06y37rh3uJWq8Fy4SjNmu86Imky6t7j13g,23334
203
209
  simo/core/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
210
  simo/core/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=w6GiBXVxWj30Bg4Sn_pFVeA041d-pCrkaq8mR3KuF70,5381
205
211
  simo/core/migrations/__pycache__/0002_load_icons.cpython-38.pyc,sha256=Nb9RrPjVYo_RpZ5PmzoaEIWGCeVt4kicpmGiKlBrpIw,2123
@@ -242,6 +248,7 @@ simo/core/migrations/__pycache__/0038_remove_instance_cover_image_and_more.cpyth
242
248
  simo/core/migrations/__pycache__/0039_instance_is_active_alter_instance_timezone.cpython-38.pyc,sha256=E3gQfskgqsPm5JgAVGa5WsVSO4GKO_puDhQL_s1zo2s,16512
243
249
  simo/core/migrations/__pycache__/0040_alter_instance_name.cpython-38.pyc,sha256=PPZHAHRMnFS0PsPHxovAkkM3cPEQnLOyJz8q25ZshWs,642
244
250
  simo/core/migrations/__pycache__/0041_alter_instance_slug.cpython-38.pyc,sha256=tVBd5-92gJPHR-I2yjUhsbtxwcykBMzxA6W3mvs8giE,620
251
+ simo/core/migrations/__pycache__/0042_alter_instance_timezone.cpython-38.pyc,sha256=_IdEOLCC0xgeVcKfCk7x0kKxVPu0iWuCxCg8aqkzeSI,16392
245
252
  simo/core/migrations/__pycache__/__init__.cpython-38.pyc,sha256=VZmDQ57BTcebuM0KMhjiTOabgWZCBxQmSJzWZos9SO8,169
246
253
  simo/core/static/ansi_styles.css,sha256=4ieJGrjZPKyPSago9FdB_gflHoGE1vxCHi8qVn5tY-Y,37352
247
254
  simo/core/static/admin/Img/plus.svg,sha256=2NpSFPWqGIjpAQGFI7LDQHPKagEhYkJiJX95ufCoZaI,741
@@ -10213,11 +10220,11 @@ simo/fleet/api.py,sha256=Hxn84xI-Q77HxjINgRbjSJQOv9jii4OL20LxK0VSrS8,2499
10213
10220
  simo/fleet/auto_urls.py,sha256=UX66eR2ykMqFgfIllW-RTdjup5-FieCWl_BVm3CcXKg,702
10214
10221
  simo/fleet/base_types.py,sha256=wL9RVkHr0gA7HI1wZq0pruGEIgvQqpfnCL4cC3ywsvw,102
10215
10222
  simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
10216
- simo/fleet/controllers.py,sha256=A9Bawj9x9JOjd_u8lmNhnWbGlZgqIIS7kbAuO0cNR6c,30506
10217
- simo/fleet/forms.py,sha256=EG0QkxCePDMTTD6GPxj1TAwcUYEGyybsitUTx7CPiFM,57917
10223
+ simo/fleet/controllers.py,sha256=i1GwbT6apIvdyfuVQYNkliBNlKmffCOdpjall3o3NxQ,32735
10224
+ simo/fleet/forms.py,sha256=yyb9KhhqbcfBBXh5PbzKH1uKP2ZH-LW6UZXD9AwT7rw,59079
10218
10225
  simo/fleet/gateways.py,sha256=lKEJW0MgaOEiNnijH50DNSVChvaUT3TA3UurcI57P8k,5677
10219
10226
  simo/fleet/managers.py,sha256=XOpDOA9L-f_550TNSyXnJbun2EmtGz1TenVTMlUSb8E,807
10220
- simo/fleet/models.py,sha256=dJYDTHBz1OizzP51G0fdKHSuW98CsqBX-NhgjcVqYHY,16518
10227
+ simo/fleet/models.py,sha256=DiO82bXZTH6e2mcN0TkTyR7n1YUYnMX_SNzR-lYjiY8,16542
10221
10228
  simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
10222
10229
  simo/fleet/serializers.py,sha256=-16BjY_bp9VbDOYuD0V54h7r_RHpuLNkJX0SydWL9aU,2247
10223
10230
  simo/fleet/socket_consumers.py,sha256=aBNTxvYIw5a5l2ns9x0LnjVJvp4NValEJG4MT4hGAT0,17903
@@ -10230,11 +10237,11 @@ simo/fleet/__pycache__/api.cpython-38.pyc,sha256=rL9fb7cCQatyFvXyKmlNOKmxVo8vHYe
10230
10237
  simo/fleet/__pycache__/auto_urls.cpython-38.pyc,sha256=Tc6a6BCXHjijP8U2jE2ghlJwnSNrGm59-hW5t-80wF0,689
10231
10238
  simo/fleet/__pycache__/base_types.cpython-38.pyc,sha256=deyPwjpT6xZiFxBGFnj5b7R-lbdOTh2krgpJhrcGVhc,274
10232
10239
  simo/fleet/__pycache__/ble.cpython-38.pyc,sha256=Nrof9w7cm4OlpFWHeVnmvvanh2_oF9oQ3TknJiV93-0,1267
10233
- simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=7_GWIGJ2cNjrct6Vu3tSTjvxx6kNJDtTdyTTwsQ1k_8,25373
10234
- simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=8LoC9PAnEEpQ2cVWT4REYvKcLKh7WPsHrJjNNogYgik,39202
10240
+ simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=K_UMv4Vnc1JBd7GHIekm_6YBHApWONFBql5Plnm73nw,26901
10241
+ simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=IRHNJ4RXP17cm9jcZdf96YCeV-AMeVDgvFA8isgiC2E,40489
10235
10242
  simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=0RKVn0ndreVKhsrukqeLPSdMnRrsQ_W7yeVeBkRLfIk,5058
10236
10243
  simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=8uz-xpUiqbGDgXIZ_XRZtFb-Tju6NGxflGg-Ee4Yo6k,1310
10237
- simo/fleet/__pycache__/models.cpython-38.pyc,sha256=pEiMWANjJpKXSR60PosKCUQOKpo6tSvCeWX4VP-0Lns,13796
10244
+ simo/fleet/__pycache__/models.cpython-38.pyc,sha256=fMjWveEDpdGNgffMBPW2IPPz2w_umlSu6UB7BW8z6g4,13802
10238
10245
  simo/fleet/__pycache__/routing.cpython-38.pyc,sha256=aPrCmxFKVyB8R8ZbJDwdPdFfvT7CvobovvZeq_mqRgY,314
10239
10246
  simo/fleet/__pycache__/serializers.cpython-38.pyc,sha256=9ljhwoHkolcVrJwOVbYCbGPAUKgALRwor_M3W_K0adE,3173
10240
10247
  simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=oAnUJbrKjhC3-G-o4F-bx3ZztQf7JhmHi-Sh3cm4-4s,13549
@@ -10278,6 +10285,9 @@ simo/fleet/migrations/0034_auto_20240418_0735.py,sha256=rVJwhoSZGUZP3B7ZzkbtQRyp
10278
10285
  simo/fleet/migrations/0035_auto_20240514_0855.py,sha256=qt1r-zC5EiB43255DkZuCBDQWuR61ry7F51_mpkOGsI,1351
10279
10286
  simo/fleet/migrations/0036_auto_20240605_0702.py,sha256=BfDypoqXEukcR8-R-fP09BUSmKZ-_jXv_YyhwCklths,2325
10280
10287
  simo/fleet/migrations/0037_alter_colonelpin_options_alter_colonelpin_no_and_more.py,sha256=1YDmFYG4gkhS7AzUWJqage1XYftb5B88W737O0tNWiY,843
10288
+ simo/fleet/migrations/0038_alter_colonel_type.py,sha256=3NCAJc5M5BilQynd3lIvub3VJJnVhcONMoGInkd1Los,584
10289
+ simo/fleet/migrations/0039_auto_20241016_1047.py,sha256=c75iDlPH9NPQohkNBt58NPl31tNmctk5rww8wWQJmxA,801
10290
+ simo/fleet/migrations/0040_alter_colonel_pwm_frequency.py,sha256=AiiYeLXEmBAFj1O3WdJB0xQy1KqfiErYR8yPpL8W7e4,498
10281
10291
  simo/fleet/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10282
10292
  simo/fleet/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=9kc1UyMEYkRNVnZ7iwZbiW1t3qWXROvWrI2G1BdzIaA,1250
10283
10293
  simo/fleet/migrations/__pycache__/0002_auto_20220422_0743.cpython-38.pyc,sha256=8oxhGb7rL8QYKlBLU3pOYcd8aHeQWDB9I8awkK04mXg,841
@@ -10316,27 +10326,35 @@ simo/fleet/migrations/__pycache__/0034_auto_20240418_0735.cpython-38.pyc,sha256=
10316
10326
  simo/fleet/migrations/__pycache__/0035_auto_20240514_0855.cpython-38.pyc,sha256=43FYBOD7-kiTTtZs9zaRWcmdAihqo2cOCFVNUDOe6ag,1353
10317
10327
  simo/fleet/migrations/__pycache__/0036_auto_20240605_0702.cpython-38.pyc,sha256=SDGibhEg0SYDF6fCte8l8NLChvHKn1qhLIrNZ_WoZQk,1654
10318
10328
  simo/fleet/migrations/__pycache__/0037_alter_colonelpin_options_alter_colonelpin_no_and_more.cpython-38.pyc,sha256=ZappGrTStz3EIHlQ94y5ieXI-SkM9J1ashPey13ncFA,955
10329
+ simo/fleet/migrations/__pycache__/0038_alter_colonel_type.cpython-38.pyc,sha256=8qbVMh7Hy3YngqjKuOEMCV29J5cZtRoF3MF1bWesC54,793
10330
+ simo/fleet/migrations/__pycache__/0039_auto_20241016_1047.cpython-38.pyc,sha256=6QU9LBUexU9GFSwPoBgLznO6xZU0N-HbWITah-W1xWo,1088
10331
+ simo/fleet/migrations/__pycache__/0040_alter_colonel_pwm_frequency.cpython-38.pyc,sha256=o_trHQUyQfYzWO_iWmZpvzc-uVJlBjK-GfyKhPOVSjc,736
10319
10332
  simo/fleet/migrations/__pycache__/__init__.cpython-38.pyc,sha256=5k1KW0jeSDzw6RnVPRq4CaO13Lg7M0F-pxA_gqqZ6Mg,170
10320
10333
  simo/fleet/templates/fleet/controllers_info/Button.md,sha256=GIuxqG617174NEtpPeCGVocxO4YMe7-CacgVSu_L5-E,739
10321
10334
  simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LSTY9YPFuVPIbVsYCAifcotrXJcOXl2k774_vo6nAE,770
10322
10335
  simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10323
10336
  simo/generic/app_widgets.py,sha256=E_pnpA1hxMIhenRCrHoQ5cik06jm2BAHCkl_eo-OudU,1264
10324
10337
  simo/generic/base_types.py,sha256=djymox_boXTHX1BTTCLXrCH7ED-uAsV_idhaDOc3OLI,409
10325
- simo/generic/controllers.py,sha256=tVI0Gz35dcHt3_5xlkAaXOy3fxlmtZ8L7ODQBtBumV0,58275
10326
- simo/generic/forms.py,sha256=qS7BDI2_w01XsgBKjisGE6XNSMNpmdrdxCEJqorapwA,29481
10338
+ simo/generic/controllers.py,sha256=qqtIj9G3KzPi_IEA2IP1OEYujxCjYbGSKNVUUO8iim0,59825
10339
+ simo/generic/forms.py,sha256=QiVRQ-l2jgiEsnnUYqhCZkKwprMy-D-Wu_EDlBSLz60,32304
10327
10340
  simo/generic/gateways.py,sha256=cc_q_g2HsI2_rWmr8yZ3spnMPwsgoYS5ApWRimc11wU,18831
10328
- simo/generic/models.py,sha256=flpK2jsBFghrvRHzl6IKT-t3WZ-hNOj4ZP2vmBzx0K8,7657
10341
+ simo/generic/models.py,sha256=YEAFfkARsAellfDwmmqGSx7nKkEF5XngciRB4qP1MKk,7596
10329
10342
  simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
10330
10343
  simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-qaQ,1757
10331
10344
  simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
10332
10345
  simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=0IoKRG9n1tkNRRkrqAeOQwWBPd_33u98JBcVtMVVCio,2374
10333
10346
  simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=ptw6axyAqemZA35oa6vzr7EihzvbhW9w7Y-G6kfDedU,555
10334
- simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=I9sGJNnAm9UOnnEoK5KR6IJ9q442El31AiY2hBnx1pI,36480
10335
- simo/generic/__pycache__/forms.cpython-38.pyc,sha256=bbuuS_Q7q7232hYrAPu-pn0WrGpKoMZSiGArOkQfHpc,21103
10336
- simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=8NbsLVDww3Ov5DKF--LKgyrgnrn8yVcKrY21cdvV5aA,13979
10337
- simo/generic/__pycache__/models.cpython-38.pyc,sha256=n3FeTMJYh4B6nCPiPKeXiWsUOOWkLHca7qTvfTK6Iik,5844
10347
+ simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=NFTFX_Hn4XqDdsOw3L02rY8CwWpi9sJ03gxfdPMu_uE,37681
10348
+ simo/generic/__pycache__/forms.cpython-38.pyc,sha256=Gi4adctjk9FOCr55FsNbZyRASUzewgGly0iEepayUJw,23077
10349
+ simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=S7p2HSbXqYcsoOjj998pwpRlA7LfHStrdxS3UhPNsP8,13979
10350
+ simo/generic/__pycache__/models.cpython-38.pyc,sha256=ES8wXkdKn0m-yaJlvhyaIOSppuX9Ckz-bOs9DCpVvaQ,5825
10338
10351
  simo/generic/__pycache__/routing.cpython-38.pyc,sha256=xtxTUTBTdivzFyA5Wh7k-hUj1WDO_FiRq6HYXdbr9Ks,382
10339
10352
  simo/generic/__pycache__/socket_consumers.cpython-38.pyc,sha256=qJO5kvQLWhsQDOr1AtAtsAybuRWioxSkQei3Pc7rdP0,1737
10353
+ simo/generic/scripting/__init__.py,sha256=aZZvNBae7unnux_zGHCIWCV2z47hVJc-DIL72Hqfkeo,600
10354
+ simo/generic/scripting/helpers.py,sha256=cuJ7B79auIw6CmgkcPoQsJekUPIXq00ucneRALdPWwE,919
10355
+ simo/generic/scripting/serializers.py,sha256=PjyFrjdPK1mBsgbNhyqMi9SWzcymqTa742ipy0LhAN4,1996
10356
+ simo/generic/scripting/__pycache__/__init__.cpython-38.pyc,sha256=eHncoNpv5dy35IO1_htWd8CK0sHFBnU_WJ0hl5TKOHQ,794
10357
+ simo/generic/scripting/__pycache__/serializers.cpython-38.pyc,sha256=JD9KCNO27H18mkFaeSMdybTMdTvodqcZSLNbC3pheHU,3412
10340
10358
  simo/generic/static/weather_icons/01d@2x.png,sha256=TZfWi6Rfddb2P-oldWWcjUiuCHiU9Yrc5hyrQAhF26I,948
10341
10359
  simo/generic/static/weather_icons/01n@2x.png,sha256=e9RleTa0T7To9Wi2wJ-9waeTbfHOsUB_xGwkx-89eEg,945
10342
10360
  simo/generic/static/weather_icons/02d@2x.png,sha256=ex522OxNzNNpSRGGzh7EmsBZi_MOFY-1IkQXTOMLL3I,1628
@@ -10360,7 +10378,7 @@ simo/generic/templates/admin/controller_widgets/gate.html,sha256=rqtgEQTmyK8Q66o
10360
10378
  simo/generic/templates/admin/controller_widgets/ip_camera.html,sha256=ZmWm21EswkgT6XR9x1GgzDIkSU2j_GpdOTfbPINg6jY,657
10361
10379
  simo/generic/templates/admin/controller_widgets/script.html,sha256=biUEMo5V35wqSrM97d5WqNDi47GNaDpi53I3YBfDLOs,1484
10362
10380
  simo/generic/templates/admin/controller_widgets/thermostat.html,sha256=iH7j631AY6ahsI7dTMyMYHL_EuX6Q_aRxQgQcPIVxvI,288
10363
- simo/generic/templates/admin/controller_widgets/weather_forecast.html,sha256=UuvXM6XONknAHxn3DF0CP8aGrrfng92n0iTgXkHg7QI,500
10381
+ simo/generic/templates/admin/controller_widgets/weather_forecast.html,sha256=QXR2rIXu-qF6L9bkPKN8CNvT_YVHv-V63ABEnLBwaUY,484
10364
10382
  simo/generic/templates/generic/controllers_info/dummy.md,sha256=DcdkpYXpK7sroINukZZPUQs9uekN9kkE7p5hfnArgFo,147
10365
10383
  simo/generic/templates/generic/controllers_info/stateselect.md,sha256=T0w3vJg02W3RMSsljN1EPRnkVaeRW5acSZaSq9FYvZw,135
10366
10384
  simo/multimedia/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -10397,12 +10415,13 @@ simo/notifications/admin.py,sha256=y_gmHYXbDh98LUUa-lp9DilTIgM6-pIujWPQPLQsJo8,8
10397
10415
  simo/notifications/api.py,sha256=GXQpq68ULBaJpU8w3SJKaCKuxYGWYehKnGeocGB1RVc,1783
10398
10416
  simo/notifications/models.py,sha256=VZcvweii59j89nPKlWeUSJ44Qz3ZLjJ6mXN6uB9F1Sw,2506
10399
10417
  simo/notifications/serializers.py,sha256=altDEAPWwOhxRcEzE9-34jL8EFpyf3vPoEdAPoVLfGc,523
10400
- simo/notifications/utils.py,sha256=VCBKcHrtZrdCalKe2w7umt7-trhG3vw-fKn1ndyr3CA,971
10418
+ simo/notifications/utils.py,sha256=uBl-Y7WGu00iaGM5rrdogcq0OMRVtyVfJF39-mdB3_k,1853
10401
10419
  simo/notifications/__pycache__/__init__.cpython-38.pyc,sha256=YvucUfu98XFvEEg1LYFMlOZJpo_jSGxTVrM-ylAFLOg,167
10402
10420
  simo/notifications/__pycache__/admin.cpython-38.pyc,sha256=Fl4crSZTFQOTYQioV6ff9fBRV4MhNiwQgMS2VnmCI4M,1632
10403
10421
  simo/notifications/__pycache__/api.cpython-38.pyc,sha256=ys6E4AFghX6bq-rQ0gtA9s0Y2Hh-ypsWH8-Yz4edMrc,2073
10404
- simo/notifications/__pycache__/models.cpython-38.pyc,sha256=ou4my98LZ60tNRhZf3n1NLHNAro1yKX-sfNy5kbraa8,2559
10422
+ simo/notifications/__pycache__/models.cpython-38.pyc,sha256=rrYjYOEzDZ3Eos2O7aof5wuIo0VUgGt6LLzhXwORDuc,2559
10405
10423
  simo/notifications/__pycache__/serializers.cpython-38.pyc,sha256=7-eRGKYuQ4g1SpKOMpz17SIiu1HmaMoYv-cJbaO9QGA,1028
10424
+ simo/notifications/__pycache__/utils.cpython-38.pyc,sha256=yqxzplE-_9khsyMvMpXe8nk4eJAwk_62GUV0sCtfY7k,1460
10406
10425
  simo/notifications/migrations/0001_initial.py,sha256=Zh69AQ-EKlQKfqfnMDVRcxvo1MxRY-TFLCdnNcgqi6g,2003
10407
10426
  simo/notifications/migrations/0002_notification_instance.py,sha256=B3msbMeKvsuq-V7gvRADRjj5PFLayhi3pQvHZjqzO5g,563
10408
10427
  simo/notifications/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -10411,37 +10430,37 @@ simo/notifications/migrations/__pycache__/0002_notification_instance.cpython-38.
10411
10430
  simo/notifications/migrations/__pycache__/__init__.cpython-38.pyc,sha256=YMBRHVon2nWDtIUbghckjnC12sIg_ykPWhV5aM0tto4,178
10412
10431
  simo/users/__init__.py,sha256=6a7uBpCWB_DR7p54rbHusc0xvi1qfT1ZCCQGb6TiBh8,52
10413
10432
  simo/users/admin.py,sha256=oaLFTrjDaruKC_l79BB0etru4p8nP8eJFV3F4TSYGp4,6305
10414
- simo/users/api.py,sha256=kUcdHm-WUn6z_AnFEXHnjYu8YX2MW1Z-NlAysRmSdLI,10333
10433
+ simo/users/api.py,sha256=MoURNgcdGl5eS881SbO5nw-zgwSEnbXzb-FrOyA7Vbc,11599
10415
10434
  simo/users/apps.py,sha256=cq0A8-U1HALEwev0TicgFhr4CAu7Icz8rwq0HfOaL4E,207
10416
10435
  simo/users/auth_backends.py,sha256=bBSNXQJ88TRXaQxyh1aETfmOIfiDr08Jnj8rSY9sHDk,4074
10417
10436
  simo/users/auto_urls.py,sha256=lcJvteBsbHQMJieZpDz-63tDYejLApqsW3CUnDakd7k,272
10418
10437
  simo/users/dynamic_settings.py,sha256=sEIsi4yJw3kH46Jq_aOkSuK7QTfQACGUE-lkyBogCaM,570
10419
- simo/users/managers.py,sha256=M_51bk9z4jn8e2Ci3pJfIqbf6cRNqfQNSOAg0vPl6Vo,175
10438
+ simo/users/managers.py,sha256=Fajwpm3wdMES73iPqoa_66J8g13bvUhjUtrexLKIcIU,312
10420
10439
  simo/users/middleware.py,sha256=GMCrnWSc_2qCleyQIkfQGdL-pU-UTEcSg1wPvIKZ9uk,1210
10421
- simo/users/models.py,sha256=mYZHclBNGLUWqFQpUyplncXQrsPYjmlxZ0Jl6Fn_Dhk,20278
10440
+ simo/users/models.py,sha256=xzkLAspcHL0D3kdukEKOwdr4QuLFbocuxkr0BZaJHS4,20590
10422
10441
  simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
10423
- simo/users/serializers.py,sha256=a4R408ZgWVbF7OFw4bBfN33Wnn8ljqS8iFcsqmllkWU,2552
10442
+ simo/users/serializers.py,sha256=zzw1KONTnaTNBaU0r4rNVxJ827KzD6Z5LuQt27ZsQ98,2516
10424
10443
  simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
10425
10444
  simo/users/sso_views.py,sha256=-XI67TvQ7SN3goU4OuAHyn84u_1vtusvpn7Pu0K97zo,4648
10426
10445
  simo/users/tasks.py,sha256=HJAqiyWGsaN3wSfquU0UyQ20jL-njXeaaTOdDT3TQ3s,979
10427
- simo/users/utils.py,sha256=7gU_TDnAOsDYqJM0CFo8efPah2bTXfGpXxRqzD5RiSs,1270
10446
+ simo/users/utils.py,sha256=1HGSZyHRqQvdJ4RtAiZDg1juvgG8aOlrGXR7CcvsyQc,1886
10428
10447
  simo/users/views.py,sha256=dOQVvmlHG7ihWKJLFUBcqKOA0UDctlMKR0pTc36JZqg,3487
10429
10448
  simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
10430
10449
  simo/users/__pycache__/admin.cpython-38.pyc,sha256=UgkqzfrSQU8Hyqig03Z5Qq29434wU27ttufxtvGEJYw,7433
10431
- simo/users/__pycache__/api.cpython-38.pyc,sha256=25he7r5DHfcLYveXWhn6gQDV2R6YnpKbUVBNInR1q_s,8714
10450
+ simo/users/__pycache__/api.cpython-38.pyc,sha256=ptN4kOcpA185pPGbU70aVbZQmzr8myOuAndzqXaKZKk,9852
10432
10451
  simo/users/__pycache__/apps.cpython-38.pyc,sha256=dgbWL8CxzzISJQTmq_4IztPJ2UzykNVdqA2Ae1PmeGk,605
10433
10452
  simo/users/__pycache__/auth_backends.cpython-38.pyc,sha256=n5nx2QSXNj2idzRcGE6bAagMN-8qxoCs580H1EFZXls,3105
10434
10453
  simo/users/__pycache__/auto_urls.cpython-38.pyc,sha256=K-3sz2h-cEitoflSmZk1t0eUg5mQMMGLNZFREVwG7_o,430
10435
10454
  simo/users/__pycache__/dynamic_settings.cpython-38.pyc,sha256=6F8JBjZkHykySnmZjNEzjS0ijbmPdcp9yUAZ5kqq_Fo,864
10436
- simo/users/__pycache__/managers.cpython-38.pyc,sha256=C5-diljm874RAFMTkZdcfzPhkHzlUGPAhz2gTvqkDy8,604
10455
+ simo/users/__pycache__/managers.cpython-38.pyc,sha256=8NvEXbI795f-BXs6CvE_Kp0PpWfYmEJIZ8Bh8H6S2PQ,705
10437
10456
  simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
10438
- simo/users/__pycache__/models.cpython-38.pyc,sha256=tOiUcbFxH2AKUT8X8lygDYxETjpAUR7C8vD7gqB1Nz8,18523
10457
+ simo/users/__pycache__/models.cpython-38.pyc,sha256=ZPwHo7woKL0Tlj3q8MWHeqFKpvh1AKkAslrjr8860to,18550
10439
10458
  simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
10440
- simo/users/__pycache__/serializers.cpython-38.pyc,sha256=AkMwibZBo52rsWOwhAIc9ig1Ck1-fQAEkboe6wnh7yE,3477
10459
+ simo/users/__pycache__/serializers.cpython-38.pyc,sha256=Dy8RAcwNkNSXoJHvLp8fozURyHCtucqpSPyqZtbnMZc,3732
10441
10460
  simo/users/__pycache__/sso_urls.cpython-38.pyc,sha256=uAwDozpOmrhUald-8tOHANILXkH7-TI8fNYXOtPkSY8,402
10442
10461
  simo/users/__pycache__/sso_views.cpython-38.pyc,sha256=sHEoxLOac3U3Epmhm197huFnW_J3gGCDZSji57itijU,3969
10443
10462
  simo/users/__pycache__/tasks.cpython-38.pyc,sha256=XLMKt3suT7BlcXrJZoH9ZIhhtBuqyiW4lsOB9IbBkko,1225
10444
- simo/users/__pycache__/utils.cpython-38.pyc,sha256=CGaRBk-y9A-8lWWY4bYkI9faAziO0pVYdr5BJNmqbUg,1600
10463
+ simo/users/__pycache__/utils.cpython-38.pyc,sha256=S-2i_Y11eTcUpmn-RkX1B4_tDvZJdqkZqqoewpkcsUM,1739
10445
10464
  simo/users/__pycache__/views.cpython-38.pyc,sha256=AXuUnVYRD0ai4FSFDp4qJwryukujAoN6LD3oIj-Cv3o,2426
10446
10465
  simo/users/migrations/0001_initial.py,sha256=_SnJemhNOs8Jjj-PjyvTVCBoxfs5V3lR_4ypUHUdLUg,7017
10447
10466
  simo/users/migrations/0002_componentpermission.py,sha256=rH9pC9HERf_5WWn3LCsNiu03BiHqURTF62pSNfswStI,918
@@ -10475,6 +10494,8 @@ simo/users/migrations/0029_alter_instanceuser_instance.py,sha256=5ebO0vX9lCnTXBM
10475
10494
  simo/users/migrations/0030_userdevice_users.py,sha256=cYY7yChsxOOauHAPIQUzLjLLiOA6kkopTQBE-M9HH10,448
10476
10495
  simo/users/migrations/0031_auto_20240923_1115.py,sha256=RyhmpsxpSXK9Ejbh3cHm9fTnDOcLFQsTH9-2MpNK5YU,514
10477
10496
  simo/users/migrations/0032_remove_userdevice_user_alter_userdevice_users.py,sha256=pM0B4ghsw6LWDvT_9owUmqIHQiraauTGYm_EePhVBUQ,570
10497
+ simo/users/migrations/0033_alter_user_ssh_key.py,sha256=yR7rI2K3FThEp6zEXWx29Zej4HzG5QufKPcj-m8pFuE,519
10498
+ simo/users/migrations/0034_instanceuser_last_seen_location_and_more.py,sha256=_W7qUsVosxBgeQ4oogfJiDryNnGbQTWiusrDVW70JZU,716
10478
10499
  simo/users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10479
10500
  simo/users/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=e4XOKaYRb7l0P7cBnHHi5FQQJMlwjK0g7iqgM-xKmNI,4215
10480
10501
  simo/users/migrations/__pycache__/0002_componentpermission.cpython-38.pyc,sha256=pknJnpic8p6Vdx9DX41FfODXNnvexDswJtUCmC5w1tg,995
@@ -10510,6 +10531,8 @@ simo/users/migrations/__pycache__/0030_alter_instanceuser_options_remove_instanc
10510
10531
  simo/users/migrations/__pycache__/0030_userdevice_users.cpython-38.pyc,sha256=PWQ77FvS69xbGdzC9E7qXX9RLQ9QC4a__0h0oRAI7Ec,674
10511
10532
  simo/users/migrations/__pycache__/0031_auto_20240923_1115.cpython-38.pyc,sha256=0nT2ftDPi0yV6j-p9Am-nVsTy2kY0msM_f2k0eP9EoU,866
10512
10533
  simo/users/migrations/__pycache__/0032_remove_userdevice_user_alter_userdevice_users.cpython-38.pyc,sha256=SDKPEIkt9DYEBRm63GAnxG1yRKKm-JP3pizaJdbAUks,772
10534
+ simo/users/migrations/__pycache__/0033_alter_user_ssh_key.cpython-38.pyc,sha256=HCdJw3La6yFkA9v8QcTMAKub_BKhqIH6U4lVY8G4JII,733
10535
+ simo/users/migrations/__pycache__/0034_instanceuser_last_seen_location_and_more.cpython-38.pyc,sha256=YHxGkhAaI2Es3OK61kdNWViyM7UlEiuFGOV5oAyaL_E,871
10513
10536
  simo/users/migrations/__pycache__/__init__.cpython-38.pyc,sha256=NKq7WLgktK8WV1oOqCPbAbdkrPV5GRGhYx4VxxI4dcs,170
10514
10537
  simo/users/templates/conf/mosquitto.conf,sha256=1eIGNuRu4Y3hfAU6qiWix648eCRrw0oOT24PnyFI4ys,189
10515
10538
  simo/users/templates/conf/mosquitto_acls.conf,sha256=ga44caTDNQE0CBKw55iM2jOuna6-9fKGwAhjyERZdRE,500
@@ -10519,9 +10542,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
10519
10542
  simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10520
10543
  simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10521
10544
  simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10522
- simo-2.4.1.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10523
- simo-2.4.1.dist-info/METADATA,sha256=dkUhhxK0C6qOP_J2jRgkD2ltsJnLcWq2ZTsXtSRIeHg,1923
10524
- simo-2.4.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
10525
- simo-2.4.1.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10526
- simo-2.4.1.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10527
- simo-2.4.1.dist-info/RECORD,,
10545
+ simo-2.5.1.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10546
+ simo-2.5.1.dist-info/METADATA,sha256=4wMPIMMJH6YZClBFHahVA57OeiMpv_NjJrqPwhoGAm4,1923
10547
+ simo-2.5.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
10548
+ simo-2.5.1.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10549
+ simo-2.5.1.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10550
+ simo-2.5.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5