simo 2.10.5__py3-none-any.whl → 2.10.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.
- simo/automation/__pycache__/gateways.cpython-312.pyc +0 -0
- simo/automation/gateways.py +2 -1
- simo/automation/templates/automations/auto_away.py +1 -1
- simo/automation/templates/automations/phones_sleep_script.py +1 -1
- simo/fleet/__pycache__/api.cpython-312.pyc +0 -0
- simo/fleet/__pycache__/forms.cpython-312.pyc +0 -0
- simo/fleet/__pycache__/models.cpython-312.pyc +0 -0
- simo/fleet/__pycache__/serializers.cpython-312.pyc +0 -0
- simo/fleet/api.py +12 -9
- simo/fleet/forms.py +3 -3
- simo/fleet/migrations/0049_alter_customdalidevice_interface.py +19 -0
- simo/fleet/migrations/0050_customdalidevice_uid.py +19 -0
- simo/fleet/migrations/0051_customdalidevice_components.py +19 -0
- simo/fleet/migrations/__pycache__/0049_alter_customdalidevice_interface.cpython-312.pyc +0 -0
- simo/fleet/migrations/__pycache__/0050_customdalidevice_uid.cpython-312.pyc +0 -0
- simo/fleet/migrations/__pycache__/0051_customdalidevice_components.cpython-312.pyc +0 -0
- simo/fleet/models.py +28 -0
- simo/fleet/serializers.py +39 -3
- simo/generic/__pycache__/controllers.cpython-312.pyc +0 -0
- simo/generic/__pycache__/forms.cpython-312.pyc +0 -0
- simo/generic/controllers.py +14 -8
- simo/generic/forms.py +2 -6
- simo/users/__pycache__/admin.cpython-312.pyc +0 -0
- simo/users/__pycache__/models.cpython-312.pyc +0 -0
- simo/users/admin.py +8 -2
- simo/users/migrations/0044_permissionsrole_is_person.py +18 -0
- simo/users/migrations/__pycache__/0044_permissionsrole_is_person.cpython-312.pyc +0 -0
- simo/users/models.py +4 -0
- {simo-2.10.5.dist-info → simo-2.10.7.dist-info}/METADATA +1 -1
- {simo-2.10.5.dist-info → simo-2.10.7.dist-info}/RECORD +34 -26
- {simo-2.10.5.dist-info → simo-2.10.7.dist-info}/WHEEL +0 -0
- {simo-2.10.5.dist-info → simo-2.10.7.dist-info}/entry_points.txt +0 -0
- {simo-2.10.5.dist-info → simo-2.10.7.dist-info}/licenses/LICENSE.md +0 -0
- {simo-2.10.5.dist-info → simo-2.10.7.dist-info}/top_level.txt +0 -0
|
Binary file
|
simo/automation/gateways.py
CHANGED
|
@@ -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']:
|
|
@@ -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(
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/fleet/api.py
CHANGED
|
@@ -69,7 +69,7 @@ class ColonelsViewSet(InstanceMixin, viewsets.ModelViewSet):
|
|
|
69
69
|
target = Colonel.objects.annotate(
|
|
70
70
|
components_count=Count('components')
|
|
71
71
|
).filter(
|
|
72
|
-
pk=request.POST.get('target'),
|
|
72
|
+
pk=request.POST.get('target'), instance=self.instance,
|
|
73
73
|
components_count=0, type=colonel.type
|
|
74
74
|
)
|
|
75
75
|
if not target:
|
|
@@ -104,17 +104,12 @@ class InterfaceViewSet(
|
|
|
104
104
|
return Interface.objects.filter(colonel__instance=self.instance)
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
class CustomDaliDeviceViewSet(
|
|
108
|
-
InstanceMixin,
|
|
109
|
-
viewsets.mixins.RetrieveModelMixin, viewsets.mixins.UpdateModelMixin,
|
|
110
|
-
viewsets.mixins.ListModelMixin, viewsets.mixins.CreateModelMixin,
|
|
111
|
-
viewsets.GenericViewSet
|
|
112
|
-
):
|
|
107
|
+
class CustomDaliDeviceViewSet(InstanceMixin, viewsets.ModelViewSet):
|
|
113
108
|
url = 'fleet/custom-dali-devices'
|
|
114
109
|
basename = 'custom-dali-devices'
|
|
115
110
|
serializer_class = CustomDaliDeviceSerializer
|
|
116
111
|
filter_backends = [DjangoFilterBackend]
|
|
117
|
-
filterset_fields = ['random_address', 'name']
|
|
112
|
+
filterset_fields = ['uid', 'random_address', 'name']
|
|
118
113
|
|
|
119
114
|
def get_permissions(self):
|
|
120
115
|
permissions = super().get_permissions()
|
|
@@ -122,4 +117,12 @@ class CustomDaliDeviceViewSet(
|
|
|
122
117
|
return permissions
|
|
123
118
|
|
|
124
119
|
def get_queryset(self):
|
|
125
|
-
return CustomDaliDevice.objects.filter(instance=self.instance)
|
|
120
|
+
return CustomDaliDevice.objects.filter(instance=self.instance)
|
|
121
|
+
|
|
122
|
+
def perform_destroy(self, instance):
|
|
123
|
+
if instance.components.all().count():
|
|
124
|
+
raise APIValidationError(
|
|
125
|
+
_('Deleting colonel which has components is not allowed!'),
|
|
126
|
+
code=400
|
|
127
|
+
)
|
|
128
|
+
instance.delete()
|
simo/fleet/forms.py
CHANGED
|
@@ -1829,14 +1829,14 @@ class CustomDaliDeviceForm(BaseComponentForm):
|
|
|
1829
1829
|
choices = []
|
|
1830
1830
|
instance = get_current_instance()
|
|
1831
1831
|
for colonel in Colonel.objects.filter(
|
|
1832
|
-
|
|
1832
|
+
type='room-sensor', instance=instance
|
|
1833
1833
|
):
|
|
1834
1834
|
if not colonel.is_connected:
|
|
1835
1835
|
continue
|
|
1836
1836
|
choices.append((f"wifi-{colonel.id}", colonel.name))
|
|
1837
1837
|
for device in CustomDaliDevice.objects.filter(
|
|
1838
|
-
|
|
1839
|
-
|
|
1838
|
+
instance=instance,
|
|
1839
|
+
last_seen__gt=timezone.now() - datetime.timedelta(minutes=10)
|
|
1840
1840
|
):
|
|
1841
1841
|
choices.append((f"dali-{device.id}", device.name))
|
|
1842
1842
|
self.fields['device'].choices = choices
|
|
@@ -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
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 4.2.10 on 2025-04-11 06:17
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('fleet', '0049_alter_customdalidevice_interface'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='customdalidevice',
|
|
15
|
+
name='uid',
|
|
16
|
+
field=models.CharField(db_index=True, default='', max_length=100),
|
|
17
|
+
preserve_default=False,
|
|
18
|
+
),
|
|
19
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 4.2.10 on 2025-04-11 07:07
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('core', '0049_alter_gateway_type'),
|
|
10
|
+
('fleet', '0050_customdalidevice_uid'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name='customdalidevice',
|
|
16
|
+
name='components',
|
|
17
|
+
field=models.ManyToManyField(to='core.component'),
|
|
18
|
+
),
|
|
19
|
+
]
|
|
Binary file
|
|
Binary file
|
simo/fleet/models.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import requests
|
|
2
2
|
import time
|
|
3
3
|
import random
|
|
4
|
+
import datetime
|
|
4
5
|
from actstream import action
|
|
5
6
|
from django.core.exceptions import ValidationError
|
|
6
7
|
from django.db import transaction
|
|
@@ -9,6 +10,7 @@ from django.db.models.signals import post_save, pre_delete, post_delete
|
|
|
9
10
|
from django.dispatch import receiver
|
|
10
11
|
from django.contrib.contenttypes.models import ContentType
|
|
11
12
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
|
13
|
+
from django.utils import timezone
|
|
12
14
|
from dirtyfields import DirtyFieldsMixin
|
|
13
15
|
from simo.core.models import Instance, Gateway, Component
|
|
14
16
|
from simo.core.utils.helpers import get_random_string
|
|
@@ -502,6 +504,7 @@ class CustomDaliDevice(models.Model):
|
|
|
502
504
|
not compatible with anything else of DALI!
|
|
503
505
|
'''
|
|
504
506
|
instance = models.ForeignKey(Instance, on_delete=models.CASCADE)
|
|
507
|
+
uid = models.CharField(max_length=100, db_index=True)
|
|
505
508
|
random_address = models.PositiveIntegerField(db_index=True, editable=False)
|
|
506
509
|
name = models.CharField(
|
|
507
510
|
max_length=200, help_text="User given name on initial pairing"
|
|
@@ -512,6 +515,7 @@ class CustomDaliDevice(models.Model):
|
|
|
512
515
|
help_text="Colonel interface on which it operates."
|
|
513
516
|
)
|
|
514
517
|
last_seen = models.DateTimeField(null=True, editable=False)
|
|
518
|
+
components = models.ManyToManyField(Component)
|
|
515
519
|
|
|
516
520
|
class Meta:
|
|
517
521
|
unique_together = 'instance', 'random_address'
|
|
@@ -538,3 +542,27 @@ class CustomDaliDevice(models.Model):
|
|
|
538
542
|
msg=frame.pack.hex()
|
|
539
543
|
).publish()
|
|
540
544
|
|
|
545
|
+
@property
|
|
546
|
+
def is_alive(self):
|
|
547
|
+
if not self.last_seen:
|
|
548
|
+
return False
|
|
549
|
+
return self.last_seen + datetime.timedelta(seconds=60) > timezone.now()
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
@receiver(post_save, sender=Component)
|
|
553
|
+
def attatch_components_to_dali_device(sender, instance, created, *args, **kwargs):
|
|
554
|
+
if not instance.controller_uid.startswith('simo.fleet'):
|
|
555
|
+
return
|
|
556
|
+
if 'config' not in instance.get_dirty_fields():
|
|
557
|
+
return
|
|
558
|
+
dali_device = CustomDaliDevice.objects.filter(
|
|
559
|
+
id=instance.config.get('dali_device', 0)
|
|
560
|
+
).first()
|
|
561
|
+
if not dali_device:
|
|
562
|
+
return
|
|
563
|
+
dali_device.components.add(instance)
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
@receiver(pre_delete, sender=CustomDaliDevice)
|
|
567
|
+
def delete_dali_device_components(sender, instance, *args, **kwargs):
|
|
568
|
+
instance.components.all().delete()
|
simo/fleet/serializers.py
CHANGED
|
@@ -89,12 +89,48 @@ class ColonelSerializer(serializers.ModelSerializer):
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
class CustomDaliDeviceSerializer(serializers.ModelSerializer):
|
|
92
|
+
is_empty = serializers.SerializerMethodField()
|
|
93
|
+
is_alive = serializers.SerializerMethodField()
|
|
94
|
+
last_seen = TimestampField()
|
|
92
95
|
|
|
93
96
|
class Meta:
|
|
94
97
|
model = CustomDaliDevice
|
|
95
|
-
fields =
|
|
96
|
-
|
|
98
|
+
fields = (
|
|
99
|
+
'id', 'uid', 'random_address', 'name', 'is_empty',
|
|
100
|
+
'is_alive', 'last_seen'
|
|
101
|
+
)
|
|
102
|
+
read_only_fields = (
|
|
103
|
+
'random_address', 'is_empty', 'is_alive', 'last_seen'
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def validate(self, data):
|
|
107
|
+
instance = self.context.get('instance')
|
|
108
|
+
uid = data.get('uid')
|
|
109
|
+
if instance and uid:
|
|
110
|
+
if CustomDaliDevice.objects.filter(
|
|
111
|
+
uid=uid, instance=instance
|
|
112
|
+
).exists():
|
|
113
|
+
raise serializers.ValidationError(
|
|
114
|
+
f"A device with uid '{uid}' already exists for this instance."
|
|
115
|
+
)
|
|
116
|
+
return data
|
|
117
|
+
|
|
118
|
+
def validate_uid(self, value):
|
|
119
|
+
"""
|
|
120
|
+
Prevent changing the uid on update.
|
|
121
|
+
"""
|
|
122
|
+
# self.instance will be None for creation, but set for updates.
|
|
123
|
+
if self.instance and self.instance.uid != value:
|
|
124
|
+
raise serializers.ValidationError("Changing uid is not allowed.")
|
|
125
|
+
return value
|
|
97
126
|
|
|
98
127
|
def create(self, validated_data):
|
|
99
128
|
validated_data['instance'] = self.context['instance']
|
|
100
|
-
return super().create(validated_data)
|
|
129
|
+
return super().create(validated_data)
|
|
130
|
+
|
|
131
|
+
def get_is_empty(self, obj):
|
|
132
|
+
return not bool(obj.components.all().count())
|
|
133
|
+
|
|
134
|
+
def get_is_alive(self, obj):
|
|
135
|
+
return obj.is_alive
|
|
136
|
+
|
|
Binary file
|
|
Binary file
|
simo/generic/controllers.py
CHANGED
|
@@ -77,7 +77,7 @@ class Thermostat(ControllerBase):
|
|
|
77
77
|
max = 95
|
|
78
78
|
return {
|
|
79
79
|
'temperature_sensor': 0, 'heaters': [], 'coolers': [],
|
|
80
|
-
'engagement': 'dynamic',
|
|
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.5
|
|
252
|
+
high = target_temp + 0.5
|
|
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
|
|
119
|
-
"Static - engages/disengages fully
|
|
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
|
|
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 =
|
|
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 =
|
|
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):
|
|
@@ -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
|
)
|
|
@@ -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=
|
|
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
|
|
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=
|
|
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=
|
|
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
|
|
@@ -10405,19 +10405,19 @@ simo/core/utils/__pycache__/validators.cpython-312.pyc,sha256=w8-XwptooefG-7gIIn
|
|
|
10405
10405
|
simo/core/utils/__pycache__/validators.cpython-38.pyc,sha256=gjeBOjL_keMoRDjdn8v-3F3wcjPIT3Xx5KpTalo0e-Y,1247
|
|
10406
10406
|
simo/fleet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10407
10407
|
simo/fleet/admin.py,sha256=J_kiwYIGMTxnRuytl_YoM7Pxrj5LzlN9xC8E7Ag5yvQ,7006
|
|
10408
|
-
simo/fleet/api.py,sha256=
|
|
10408
|
+
simo/fleet/api.py,sha256=Yst2NB__BgAzF9AX7APyhZz36lA6FZtKCy_iiasaNxk,4648
|
|
10409
10409
|
simo/fleet/apps.py,sha256=je8mRXMcRq4lABQZlyF2G2hOCkBUicR9I2jvrLDA8eI,238
|
|
10410
10410
|
simo/fleet/auto_urls.py,sha256=vrfrooPyY4pDuQjya-eLxCgZldfhwbEeEiXa7diO_CY,847
|
|
10411
10411
|
simo/fleet/base_types.py,sha256=0F8r7eNpi0qdm7DtVHyQN3fst8sFOFjq61twFO2WeZQ,139
|
|
10412
10412
|
simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
|
|
10413
10413
|
simo/fleet/controllers.py,sha256=eBY9cHxcmhhBRrSIsnfaklpD0ZBw637ndCQ3KH0JMvQ,36692
|
|
10414
10414
|
simo/fleet/custom_dali_operations.py,sha256=LASObOxRymL-f0AEm9wdt4YFnNsz5z385wQE9qJhOZY,9948
|
|
10415
|
-
simo/fleet/forms.py,sha256=
|
|
10415
|
+
simo/fleet/forms.py,sha256=Yy9ana-39f9zOynD4pPCkPsJyYrcZqzWFmZitFEoEmY,71263
|
|
10416
10416
|
simo/fleet/gateways.py,sha256=C7dyapWDlJ5erYPNLkSoH50I8kj0lIXicSno0_CrdXc,5783
|
|
10417
10417
|
simo/fleet/managers.py,sha256=DKU9kv5S6dAqAHWq4OgfEOeK5IJaQW7qdCednA0NpUA,858
|
|
10418
|
-
simo/fleet/models.py,sha256=
|
|
10418
|
+
simo/fleet/models.py,sha256=e9BTcpCdNLL2Lh4NFlAH9qumY8_RKD6isPLeWQznIBY,20544
|
|
10419
10419
|
simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
|
|
10420
|
-
simo/fleet/serializers.py,sha256=
|
|
10420
|
+
simo/fleet/serializers.py,sha256=29LA_tBoWlHS6qWLJNUA2N0htiW-WBV8k7tTCijGrDY,4243
|
|
10421
10421
|
simo/fleet/socket_consumers.py,sha256=SPrhbcMY50QD1QKXBPUwBZi_Jmw7FwRZdHGUybkAQlU,19460
|
|
10422
10422
|
simo/fleet/tasks.py,sha256=JeVQP4vUGzQxyDGEv8gks7Ro4GNLqkTWafxpgb1B8YY,2180
|
|
10423
10423
|
simo/fleet/utils.py,sha256=wNJvURzLP3-aho3D3rfg07N9kWCaMIw5gOsmeeO9Nlg,4740
|
|
@@ -10426,7 +10426,7 @@ simo/fleet/__pycache__/__init__.cpython-312.pyc,sha256=-BZyG4uq87W18Ra1pKTjSzDgi
|
|
|
10426
10426
|
simo/fleet/__pycache__/__init__.cpython-38.pyc,sha256=pIZE7EL6-cuJ3pQtaSwjKLrKLsTYelp1k9sRhXKLh6s,159
|
|
10427
10427
|
simo/fleet/__pycache__/admin.cpython-312.pyc,sha256=8TOuku1Atv-LyaVi4OICTc43iBFPgxCjrgjA9q6CN1s,9890
|
|
10428
10428
|
simo/fleet/__pycache__/admin.cpython-38.pyc,sha256=iweeu5AkaggBhQntP6-VF_eEodkNc6E7zKy0VjfwC2o,6652
|
|
10429
|
-
simo/fleet/__pycache__/api.cpython-312.pyc,sha256=
|
|
10429
|
+
simo/fleet/__pycache__/api.cpython-312.pyc,sha256=g_dGu_LC-V35x55uygshq8fq0yXS9yGUhc0mDJM83bc,7704
|
|
10430
10430
|
simo/fleet/__pycache__/api.cpython-38.pyc,sha256=rZ1mkfkaMBEXhi9sw_jTKdk2CPJhBNxoImtjQ3Rf1VY,4016
|
|
10431
10431
|
simo/fleet/__pycache__/apps.cpython-312.pyc,sha256=S8OK4R0W9VbNfD4Nos_CybjZ3AXS8CxvRaRUJO57xQA,707
|
|
10432
10432
|
simo/fleet/__pycache__/auto_urls.cpython-312.pyc,sha256=32yXKNoqMxNgYvsspUgx1A84LVQqr8LP4BRvURNCgeY,1026
|
|
@@ -10436,17 +10436,17 @@ simo/fleet/__pycache__/base_types.cpython-38.pyc,sha256=deyPwjpT6xZiFxBGFnj5b7R-
|
|
|
10436
10436
|
simo/fleet/__pycache__/ble.cpython-38.pyc,sha256=Nrof9w7cm4OlpFWHeVnmvvanh2_oF9oQ3TknJiV93-0,1267
|
|
10437
10437
|
simo/fleet/__pycache__/controllers.cpython-312.pyc,sha256=2oCTeifcjwfGElIDktcDonaMkT0jY4PNKNQgWqWAmBI,50317
|
|
10438
10438
|
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=vH7mK1K4JBcLU9eKtqTJwbgB0SFMJ-s7WvO0qOsWjrg,24739
|
|
10439
|
-
simo/fleet/__pycache__/forms.cpython-312.pyc,sha256=
|
|
10439
|
+
simo/fleet/__pycache__/forms.cpython-312.pyc,sha256=SDNq1pqSi5jciWFhV9wDC8OTKxTn918puJAgRW3SiSA,87426
|
|
10440
10440
|
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=hrNfyGm2NfoNG1II-OqeHzR2TkkAWp3igvHGs6X0iIM,45252
|
|
10441
10441
|
simo/fleet/__pycache__/gateways.cpython-312.pyc,sha256=ZZGBAH2w9YmFvSrajZY8fUXd_WVpkRH81cYT6mhs858,8828
|
|
10442
10442
|
simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=MIpXuGWitGNdsxJ99fWvMXJ6sVE96ac7iR4K4aM4Sds,5148
|
|
10443
10443
|
simo/fleet/__pycache__/managers.cpython-312.pyc,sha256=uBckoFiAHHRi4KT2sNgJoOZfGMF4DBwKMDNeOTAUiC0,1754
|
|
10444
10444
|
simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=Vmm23zoQnS3-uS5_WJt2n3wtjhLiEhLWaYxXJCU6Gts,1339
|
|
10445
|
-
simo/fleet/__pycache__/models.cpython-312.pyc,sha256=
|
|
10445
|
+
simo/fleet/__pycache__/models.cpython-312.pyc,sha256=cKXqErITf5pBGvISczAGYWdWKzm09oeOS-DSXeJXmP8,29458
|
|
10446
10446
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=AXk1Q_nnHDXirHYgM3EW5pLsrR2CaPWk4EuvGCuDUpI,14131
|
|
10447
10447
|
simo/fleet/__pycache__/routing.cpython-312.pyc,sha256=vafYpGAtYc2NYxBQObMX6eIZfVZflOYgzjYv0SL1jAQ,385
|
|
10448
10448
|
simo/fleet/__pycache__/routing.cpython-38.pyc,sha256=aPrCmxFKVyB8R8ZbJDwdPdFfvT7CvobovvZeq_mqRgY,314
|
|
10449
|
-
simo/fleet/__pycache__/serializers.cpython-312.pyc,sha256=
|
|
10449
|
+
simo/fleet/__pycache__/serializers.cpython-312.pyc,sha256=2N_kjyIzqsocqvlKnk4Lydm9ZL3niCjBunKKjXC9hS4,7358
|
|
10450
10450
|
simo/fleet/__pycache__/serializers.cpython-38.pyc,sha256=l_FzORWCM1hcSZV0AaGRO-p0CMTcEfqnLGgbn2IVvI0,3648
|
|
10451
10451
|
simo/fleet/__pycache__/socket_consumers.cpython-312.pyc,sha256=i0lKhUOK6XwSS-B-MM-x2t3zllm7jU1Dz36OaHwmZuE,28058
|
|
10452
10452
|
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=lEC1SkY_KgRY0QoBUMPjnbFwSa7qmCf-4eNQ45hAy68,14141
|
|
@@ -10504,6 +10504,9 @@ 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
|
|
10508
|
+
simo/fleet/migrations/0050_customdalidevice_uid.py,sha256=iO_vpbNnEDLWo8p0S81MouuIMN75BCjLsUg0hZUZ9rU,468
|
|
10509
|
+
simo/fleet/migrations/0051_customdalidevice_components.py,sha256=-tTMCuBQnAFf3W5aHCn1qWa447e1XdghVK8nNA7J7bo,456
|
|
10507
10510
|
simo/fleet/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10508
10511
|
simo/fleet/migrations/__pycache__/0001_initial.cpython-312.pyc,sha256=AKcdg2v5A7vfVyRT-jwK54BVyg1V1gO6-tyXtk4afSA,1991
|
|
10509
10512
|
simo/fleet/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=9kc1UyMEYkRNVnZ7iwZbiW1t3qWXROvWrI2G1BdzIaA,1250
|
|
@@ -10597,6 +10600,9 @@ simo/fleet/migrations/__pycache__/0045_alter_colonel_type_customdalidevice.cpyth
|
|
|
10597
10600
|
simo/fleet/migrations/__pycache__/0046_delete_customdalidevice.cpython-312.pyc,sha256=B3J3WjCjjA__bjqIwkpX4i2u18KWEKzlZ-lG0__Hh5E,653
|
|
10598
10601
|
simo/fleet/migrations/__pycache__/0047_customdalidevice.cpython-312.pyc,sha256=qIZEMpkj28cOAazGsiH2ZiH1m5Sot_FK-78yzxA4tfU,1848
|
|
10599
10602
|
simo/fleet/migrations/__pycache__/0048_remove_customdalidevice_colonel_and_more.cpython-312.pyc,sha256=D21BzJX40P1Hanj8D1haBvoEqljQL2IQJwCTIzF9GFo,1378
|
|
10603
|
+
simo/fleet/migrations/__pycache__/0049_alter_customdalidevice_interface.cpython-312.pyc,sha256=WfNMmdpnS6x3I9gDEOrtqztjbWYcQXDB4THYb3ysK9s,1184
|
|
10604
|
+
simo/fleet/migrations/__pycache__/0050_customdalidevice_uid.cpython-312.pyc,sha256=tguBnxPVAUrgU120EVDHZa-gChovZNklAAac6RRLd7Y,831
|
|
10605
|
+
simo/fleet/migrations/__pycache__/0051_customdalidevice_components.cpython-312.pyc,sha256=YB5d40wwc6FqZJJILNC5T7bnu254Ml-Cah96v3N8gbE,827
|
|
10600
10606
|
simo/fleet/migrations/__pycache__/__init__.cpython-312.pyc,sha256=1rujN3qD3L0Q2MRB-gxwRKyShgUTX9NBpDGaIl42ozU,176
|
|
10601
10607
|
simo/fleet/migrations/__pycache__/__init__.cpython-38.pyc,sha256=5k1KW0jeSDzw6RnVPRq4CaO13Lg7M0F-pxA_gqqZ6Mg,170
|
|
10602
10608
|
simo/fleet/templates/admin/colonel_history.html,sha256=YfA6LDVExk1sAWhBuiCLA6vb3XcBNN7_fpJNZzGFtB0,169
|
|
@@ -10606,8 +10612,8 @@ simo/fleet/templates/fleet/controllers_info/RoomZonePresenceSensor.md,sha256=Nun
|
|
|
10606
10612
|
simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10607
10613
|
simo/generic/app_widgets.py,sha256=y8W3jR76Hh26O9pPQyg2SophMbYIOtAWD33MPKbB8Mg,856
|
|
10608
10614
|
simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
|
|
10609
|
-
simo/generic/controllers.py,sha256=
|
|
10610
|
-
simo/generic/forms.py,sha256=
|
|
10615
|
+
simo/generic/controllers.py,sha256=32Ze1bD-JiIRJBjR_aSmbhCh3-M-6YBdyH7bFY8VKa4,49883
|
|
10616
|
+
simo/generic/forms.py,sha256=0RIDtLLzCkiSb9OxlioicOQW9yp1OjLKekpjbxzGVfM,26272
|
|
10611
10617
|
simo/generic/gateways.py,sha256=oJ4VLaL0nMB6hnTMEpZasc4OTf8m1HWRWJMhUjHbeIU,19447
|
|
10612
10618
|
simo/generic/models.py,sha256=59fkYowOX0imviIhA6uwupvuharrpBykmBm674rJNoI,7279
|
|
10613
10619
|
simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
|
|
@@ -10619,9 +10625,9 @@ simo/generic/__pycache__/app_widgets.cpython-312.pyc,sha256=ywoKk91YSEZxpyt9haG5
|
|
|
10619
10625
|
simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=D9b13pbMlirgHmjDnQhfLIDGSVINoSouHb4SWOeCRrs,1642
|
|
10620
10626
|
simo/generic/__pycache__/base_types.cpython-312.pyc,sha256=h8Mwu49i-zmwTbL33JaLJfRDGOgkQh2_VqrfzEc4UQ4,616
|
|
10621
10627
|
simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
|
|
10622
|
-
simo/generic/__pycache__/controllers.cpython-312.pyc,sha256=
|
|
10628
|
+
simo/generic/__pycache__/controllers.cpython-312.pyc,sha256=vElV3V6zJDo93KdQP3t_f7jrvLIAC3c03tGEre48x44,55873
|
|
10623
10629
|
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=jJjwKVaDYyazrRGNjUFoY74nr_jX_DEnsC9KjyxZCgc,30427
|
|
10624
|
-
simo/generic/__pycache__/forms.cpython-312.pyc,sha256=
|
|
10630
|
+
simo/generic/__pycache__/forms.cpython-312.pyc,sha256=5Vo10Zjyum-SYqieE3e7UInX6B90NQu1ex-ne7kVG70,34676
|
|
10625
10631
|
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=k8lz3taXdWAg5P9jcnw66mWH51pCc4SOsg32kVEtBCg,19416
|
|
10626
10632
|
simo/generic/__pycache__/gateways.cpython-312.pyc,sha256=lg1j7spkhmGa5f4C49EKRXHHM2BrOJralhrsKXIsdYA,23196
|
|
10627
10633
|
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=GIeMT51oZU2OCFD4eUDFdSRRYE0Qf14AcOr_gdUqG94,12705
|
|
@@ -10753,7 +10759,7 @@ simo/notifications/migrations/__pycache__/0003_alter_notification_instance.cpyth
|
|
|
10753
10759
|
simo/notifications/migrations/__pycache__/__init__.cpython-312.pyc,sha256=YMFc4QmWMnjT1vpATl4nnj80m2oJehTlDRl0SvYeR3A,184
|
|
10754
10760
|
simo/notifications/migrations/__pycache__/__init__.cpython-38.pyc,sha256=YMBRHVon2nWDtIUbghckjnC12sIg_ykPWhV5aM0tto4,178
|
|
10755
10761
|
simo/users/__init__.py,sha256=6a7uBpCWB_DR7p54rbHusc0xvi1qfT1ZCCQGb6TiBh8,52
|
|
10756
|
-
simo/users/admin.py,sha256=
|
|
10762
|
+
simo/users/admin.py,sha256=DVXDfq8ssauNA7-H6sj89UlsfbOvJldpveNSAaYIVPY,7515
|
|
10757
10763
|
simo/users/api.py,sha256=7LXVAsCuheS4k8JtkORNXFGh6bb1jR4QPZknuS12nzw,15136
|
|
10758
10764
|
simo/users/apps.py,sha256=cq0A8-U1HALEwev0TicgFhr4CAu7Icz8rwq0HfOaL4E,207
|
|
10759
10765
|
simo/users/auth_backends.py,sha256=HxRp9iFvU1KqUhE7pA9YKEjqtBCJDbDqk_UMCD2Dwww,4361
|
|
@@ -10761,7 +10767,7 @@ simo/users/auto_urls.py,sha256=RSUW3ai5LbMTknS8M7M5aOnG_YlFOVQrnNVNH-fkwlg,357
|
|
|
10761
10767
|
simo/users/dynamic_settings.py,sha256=yDtjpcEKA5uS2fcma6e-Zznh2iyMT3x8N7aRqNCtzSM,569
|
|
10762
10768
|
simo/users/managers.py,sha256=OHgEP85MBtdkdYxdstBd8RavTBT8F_2WyDxUJ9aCqqM,246
|
|
10763
10769
|
simo/users/middleware.py,sha256=tNPmnzo0eTrJ25SLHP7NotqYKI2cKnmv8hf6v5DLOWo,427
|
|
10764
|
-
simo/users/models.py,sha256=
|
|
10770
|
+
simo/users/models.py,sha256=2bnUEFM1UqwWntBOTnoYwzWRMr0KsQEv6HTHGo9VdxE,20679
|
|
10765
10771
|
simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
|
|
10766
10772
|
simo/users/serializers.py,sha256=Uy5JsZp6nEGNMuK9HgLbA0KJdsbjG8GDIyF7z7Ue_so,2610
|
|
10767
10773
|
simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
|
|
@@ -10771,7 +10777,7 @@ simo/users/utils.py,sha256=vR5SlWdMKkMgNZdJXUI14pASVue8WMqJSQpVKruX25I,2305
|
|
|
10771
10777
|
simo/users/views.py,sha256=iIfv8DqNztzBB3fiZcnHOyzp4eFtjrC-gCv5rBX3XsQ,4136
|
|
10772
10778
|
simo/users/__pycache__/__init__.cpython-312.pyc,sha256=n0GE5zxjujBUkv1t1CswZ9GbybW478_oY8d_wQJ44N8,223
|
|
10773
10779
|
simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
|
|
10774
|
-
simo/users/__pycache__/admin.cpython-312.pyc,sha256=
|
|
10780
|
+
simo/users/__pycache__/admin.cpython-312.pyc,sha256=AAGwpZ603YYkCXM-Z-LrUykyexy0xJg3iOZE1BSI1G8,11488
|
|
10775
10781
|
simo/users/__pycache__/admin.cpython-38.pyc,sha256=uL8TwAipkatZxanvQtBKKcOv8Fm3UvinBxsP0okrOZg,8443
|
|
10776
10782
|
simo/users/__pycache__/api.cpython-312.pyc,sha256=O7mRDdbpqakFJf37mROWy2xv-4bUzLW8FOUmzzE3Hcg,19469
|
|
10777
10783
|
simo/users/__pycache__/api.cpython-38.pyc,sha256=zZ4DfNktgeVvLAtMpaPUv7AoAgbKr7SCt-4ghJk1zp4,10386
|
|
@@ -10787,7 +10793,7 @@ simo/users/__pycache__/managers.cpython-312.pyc,sha256=A9-yF1dilDc1H_-BtrIw9USpH
|
|
|
10787
10793
|
simo/users/__pycache__/managers.cpython-38.pyc,sha256=O0Y8ABp42RAosrbODmYsPMaj9AyOPyJ-aqzuO0Qpi2s,679
|
|
10788
10794
|
simo/users/__pycache__/middleware.cpython-312.pyc,sha256=9pkiIkMriu0ExLK479hyPfaN-DOfp6WErqQlrZY1Mvk,927
|
|
10789
10795
|
simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
|
|
10790
|
-
simo/users/__pycache__/models.cpython-312.pyc,sha256=
|
|
10796
|
+
simo/users/__pycache__/models.cpython-312.pyc,sha256=fsFyN_a9-dIPd-7kiH-Ncb5sLzdXyCmRme67aMZcabo,29697
|
|
10791
10797
|
simo/users/__pycache__/models.cpython-38.pyc,sha256=qNtAn_eWVmRTWhTxN8GtCc549dcJsTdaF7Uk19yNMgg,18330
|
|
10792
10798
|
simo/users/__pycache__/permissions.cpython-312.pyc,sha256=NCaxeIz4qmG_mF18lKTYXqOSUvJkFLnUZjfYIQFUCkU,718
|
|
10793
10799
|
simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
|
|
@@ -10846,6 +10852,7 @@ simo/users/migrations/0040_userdevicereportlog_location_smoothed_and_more.py,sha
|
|
|
10846
10852
|
simo/users/migrations/0041_userdevicereportlog_speed_kmh_received.py,sha256=WoJ-ImX1lNIl7CKO_HMt3jbFjoenFGBUm9HZWidb-eA,433
|
|
10847
10853
|
simo/users/migrations/0042_remove_userdevicereportlog_location_smoothed_and_more.py,sha256=p-GFu6qjkxqeA0TI8aaIum0k6fQfc39RIKbfGPSf0Yk,499
|
|
10848
10854
|
simo/users/migrations/0043_userdevicereportlog_avg_speed_kmh.py,sha256=DheQR-GsGMwNkya3rWHp6pOrNz7-ljnsbcU4e_7AVuE,435
|
|
10855
|
+
simo/users/migrations/0044_permissionsrole_is_person.py,sha256=PRNplM8TZRkOsnE1tESeotQrBC64VvPAI77HeVhpNOc,492
|
|
10849
10856
|
simo/users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10850
10857
|
simo/users/migrations/__pycache__/0001_initial.cpython-312.pyc,sha256=6ezqZjScZKR1CrY0_nwL2RDsrTr1dydlQ963BuaOptI,8299
|
|
10851
10858
|
simo/users/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=e4XOKaYRb7l0P7cBnHHi5FQQJMlwjK0g7iqgM-xKmNI,4215
|
|
@@ -10935,6 +10942,7 @@ simo/users/migrations/__pycache__/0042_remove_userdevicereportlog_location_smoot
|
|
|
10935
10942
|
simo/users/migrations/__pycache__/0042_remove_userdevicereportlog_location_smoothed_and_more.cpython-38.pyc,sha256=sSnWjU7rg5LXlRCxUFb_m2lUIcB4EHgtAnl-C9MMJvE,656
|
|
10936
10943
|
simo/users/migrations/__pycache__/0043_userdevicereportlog_avg_speed_kmh.cpython-312.pyc,sha256=EStpvcDPAu_hZlFk3mc7bIVXDUGzA9Ccd4kGQmWcQ1c,823
|
|
10937
10944
|
simo/users/migrations/__pycache__/0043_userdevicereportlog_avg_speed_kmh.cpython-38.pyc,sha256=ZkXpVQtjfMoX4WF5N8rioCVv77mNNGhu9g50EQEf03w,673
|
|
10945
|
+
simo/users/migrations/__pycache__/0044_permissionsrole_is_person.cpython-312.pyc,sha256=WZxQyUyiXp7yKvWm90S7A7Zr3-oBk6_IDQsTazgBxAs,874
|
|
10938
10946
|
simo/users/migrations/__pycache__/__init__.cpython-312.pyc,sha256=B_XwMs2L0W7Bdjl6bs-Rl8iTxqzeRwrf3qcNBlMjIm8,176
|
|
10939
10947
|
simo/users/migrations/__pycache__/__init__.cpython-38.pyc,sha256=NKq7WLgktK8WV1oOqCPbAbdkrPV5GRGhYx4VxxI4dcs,170
|
|
10940
10948
|
simo/users/templates/conf/mosquitto.conf,sha256=1eIGNuRu4Y3hfAU6qiWix648eCRrw0oOT24PnyFI4ys,189
|
|
@@ -10945,9 +10953,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10945
10953
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10946
10954
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10947
10955
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10948
|
-
simo-2.10.
|
|
10949
|
-
simo-2.10.
|
|
10950
|
-
simo-2.10.
|
|
10951
|
-
simo-2.10.
|
|
10952
|
-
simo-2.10.
|
|
10953
|
-
simo-2.10.
|
|
10956
|
+
simo-2.10.7.dist-info/licenses/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10957
|
+
simo-2.10.7.dist-info/METADATA,sha256=qzJYhEXss-jHwmug0L1jRXuDn0WrAE1P1Sz6E1ZWFUc,2028
|
|
10958
|
+
simo-2.10.7.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
10959
|
+
simo-2.10.7.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
|
|
10960
|
+
simo-2.10.7.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10961
|
+
simo-2.10.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|