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

@@ -195,7 +195,8 @@ class GatesHandler:
195
195
  continue
196
196
  # Track new users as they appear in the system
197
197
  for iuser in InstanceUser.objects.filter(
198
- is_active=True, instance=gate.zone.instance
198
+ is_active=True, instance=gate.zone.instance,
199
+ role__is_person=True
199
200
  ):
200
201
  if gate.config.get('auto_open_for'):
201
202
  if iuser.role.id not in gate.config['auto_open_for']:
@@ -25,7 +25,7 @@ class Automation:
25
25
 
26
26
  def check_away(self):
27
27
  if InstanceUser.objects.filter(
28
- is_active=True, at_home=True
28
+ is_active=True, at_home=True, role__is_person=True
29
29
  ).count():
30
30
  return False
31
31
 
@@ -65,7 +65,7 @@ class Automation:
65
65
  def run(self):
66
66
  while True:
67
67
  instance_users = InstanceUser.objects.filter(
68
- is_active=True, role__is_owner=True
68
+ is_active=True, role__is_owner=True, role__is_person=True
69
69
  ).prefetch_related('role')
70
70
  self.state.refresh_from_db()
71
71
  new_state = self.check_owner_phones(
@@ -0,0 +1,19 @@
1
+ # Generated by Django 4.2.10 on 2025-04-10 10:35
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ('fleet', '0048_remove_customdalidevice_colonel_and_more'),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AlterField(
15
+ model_name='customdalidevice',
16
+ name='interface',
17
+ field=models.ForeignKey(blank=True, editable=False, help_text='Colonel interface on which it operates.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='custom_devices', to='fleet.interface'),
18
+ ),
19
+ ]
@@ -77,7 +77,7 @@ class Thermostat(ControllerBase):
77
77
  max = 95
78
78
  return {
79
79
  'temperature_sensor': 0, 'heaters': [], 'coolers': [],
80
- 'engagement': 'dynamic','reaction_difference': 2,
80
+ 'engagement': 'dynamic',
81
81
  'min': min, 'max': max,
82
82
  'has_real_feel': False,
83
83
  'user_config': config_to_dict(self._get_default_user_config())
@@ -223,13 +223,12 @@ class Thermostat(ControllerBase):
223
223
  except:
224
224
  pass
225
225
 
226
- low = target_temp - self.component.config['reaction_difference']
227
- high = target_temp + self.component.config['reaction_difference']
228
-
229
226
  heating = False
230
227
  cooling = False
231
228
 
232
229
  if self.component.config.get('engagement', 'static') == 'static':
230
+ low = target_temp - 0.25
231
+ high = target_temp + 0.25
233
232
  if prefer_heating and heaters:
234
233
  heating = self._engage_heating(
235
234
  heaters, current_temp, low, high
@@ -248,14 +247,19 @@ class Thermostat(ControllerBase):
248
247
  )
249
248
 
250
249
  else:
251
- window = high - low
252
250
  if prefer_heating and heaters:
251
+ low = target_temp - 2
252
+ high = target_temp + 1
253
+ window = high - low
253
254
  reach = high - current_temp
254
255
  reaction_force = self._get_reaction_force(window, reach)
255
256
  if reaction_force:
256
257
  heating = True
257
258
  self._engage_devices(heaters, reaction_force)
258
- elif coolers:
259
+ elif coolers and not heating:
260
+ low = target_temp - 1
261
+ high = target_temp + 2
262
+ window = high - low
259
263
  reach = current_temp - low
260
264
  reaction_force = self._get_reaction_force(window, reach)
261
265
  if reaction_force:
@@ -1259,7 +1263,8 @@ class MainState(StateSelect):
1259
1263
  return False
1260
1264
  from simo.users.models import InstanceUser
1261
1265
  if InstanceUser.objects.filter(
1262
- is_active=True, at_home=True, instance=self.component.zone.instance
1266
+ is_active=True, at_home=True, instance=self.component.zone.instance,
1267
+ role__is_person=True
1263
1268
  ).count():
1264
1269
  return False
1265
1270
 
@@ -1294,7 +1299,8 @@ class MainState(StateSelect):
1294
1299
  phones_on_charge = []
1295
1300
  for iuser in InstanceUser.objects.filter(
1296
1301
  is_active=True, role__is_owner=True,
1297
- instance=self.component.zone.instance
1302
+ instance=self.component.zone.instance,
1303
+ role__is_person=True
1298
1304
  ):
1299
1305
  # skipping users that are not at home
1300
1306
  if not iuser.at_home:
simo/generic/forms.py CHANGED
@@ -115,12 +115,8 @@ class ThermostatConfigForm(BaseComponentForm):
115
115
  engagement = forms.ChoiceField(
116
116
  choices=(('dynamic', "Dynamic"), ('static', "Static")),
117
117
  initial='dynamic',
118
- help_text="Dynamic - scales engagement intensity within reaction window <br>"
119
- "Static - engages/disengages fully within reaction window <br>"
120
- )
121
- reaction_difference = forms.FloatField(
122
- initial=2, min_value=0, max_value=50,
123
- help_text="Reaction window = target temp +- reaction difference."
118
+ help_text="Dynamic - scales engagement intensity <br>"
119
+ "Static - engages/disengages fully <br>"
124
120
  )
125
121
  min = forms.IntegerField(initial=3)
126
122
  max = forms.IntegerField(initial=36)
Binary file
simo/users/admin.py CHANGED
@@ -27,10 +27,16 @@ class ComponentPermissionInline(admin.TabularInline):
27
27
 
28
28
  @admin.register(PermissionsRole)
29
29
  class PermissionsRoleAdmin(admin.ModelAdmin):
30
- list_display = 'name', 'is_superuser', 'is_owner', 'can_manage_users', 'is_default'
30
+ list_display = (
31
+ 'name', 'is_superuser', 'is_owner', 'can_manage_users',
32
+ 'is_person', 'is_default'
33
+ )
31
34
  search_fields = 'name',
32
35
  inlines = ComponentPermissionInline,
33
- list_filter = 'is_superuser', 'is_owner', 'can_manage_users', 'is_default'
36
+ list_filter = (
37
+ 'is_superuser', 'is_owner', 'can_manage_users',
38
+ 'is_person', 'is_default'
39
+ )
34
40
 
35
41
 
36
42
  def get_queryset(self, request):
simo/users/api.py CHANGED
@@ -221,9 +221,8 @@ class UserDeviceReport(InstanceMixin, viewsets.GenericViewSet):
221
221
  datetime__gt=log_datetime - datetime.timedelta(seconds=120),
222
222
  at_home=False, location__isnull=False
223
223
  ).values('speed_kmh',):
224
- if speed:
225
- sum += speed[0]
226
- no_of_points += 1
224
+ sum += speed['speed_kmh']
225
+ no_of_points += 1
227
226
  if no_of_points > 2:
228
227
  sum += speed_kmh
229
228
  avg_speed_kmh = round(sum / (no_of_points + 1))
@@ -0,0 +1,18 @@
1
+ # Generated by Django 4.2.10 on 2025-04-10 10:35
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('users', '0043_userdevicereportlog_avg_speed_kmh'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='permissionsrole',
15
+ name='is_person',
16
+ field=models.BooleanField(db_index=True, default=True, help_text='Is this a real person or a device like wall tablet?'),
17
+ ),
18
+ ]
simo/users/models.py CHANGED
@@ -45,6 +45,10 @@ class PermissionsRole(models.Model):
45
45
  default=False,
46
46
  help_text="Has 100% management control of an instance via mobile app."
47
47
  )
48
+ is_person = models.BooleanField(
49
+ default=True, db_index=True,
50
+ help_text="Is this a real person or a device like wall tablet?"
51
+ )
48
52
  is_default = models.BooleanField(
49
53
  default=False, help_text="Default new user role."
50
54
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simo
3
- Version: 2.10.4
3
+ Version: 2.10.6
4
4
  Summary: Smart Home Supremacy
5
5
  Author-email: Simanas Venčkauskas <simanas@simo.io>
6
6
  Project-URL: Homepage, https://simo.io
@@ -21,7 +21,7 @@ simo/automation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  simo/automation/app_widgets.py,sha256=gaqImMZjuMHm7nIb9a4D-Y3qipz_WhSPAHXcwGx4Uzs,199
22
22
  simo/automation/controllers.py,sha256=66aGjlfgigcePXiLmDkbVrxbm-Z26klMKIiOvaMH71k,11545
23
23
  simo/automation/forms.py,sha256=jcmiq7A-S5WwoIY3YD7GmWomHXXJAipTawWcgOavuRM,10239
24
- simo/automation/gateways.py,sha256=GH8StZslRvZvWGz6_q8IjQzQg5zSmIZ7_mALbbKm5OY,16539
24
+ simo/automation/gateways.py,sha256=L97hTJJgKneBw38pQQ4UwSk26FgxVzQ5tK2eQPAK4m8,16577
25
25
  simo/automation/helpers.py,sha256=iP-fxxB8HsFQy3k2CjFubu86aMqvWgmh-p24DiyOrek,4330
26
26
  simo/automation/models.py,sha256=zt-jkzyq5ddqGT864OkJzCsvov2vZ0nO4ez3hAeZkXg,934
27
27
  simo/automation/serializers.py,sha256=Pg-hMaASQPB5_BTAMkfqM6z4jdHWH8xMYWOvDxIvmx8,2126
@@ -34,7 +34,7 @@ simo/automation/__pycache__/controllers.cpython-312.pyc,sha256=QV63g3UlpMAA-yCaZ
34
34
  simo/automation/__pycache__/controllers.cpython-38.pyc,sha256=CL-0Tq9B4-E36fYfWT1XEBTq1dkq1W8003f6MrBnQU0,8391
35
35
  simo/automation/__pycache__/forms.cpython-312.pyc,sha256=kmw04yujs7dVHNHvzr9Q8gXc0e6BAZHg_URPXjLbrfU,12419
36
36
  simo/automation/__pycache__/forms.cpython-38.pyc,sha256=cpA5hA2Iz3JsPC0Dq01ki1I7S9c5DKRcXveHApI1dJo,7772
37
- simo/automation/__pycache__/gateways.cpython-312.pyc,sha256=SvCnrrJGw727sredFOl3JEeljBcNrno3e5Yqdai6xI8,22686
37
+ simo/automation/__pycache__/gateways.cpython-312.pyc,sha256=-KkZ9SVQefGgnBRDHNjPQ-vyjEUTN4ICyy_fgCaoWCw,22708
38
38
  simo/automation/__pycache__/gateways.cpython-38.pyc,sha256=nHujqChMCqqxHbZezP3MisavjKDhczqzFGurO10h-lc,11113
39
39
  simo/automation/__pycache__/helpers.cpython-312.pyc,sha256=v6abo_h8qfWD3isbJvTO3X9sfUREJxTlc_P1ZhN8ZCs,5853
40
40
  simo/automation/__pycache__/helpers.cpython-38.pyc,sha256=fNjSyn4Mfq7-JQx-bdsnj-rSxgu20dVJ9-5ZEMT6yiM,3627
@@ -54,9 +54,9 @@ simo/automation/migrations/__pycache__/0002_update_helpers_in_scripts.cpython-38
54
54
  simo/automation/migrations/__pycache__/__init__.cpython-312.pyc,sha256=B-rIEJEzvMiSrEzduijhY0DzTu3BixyhrQLgE6XgtyA,181
55
55
  simo/automation/migrations/__pycache__/__init__.cpython-38.pyc,sha256=L2WU6Wk1EXhqcOKUNA9o--Z4G0aTQqwvRhKYxuUooAM,175
56
56
  simo/automation/templates/admin/controller_widgets/script.html,sha256=biUEMo5V35wqSrM97d5WqNDi47GNaDpi53I3YBfDLOs,1484
57
- simo/automation/templates/automations/auto_away.py,sha256=asz9AJ8eLHkxkpvm5phZhUqCNpghd54TKgllmvYkBoM,1911
57
+ simo/automation/templates/automations/auto_away.py,sha256=Wx4AHTXxBZ1Hw8GJpv84K83thMvFGbHKU647Zd0BcgU,1933
58
58
  simo/automation/templates/automations/auto_state_script.py,sha256=pEaeKNss7L-PnhlMUpEfNRqCjquq6FAGrjTZ92CMxUY,1001
59
- simo/automation/templates/automations/phones_sleep_script.py,sha256=b6JZkfXdhDd3FwDJWq93kxBsm80kNzMGPWAF5jcWTHo,2894
59
+ simo/automation/templates/automations/phones_sleep_script.py,sha256=wN7JN-2mqnT4ilIko3gzNixbEzydShrO7JJe1jvX9q0,2916
60
60
  simo/backups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  simo/backups/admin.py,sha256=cEakxnQlOHvUf8LdBdekXpDAvnqPoVN8y7pnN3WK29A,2487
62
62
  simo/backups/dynamic_settings.py,sha256=Q52RLa3UQsmAhqkwR16cM6pbBnIbXqmVQ2oIUP2ZVD0,416
@@ -10504,6 +10504,7 @@ simo/fleet/migrations/0045_alter_colonel_type_customdalidevice.py,sha256=XILnVpZ
10504
10504
  simo/fleet/migrations/0046_delete_customdalidevice.py,sha256=KR-pqDctBHB1SgbC01FeR_mAjJ54Wl4ZWFYn6zks1c4,321
10505
10505
  simo/fleet/migrations/0047_customdalidevice.py,sha256=GQBIV0K2p2OUVYP67ggbG8VxNdV6ziHJ432a4JoMrM0,1178
10506
10506
  simo/fleet/migrations/0048_remove_customdalidevice_colonel_and_more.py,sha256=_HXvxy_0hO9PaKHXSwYoznacHe1TDz1dDaEZo8SVkKA,867
10507
+ simo/fleet/migrations/0049_alter_customdalidevice_interface.py,sha256=eEtMTt04XbfsjHeFujeCcTe4KNQoPAe_d7lFvcj5n2A,630
10507
10508
  simo/fleet/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10508
10509
  simo/fleet/migrations/__pycache__/0001_initial.cpython-312.pyc,sha256=AKcdg2v5A7vfVyRT-jwK54BVyg1V1gO6-tyXtk4afSA,1991
10509
10510
  simo/fleet/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=9kc1UyMEYkRNVnZ7iwZbiW1t3qWXROvWrI2G1BdzIaA,1250
@@ -10597,6 +10598,7 @@ simo/fleet/migrations/__pycache__/0045_alter_colonel_type_customdalidevice.cpyth
10597
10598
  simo/fleet/migrations/__pycache__/0046_delete_customdalidevice.cpython-312.pyc,sha256=B3J3WjCjjA__bjqIwkpX4i2u18KWEKzlZ-lG0__Hh5E,653
10598
10599
  simo/fleet/migrations/__pycache__/0047_customdalidevice.cpython-312.pyc,sha256=qIZEMpkj28cOAazGsiH2ZiH1m5Sot_FK-78yzxA4tfU,1848
10599
10600
  simo/fleet/migrations/__pycache__/0048_remove_customdalidevice_colonel_and_more.cpython-312.pyc,sha256=D21BzJX40P1Hanj8D1haBvoEqljQL2IQJwCTIzF9GFo,1378
10601
+ simo/fleet/migrations/__pycache__/0049_alter_customdalidevice_interface.cpython-312.pyc,sha256=WfNMmdpnS6x3I9gDEOrtqztjbWYcQXDB4THYb3ysK9s,1184
10600
10602
  simo/fleet/migrations/__pycache__/__init__.cpython-312.pyc,sha256=1rujN3qD3L0Q2MRB-gxwRKyShgUTX9NBpDGaIl42ozU,176
10601
10603
  simo/fleet/migrations/__pycache__/__init__.cpython-38.pyc,sha256=5k1KW0jeSDzw6RnVPRq4CaO13Lg7M0F-pxA_gqqZ6Mg,170
10602
10604
  simo/fleet/templates/admin/colonel_history.html,sha256=YfA6LDVExk1sAWhBuiCLA6vb3XcBNN7_fpJNZzGFtB0,169
@@ -10606,8 +10608,8 @@ simo/fleet/templates/fleet/controllers_info/RoomZonePresenceSensor.md,sha256=Nun
10606
10608
  simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10607
10609
  simo/generic/app_widgets.py,sha256=y8W3jR76Hh26O9pPQyg2SophMbYIOtAWD33MPKbB8Mg,856
10608
10610
  simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
10609
- simo/generic/controllers.py,sha256=SkXedPGmW17sErob2pyTj2xSq7FwVZXHAxBhZX8CKbc,49699
10610
- simo/generic/forms.py,sha256=62l1tKTd90N91EQ9gy6eQInab5fl76VudgO2foYrVQ0,26488
10611
+ simo/generic/controllers.py,sha256=2RyjQvXjy87uzJQBC8gcqK5FSjuhQBvg9v6MZgH8ajQ,49879
10612
+ simo/generic/forms.py,sha256=0RIDtLLzCkiSb9OxlioicOQW9yp1OjLKekpjbxzGVfM,26272
10611
10613
  simo/generic/gateways.py,sha256=oJ4VLaL0nMB6hnTMEpZasc4OTf8m1HWRWJMhUjHbeIU,19447
10612
10614
  simo/generic/models.py,sha256=59fkYowOX0imviIhA6uwupvuharrpBykmBm674rJNoI,7279
10613
10615
  simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
@@ -10619,7 +10621,7 @@ simo/generic/__pycache__/app_widgets.cpython-312.pyc,sha256=ywoKk91YSEZxpyt9haG5
10619
10621
  simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=D9b13pbMlirgHmjDnQhfLIDGSVINoSouHb4SWOeCRrs,1642
10620
10622
  simo/generic/__pycache__/base_types.cpython-312.pyc,sha256=h8Mwu49i-zmwTbL33JaLJfRDGOgkQh2_VqrfzEc4UQ4,616
10621
10623
  simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
10622
- simo/generic/__pycache__/controllers.cpython-312.pyc,sha256=PJtqjFFJBh1UuKy7tVuAmnlhOKw4sv64akb-9zrBbU4,55883
10624
+ simo/generic/__pycache__/controllers.cpython-312.pyc,sha256=C6P4bm3XsjyPKU5CPIT8TuPc3Q6p4fhB2ZryxSlhpnA,55917
10623
10625
  simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=jJjwKVaDYyazrRGNjUFoY74nr_jX_DEnsC9KjyxZCgc,30427
10624
10626
  simo/generic/__pycache__/forms.cpython-312.pyc,sha256=7BWN3cBh1eftr_ysxsBUG5R_ddiNgVEUWFQnVghx0OM,34923
10625
10627
  simo/generic/__pycache__/forms.cpython-38.pyc,sha256=k8lz3taXdWAg5P9jcnw66mWH51pCc4SOsg32kVEtBCg,19416
@@ -10753,15 +10755,15 @@ simo/notifications/migrations/__pycache__/0003_alter_notification_instance.cpyth
10753
10755
  simo/notifications/migrations/__pycache__/__init__.cpython-312.pyc,sha256=YMFc4QmWMnjT1vpATl4nnj80m2oJehTlDRl0SvYeR3A,184
10754
10756
  simo/notifications/migrations/__pycache__/__init__.cpython-38.pyc,sha256=YMBRHVon2nWDtIUbghckjnC12sIg_ykPWhV5aM0tto4,178
10755
10757
  simo/users/__init__.py,sha256=6a7uBpCWB_DR7p54rbHusc0xvi1qfT1ZCCQGb6TiBh8,52
10756
- simo/users/admin.py,sha256=2J_ZwrwAPw03Stb6msx5GvRpGCsDSC39RPpYBLGf8UY,7441
10757
- simo/users/api.py,sha256=V_LCUOV3p1_Z47CpQ5C-hNH4gUNuCkLRo5szGU1K6bs,15160
10758
+ simo/users/admin.py,sha256=DVXDfq8ssauNA7-H6sj89UlsfbOvJldpveNSAaYIVPY,7515
10759
+ simo/users/api.py,sha256=7LXVAsCuheS4k8JtkORNXFGh6bb1jR4QPZknuS12nzw,15136
10758
10760
  simo/users/apps.py,sha256=cq0A8-U1HALEwev0TicgFhr4CAu7Icz8rwq0HfOaL4E,207
10759
10761
  simo/users/auth_backends.py,sha256=HxRp9iFvU1KqUhE7pA9YKEjqtBCJDbDqk_UMCD2Dwww,4361
10760
10762
  simo/users/auto_urls.py,sha256=RSUW3ai5LbMTknS8M7M5aOnG_YlFOVQrnNVNH-fkwlg,357
10761
10763
  simo/users/dynamic_settings.py,sha256=yDtjpcEKA5uS2fcma6e-Zznh2iyMT3x8N7aRqNCtzSM,569
10762
10764
  simo/users/managers.py,sha256=OHgEP85MBtdkdYxdstBd8RavTBT8F_2WyDxUJ9aCqqM,246
10763
10765
  simo/users/middleware.py,sha256=tNPmnzo0eTrJ25SLHP7NotqYKI2cKnmv8hf6v5DLOWo,427
10764
- simo/users/models.py,sha256=TKHs7mVjVC84WK-qXDz--4YfaD_TsUDrxxZ-oEXF-Pc,20527
10766
+ simo/users/models.py,sha256=2bnUEFM1UqwWntBOTnoYwzWRMr0KsQEv6HTHGo9VdxE,20679
10765
10767
  simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
10766
10768
  simo/users/serializers.py,sha256=Uy5JsZp6nEGNMuK9HgLbA0KJdsbjG8GDIyF7z7Ue_so,2610
10767
10769
  simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
@@ -10771,9 +10773,9 @@ simo/users/utils.py,sha256=vR5SlWdMKkMgNZdJXUI14pASVue8WMqJSQpVKruX25I,2305
10771
10773
  simo/users/views.py,sha256=iIfv8DqNztzBB3fiZcnHOyzp4eFtjrC-gCv5rBX3XsQ,4136
10772
10774
  simo/users/__pycache__/__init__.cpython-312.pyc,sha256=n0GE5zxjujBUkv1t1CswZ9GbybW478_oY8d_wQJ44N8,223
10773
10775
  simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
10774
- simo/users/__pycache__/admin.cpython-312.pyc,sha256=lTVuZQwkuw1bzSn0A0kt-8H6ruKas_YPb_61AxSYSoo,11465
10776
+ simo/users/__pycache__/admin.cpython-312.pyc,sha256=AAGwpZ603YYkCXM-Z-LrUykyexy0xJg3iOZE1BSI1G8,11488
10775
10777
  simo/users/__pycache__/admin.cpython-38.pyc,sha256=uL8TwAipkatZxanvQtBKKcOv8Fm3UvinBxsP0okrOZg,8443
10776
- simo/users/__pycache__/api.cpython-312.pyc,sha256=iCQPIgjuhtRlpbNHx1Jnib9oDImPXYGyswiZCXLQshA,19476
10778
+ simo/users/__pycache__/api.cpython-312.pyc,sha256=O7mRDdbpqakFJf37mROWy2xv-4bUzLW8FOUmzzE3Hcg,19469
10777
10779
  simo/users/__pycache__/api.cpython-38.pyc,sha256=zZ4DfNktgeVvLAtMpaPUv7AoAgbKr7SCt-4ghJk1zp4,10386
10778
10780
  simo/users/__pycache__/apps.cpython-312.pyc,sha256=6KefztC11cSg6VHJ7-sVDvOA-oq_jNMB8jMvmhcVZD4,707
10779
10781
  simo/users/__pycache__/apps.cpython-38.pyc,sha256=dgbWL8CxzzISJQTmq_4IztPJ2UzykNVdqA2Ae1PmeGk,605
@@ -10787,7 +10789,7 @@ simo/users/__pycache__/managers.cpython-312.pyc,sha256=A9-yF1dilDc1H_-BtrIw9USpH
10787
10789
  simo/users/__pycache__/managers.cpython-38.pyc,sha256=O0Y8ABp42RAosrbODmYsPMaj9AyOPyJ-aqzuO0Qpi2s,679
10788
10790
  simo/users/__pycache__/middleware.cpython-312.pyc,sha256=9pkiIkMriu0ExLK479hyPfaN-DOfp6WErqQlrZY1Mvk,927
10789
10791
  simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
10790
- simo/users/__pycache__/models.cpython-312.pyc,sha256=52wjquH0mXIIWZ0oGaJiM6fXnyg7zTi4zeBVRQ2dIMo,29546
10792
+ simo/users/__pycache__/models.cpython-312.pyc,sha256=fsFyN_a9-dIPd-7kiH-Ncb5sLzdXyCmRme67aMZcabo,29697
10791
10793
  simo/users/__pycache__/models.cpython-38.pyc,sha256=qNtAn_eWVmRTWhTxN8GtCc549dcJsTdaF7Uk19yNMgg,18330
10792
10794
  simo/users/__pycache__/permissions.cpython-312.pyc,sha256=NCaxeIz4qmG_mF18lKTYXqOSUvJkFLnUZjfYIQFUCkU,718
10793
10795
  simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
@@ -10846,6 +10848,7 @@ simo/users/migrations/0040_userdevicereportlog_location_smoothed_and_more.py,sha
10846
10848
  simo/users/migrations/0041_userdevicereportlog_speed_kmh_received.py,sha256=WoJ-ImX1lNIl7CKO_HMt3jbFjoenFGBUm9HZWidb-eA,433
10847
10849
  simo/users/migrations/0042_remove_userdevicereportlog_location_smoothed_and_more.py,sha256=p-GFu6qjkxqeA0TI8aaIum0k6fQfc39RIKbfGPSf0Yk,499
10848
10850
  simo/users/migrations/0043_userdevicereportlog_avg_speed_kmh.py,sha256=DheQR-GsGMwNkya3rWHp6pOrNz7-ljnsbcU4e_7AVuE,435
10851
+ simo/users/migrations/0044_permissionsrole_is_person.py,sha256=PRNplM8TZRkOsnE1tESeotQrBC64VvPAI77HeVhpNOc,492
10849
10852
  simo/users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10850
10853
  simo/users/migrations/__pycache__/0001_initial.cpython-312.pyc,sha256=6ezqZjScZKR1CrY0_nwL2RDsrTr1dydlQ963BuaOptI,8299
10851
10854
  simo/users/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=e4XOKaYRb7l0P7cBnHHi5FQQJMlwjK0g7iqgM-xKmNI,4215
@@ -10935,6 +10938,7 @@ simo/users/migrations/__pycache__/0042_remove_userdevicereportlog_location_smoot
10935
10938
  simo/users/migrations/__pycache__/0042_remove_userdevicereportlog_location_smoothed_and_more.cpython-38.pyc,sha256=sSnWjU7rg5LXlRCxUFb_m2lUIcB4EHgtAnl-C9MMJvE,656
10936
10939
  simo/users/migrations/__pycache__/0043_userdevicereportlog_avg_speed_kmh.cpython-312.pyc,sha256=EStpvcDPAu_hZlFk3mc7bIVXDUGzA9Ccd4kGQmWcQ1c,823
10937
10940
  simo/users/migrations/__pycache__/0043_userdevicereportlog_avg_speed_kmh.cpython-38.pyc,sha256=ZkXpVQtjfMoX4WF5N8rioCVv77mNNGhu9g50EQEf03w,673
10941
+ simo/users/migrations/__pycache__/0044_permissionsrole_is_person.cpython-312.pyc,sha256=WZxQyUyiXp7yKvWm90S7A7Zr3-oBk6_IDQsTazgBxAs,874
10938
10942
  simo/users/migrations/__pycache__/__init__.cpython-312.pyc,sha256=B_XwMs2L0W7Bdjl6bs-Rl8iTxqzeRwrf3qcNBlMjIm8,176
10939
10943
  simo/users/migrations/__pycache__/__init__.cpython-38.pyc,sha256=NKq7WLgktK8WV1oOqCPbAbdkrPV5GRGhYx4VxxI4dcs,170
10940
10944
  simo/users/templates/conf/mosquitto.conf,sha256=1eIGNuRu4Y3hfAU6qiWix648eCRrw0oOT24PnyFI4ys,189
@@ -10945,9 +10949,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
10945
10949
  simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10946
10950
  simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10947
10951
  simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10948
- simo-2.10.4.dist-info/licenses/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10949
- simo-2.10.4.dist-info/METADATA,sha256=W2if2dRhkzW3_8r7zXvP4eFkkDFaAyNg_Lq2-HEXrs4,2028
10950
- simo-2.10.4.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
10951
- simo-2.10.4.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10952
- simo-2.10.4.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10953
- simo-2.10.4.dist-info/RECORD,,
10952
+ simo-2.10.6.dist-info/licenses/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
10953
+ simo-2.10.6.dist-info/METADATA,sha256=WCPnUSuq85p8GvATcqBj7suoJod2rahQdkiY7lCZ1J4,2028
10954
+ simo-2.10.6.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
10955
+ simo-2.10.6.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
10956
+ simo-2.10.6.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
10957
+ simo-2.10.6.dist-info/RECORD,,
File without changes