simo 2.0.33__py3-none-any.whl → 2.0.34__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/core/__pycache__/api.cpython-38.pyc +0 -0
- simo/core/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/core/__pycache__/forms.cpython-38.pyc +0 -0
- simo/core/__pycache__/models.cpython-38.pyc +0 -0
- simo/core/__pycache__/serializers.cpython-38.pyc +0 -0
- simo/core/api.py +21 -2
- simo/core/controllers.py +3 -0
- simo/core/forms.py +1 -0
- simo/core/migrations/0036_auto_20240521_0823.py +22 -0
- simo/core/migrations/__pycache__/0036_auto_20240521_0823.cpython-38.pyc +0 -0
- simo/core/models.py +1 -3
- simo/core/serializers.py +7 -6
- simo/core/tasks.py +1 -1
- simo/fleet/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/fleet/__pycache__/forms.cpython-38.pyc +0 -0
- simo/fleet/controllers.py +18 -2
- simo/fleet/forms.py +23 -2
- simo/fleet/models.py +2 -1
- {simo-2.0.33.dist-info → simo-2.0.34.dist-info}/METADATA +1 -1
- {simo-2.0.33.dist-info → simo-2.0.34.dist-info}/RECORD +23 -21
- {simo-2.0.33.dist-info → simo-2.0.34.dist-info}/LICENSE.md +0 -0
- {simo-2.0.33.dist-info → simo-2.0.34.dist-info}/WHEEL +0 -0
- {simo-2.0.33.dist-info → simo-2.0.34.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/core/api.py
CHANGED
|
@@ -580,10 +580,20 @@ class StatesViewSet(InstanceMixin, viewsets.GenericViewSet):
|
|
|
580
580
|
vals['last_modified']
|
|
581
581
|
)
|
|
582
582
|
|
|
583
|
+
categories = Category.objects.filter(instance=self.instance).values(
|
|
584
|
+
'id', 'last_modified'
|
|
585
|
+
)
|
|
586
|
+
for cat in categories:
|
|
587
|
+
cat['last_modified'] = datetime.datetime.timestamp(
|
|
588
|
+
cat['last_modified']
|
|
589
|
+
)
|
|
590
|
+
|
|
591
|
+
|
|
583
592
|
return RESTResponse({
|
|
584
593
|
'zones': Zone.objects.filter(instance=self.instance).values(
|
|
585
594
|
'id', 'name'
|
|
586
595
|
),
|
|
596
|
+
'categories': categories,
|
|
587
597
|
'component_values': component_values,
|
|
588
598
|
'users': UserSerializer(
|
|
589
599
|
users_qs, many=True, context={
|
|
@@ -614,7 +624,8 @@ class ControllerTypes(InstanceMixin, viewsets.GenericViewSet):
|
|
|
614
624
|
'uid': uid,
|
|
615
625
|
'name': cls.name,
|
|
616
626
|
'is_discoverable': cls.is_discoverable,
|
|
617
|
-
'manual_add': cls.manual_add
|
|
627
|
+
'manual_add': cls.manual_add,
|
|
628
|
+
'discovery_msg': cls.discovery_msg
|
|
618
629
|
})
|
|
619
630
|
|
|
620
631
|
return RESTResponse(data)
|
|
@@ -657,10 +668,18 @@ class RunningDiscoveries(InstanceMixin, viewsets.GenericViewSet):
|
|
|
657
668
|
def list(self, request, *args, **kwargs):
|
|
658
669
|
return RESTResponse(self.get_data(self.get_gateways(request)))
|
|
659
670
|
|
|
660
|
-
@action(detail=False, methods=['get'])
|
|
671
|
+
@action(detail=False, methods=['get', 'post'])
|
|
661
672
|
def retry(self, request, *args, **kwargs):
|
|
662
673
|
gateways = self.get_gateways(request)
|
|
663
674
|
if 'controller_uid' in request.GET:
|
|
664
675
|
for gateway in gateways:
|
|
665
676
|
gateway.retry_discovery()
|
|
677
|
+
return RESTResponse(self.get_data(gateways))
|
|
678
|
+
|
|
679
|
+
@action(detail=False, methods=['get', 'post'])
|
|
680
|
+
def finish(self, request, *args, **kwargs):
|
|
681
|
+
gateways = self.get_gateways(request)
|
|
682
|
+
if 'controller_uid' in request.GET:
|
|
683
|
+
for gateway in gateways:
|
|
684
|
+
gateway.finish_discovery()
|
|
666
685
|
return RESTResponse(self.get_data(gateways))
|
simo/core/controllers.py
CHANGED
|
@@ -33,6 +33,7 @@ class ControllerBase(ABC):
|
|
|
33
33
|
admin_widget_template = 'admin/controller_widgets/generic.html'
|
|
34
34
|
default_config = {}
|
|
35
35
|
default_meta = {}
|
|
36
|
+
default_value_units = None
|
|
36
37
|
discovery_msg = None
|
|
37
38
|
manual_add = True # Can be added manually
|
|
38
39
|
family = None
|
|
@@ -468,6 +469,7 @@ class Dimmer(ControllerBase, TimerMixin, OnOffPokerMixin):
|
|
|
468
469
|
admin_widget_template = 'admin/controller_widgets/knob.html'
|
|
469
470
|
default_config = {'min': 0.0, 'max': 100.0, 'inverse': False}
|
|
470
471
|
default_value = 0
|
|
472
|
+
default_value_units = '%'
|
|
471
473
|
|
|
472
474
|
def _prepare_for_send(self, value):
|
|
473
475
|
if isinstance(value, bool):
|
|
@@ -761,6 +763,7 @@ class Lock(Switch):
|
|
|
761
763
|
base_type = 'lock'
|
|
762
764
|
app_widget = LockWidget
|
|
763
765
|
admin_widget_template = 'admin/controller_widgets/lock.html'
|
|
766
|
+
default_value = 'unlocked'
|
|
764
767
|
|
|
765
768
|
UNLOCKED = 0
|
|
766
769
|
LOCKED = 1
|
simo/core/forms.py
CHANGED
|
@@ -323,6 +323,7 @@ class ComponentAdminForm(forms.ModelForm):
|
|
|
323
323
|
self.instance.controller_uid = ControllerClass.uid
|
|
324
324
|
self.instance.base_type = self.controller.base_type
|
|
325
325
|
self.instance.value = self.controller.default_value
|
|
326
|
+
self.instance.value_units = self.controller.default_value_units
|
|
326
327
|
self.instance.value_previous = self.controller.default_value
|
|
327
328
|
self.instance.config = self.controller.default_config
|
|
328
329
|
self.instance.meta = self.controller.default_meta
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Generated by Django 3.2.9 on 2024-05-21 08:23
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('core', '0035_remove_instance_share_location'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.RemoveField(
|
|
14
|
+
model_name='category',
|
|
15
|
+
name='header_image_last_change',
|
|
16
|
+
),
|
|
17
|
+
migrations.AddField(
|
|
18
|
+
model_name='category',
|
|
19
|
+
name='last_modified',
|
|
20
|
+
field=models.DateTimeField(auto_now=True),
|
|
21
|
+
),
|
|
22
|
+
]
|
|
Binary file
|
simo/core/models.py
CHANGED
|
@@ -141,13 +141,11 @@ class Category(DirtyFieldsMixin, models.Model, SimoAdminMixin):
|
|
|
141
141
|
upload_to='categories', null=True, blank=True,
|
|
142
142
|
help_text="Will be cropped down to: 830x430"
|
|
143
143
|
)
|
|
144
|
-
header_image_last_change = models.DateTimeField(
|
|
145
|
-
auto_now_add=True, editable=False
|
|
146
|
-
)
|
|
147
144
|
all = models.BooleanField(
|
|
148
145
|
default=False,
|
|
149
146
|
help_text=_("All components automatically belongs to this category")
|
|
150
147
|
)
|
|
148
|
+
last_modified = models.DateTimeField(auto_now=True, editable=False)
|
|
151
149
|
order = models.PositiveIntegerField(
|
|
152
150
|
blank=False, null=False, db_index=True
|
|
153
151
|
)
|
simo/core/serializers.py
CHANGED
|
@@ -34,7 +34,7 @@ class TimestampField(serializers.Field):
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class IconSerializer(serializers.ModelSerializer):
|
|
37
|
-
last_modified = TimestampField()
|
|
37
|
+
last_modified = TimestampField(read_only=True)
|
|
38
38
|
|
|
39
39
|
class Meta:
|
|
40
40
|
model = Icon
|
|
@@ -43,13 +43,17 @@ class IconSerializer(serializers.ModelSerializer):
|
|
|
43
43
|
|
|
44
44
|
class CategorySerializer(serializers.ModelSerializer):
|
|
45
45
|
header_image_thumb = serializers.SerializerMethodField()
|
|
46
|
+
last_modified = TimestampField(read_only=True)
|
|
46
47
|
|
|
47
48
|
class Meta:
|
|
48
49
|
model = Category
|
|
49
50
|
fields = (
|
|
50
|
-
'id', 'name', 'all', 'icon',
|
|
51
|
+
'id', 'name', 'all', 'icon',
|
|
52
|
+
'header_image', 'header_image_thumb',
|
|
53
|
+
'last_modified'
|
|
51
54
|
)
|
|
52
55
|
|
|
56
|
+
|
|
53
57
|
def get_header_image_thumb(self, obj):
|
|
54
58
|
if obj.header_image:
|
|
55
59
|
thumbnailer = get_thumbnailer(obj.header_image.path)
|
|
@@ -60,10 +64,7 @@ class CategorySerializer(serializers.ModelSerializer):
|
|
|
60
64
|
request = get_current_request()
|
|
61
65
|
if request:
|
|
62
66
|
url = request.build_absolute_uri(url)
|
|
63
|
-
return
|
|
64
|
-
'url': url,
|
|
65
|
-
'last_change': obj.header_image_last_change.timestamp()
|
|
66
|
-
}
|
|
67
|
+
return url
|
|
67
68
|
return
|
|
68
69
|
|
|
69
70
|
|
simo/core/tasks.py
CHANGED
|
Binary file
|
|
Binary file
|
simo/fleet/controllers.py
CHANGED
|
@@ -25,7 +25,8 @@ from .forms import (
|
|
|
25
25
|
ColonelDHTSensorConfigForm, DS18B20SensorConfigForm,
|
|
26
26
|
BME680SensorConfigForm, MPC9808SensorConfigForm,
|
|
27
27
|
DualMotorValveForm, BlindsConfigForm, BurglarSmokeDetectorConfigForm,
|
|
28
|
-
TTLockConfigForm, DALIDeviceConfigForm, DaliLampForm, DaliGearGroupForm
|
|
28
|
+
TTLockConfigForm, DALIDeviceConfigForm, DaliLampForm, DaliGearGroupForm,
|
|
29
|
+
DaliOccupancySensorConfigForm, DALILightSensorConfigForm
|
|
29
30
|
)
|
|
30
31
|
|
|
31
32
|
|
|
@@ -633,4 +634,19 @@ class DALIGearGroup(FleeDeviceMixin, BaseDimmer):
|
|
|
633
634
|
class DALIRelay(BaseSwitch, DALIDevice):
|
|
634
635
|
family = 'dali'
|
|
635
636
|
manual_add = False
|
|
636
|
-
name = 'DALI Relay'
|
|
637
|
+
name = 'DALI Relay'
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
class DALIOccupancySensor(BaseBinarySensor, DALIDevice):
|
|
641
|
+
family = 'dali'
|
|
642
|
+
manual_add = False
|
|
643
|
+
name = 'DALI Occupancy Sensor'
|
|
644
|
+
config_form = DaliOccupancySensorConfigForm
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
class DALILightSensor(BaseNumericSensor, DALIDevice):
|
|
648
|
+
family = 'dali'
|
|
649
|
+
manual_add = False
|
|
650
|
+
name = 'DALI Light Sensor'
|
|
651
|
+
default_value_units = 'lux'
|
|
652
|
+
config_form = DALILightSensorConfigForm
|
simo/fleet/forms.py
CHANGED
|
@@ -1073,7 +1073,7 @@ class DaliLampForm(DALIDeviceConfigForm, BaseComponentForm):
|
|
|
1073
1073
|
help_text="Update device config on colonel boot."
|
|
1074
1074
|
)
|
|
1075
1075
|
fade_time = forms.TypedChoiceField(
|
|
1076
|
-
initial=3, choices=(
|
|
1076
|
+
initial=3, coerce=int, choices=(
|
|
1077
1077
|
(1, "0.7 s"), (2, "1.0 s"), (3, "1.4 s"), (4, "2.0 s"), (5, "2.8 s"),
|
|
1078
1078
|
(6, "4.0 s"), (7, "5.7 s"), (8, "8.0 s")
|
|
1079
1079
|
)
|
|
@@ -1185,4 +1185,25 @@ class DaliGearGroupForm(DALIDeviceConfigForm, BaseComponentForm):
|
|
|
1185
1185
|
obj.controller._get_colonel_config()
|
|
1186
1186
|
]
|
|
1187
1187
|
).publish()
|
|
1188
|
-
return obj
|
|
1188
|
+
return obj
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
class DaliOccupancySensorConfigForm(DALIDeviceConfigForm, BaseComponentForm):
|
|
1192
|
+
boot_update = forms.BooleanField(
|
|
1193
|
+
initial=False, required=False,
|
|
1194
|
+
help_text="Update device config on colonel boot."
|
|
1195
|
+
)
|
|
1196
|
+
hold_time = forms.TypedChoiceField(
|
|
1197
|
+
initial=3, coerce=int, choices=(
|
|
1198
|
+
(1, "10 s"), (2, "20 s"), (3, "30 s"), (4, "40 s"), (5, "50 s"),
|
|
1199
|
+
(6, "1 min"), (9, "1.5 min"), (12, "2 min"), (18, "3 min"),
|
|
1200
|
+
(30, "5 min"), (60, "10 min"), (120, "20 min"),
|
|
1201
|
+
)
|
|
1202
|
+
)
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
class DALILightSensorConfigForm(DALIDeviceConfigForm, BaseComponentForm):
|
|
1206
|
+
boot_update = forms.BooleanField(
|
|
1207
|
+
initial=False, required=False,
|
|
1208
|
+
help_text="Update device config on colonel boot."
|
|
1209
|
+
)
|
simo/fleet/models.py
CHANGED
|
@@ -262,7 +262,8 @@ def after_colonel_save(sender, instance, created, *args, **kwargs):
|
|
|
262
262
|
fleet_gateway, new = Gateway.objects.get_or_create(
|
|
263
263
|
type='simo.fleet.gateways.FleetGatewayHandler'
|
|
264
264
|
)
|
|
265
|
-
fleet_gateway.
|
|
265
|
+
if fleet_gateway.status != 'running':
|
|
266
|
+
fleet_gateway.start()
|
|
266
267
|
|
|
267
268
|
|
|
268
269
|
@receiver(pre_delete, sender=Component)
|
|
@@ -26,7 +26,7 @@ simo/_hub_template/hub/supervisor.conf,sha256=IY3fdK0fDD2eAothB0n54xhjQj8LYoXIR9
|
|
|
26
26
|
simo/_hub_template/hub/urls.py,sha256=Ydm-1BkYAzWeEF-MKSDIFf-7aE4qNLPm48-SA51XgJQ,25
|
|
27
27
|
simo/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
simo/core/admin.py,sha256=xVMFl1MvQ-THwrnAVSvIkhbfbIIc4r_dDGEkpkRoSBk,17751
|
|
29
|
-
simo/core/api.py,sha256=
|
|
29
|
+
simo/core/api.py,sha256=HmuMTAo9vLWMBV8K6r-86IrmaCKHY94hjbyoyIPPXTM,25135
|
|
30
30
|
simo/core/api_auth.py,sha256=_3hG4e1eLKrcRnSAOB_xTL6cwtOJ2_7JS7GZU_iqTgA,1251
|
|
31
31
|
simo/core/api_meta.py,sha256=ySmmhtVrWatI3yqnYPuP5ipapmJfyfEbl32w-7_W5O4,3551
|
|
32
32
|
simo/core/app_widgets.py,sha256=EEQOto3fGR0syDqpJE38tQrx8DoTTyg26nF5kYzHY38,2018
|
|
@@ -34,30 +34,30 @@ simo/core/auto_urls.py,sha256=0gu-IL7PHobrmKW6ksffiOkAYu-aIorykWdxRNtwGYo,1194
|
|
|
34
34
|
simo/core/autocomplete_views.py,sha256=JT5LA2_Wtr60XYSAIqaXFKFYPjrmkEf6yunXD9y2zco,4022
|
|
35
35
|
simo/core/base_types.py,sha256=yqbIZqBksrAkEuHRbt6iExwPDDy0K5II2NzRCkmOvMU,589
|
|
36
36
|
simo/core/context.py,sha256=98PXAMie43faRVBFkOG22uNpvGRNprcGhzjBFkrxaRY,1367
|
|
37
|
-
simo/core/controllers.py,sha256=
|
|
37
|
+
simo/core/controllers.py,sha256=Z_sXPaehJcOS8Zz1UZZ2n7-1cjx3_B9dVjHBQHgjtTc,27281
|
|
38
38
|
simo/core/dynamic_settings.py,sha256=U2WNL96JzVXdZh0EqMPWrxqO6BaRR2Eo5KTDqz7MC4o,1943
|
|
39
39
|
simo/core/events.py,sha256=LvtonJGNyCb6HLozs4EG0WZItnDwNdtnGQ4vTcnKvUs,4438
|
|
40
40
|
simo/core/filters.py,sha256=ghtOZcrwNAkIyF5_G9Sn73NkiI71mXv0NhwCk4IyMIM,411
|
|
41
|
-
simo/core/forms.py,sha256=
|
|
41
|
+
simo/core/forms.py,sha256=VoNKoLDR7AAJWHiEUTT8tYcNoVwZh4XxX1-lZEoRzpI,23688
|
|
42
42
|
simo/core/gateways.py,sha256=s_c2W0v2_te89i6LS4Nj7F2wn9UwjZXPT7pfy6SToVo,3714
|
|
43
43
|
simo/core/loggers.py,sha256=EBdq23gTQScVfQVH-xeP90-wII2DQFDjoROAW6ggUP4,1645
|
|
44
44
|
simo/core/managers.py,sha256=Qdg2-Qh4dLbW0A5Dmtnpct6CUhEuuvdbIskBijQxopU,2360
|
|
45
45
|
simo/core/middleware.py,sha256=pO52hQOJV_JRmNyUe7zfufSnJFlRITOWX6jwkoPWJhk,2052
|
|
46
|
-
simo/core/models.py,sha256=
|
|
46
|
+
simo/core/models.py,sha256=W5rShDy8l6GQzTRFiBZFAuibe_fg_LRwSNk973mv_m8,20134
|
|
47
47
|
simo/core/permissions.py,sha256=yqVXq6SNZccSKcOoGdb0oh-WHsyTTtI9ovJdJyhjv28,2707
|
|
48
48
|
simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
|
|
49
|
-
simo/core/serializers.py,sha256=
|
|
49
|
+
simo/core/serializers.py,sha256=dbQ78K9ePBChFPjJHXGj8BkqXQfIFcfFpOtcupGUuz8,18337
|
|
50
50
|
simo/core/signal_receivers.py,sha256=C6Jk7wVEtyo4hwcrU7L0ijtpK0wce2MNwpyBgSfSJ-U,5467
|
|
51
51
|
simo/core/socket_consumers.py,sha256=n7VE2Fvqt4iEAYLTRbTPOcI-7tszMAADu7gimBxB-Fg,9635
|
|
52
52
|
simo/core/storage.py,sha256=YlxmdRs-zhShWtFKgpJ0qp2NDBuIkJGYC1OJzqkbttQ,572
|
|
53
|
-
simo/core/tasks.py,sha256=
|
|
53
|
+
simo/core/tasks.py,sha256=jwH5WiDizCeMTvFwB9MWAI3CEBzlqS3cxwamZeLgrm0,12266
|
|
54
54
|
simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
|
|
55
55
|
simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
|
|
56
56
|
simo/core/views.py,sha256=hlAKpAbCbqI3a-uL5tDp532T2oLFiF0MBzKUJ_SNzo0,5833
|
|
57
57
|
simo/core/widgets.py,sha256=J9e06C6I22F6xKic3VMgG7WeX07glAcl-4bF2Mg180A,2827
|
|
58
58
|
simo/core/__pycache__/__init__.cpython-38.pyc,sha256=y0IW37wBUIGa3Eh_ZG28pRqHKoLiPyTgUX2OnbkEPlc,158
|
|
59
59
|
simo/core/__pycache__/admin.cpython-38.pyc,sha256=1OisxqtyWMbzpgeeu5vtBW3gp3Nts4Ei4ff1P-SPpq4,13545
|
|
60
|
-
simo/core/__pycache__/api.cpython-38.pyc,sha256=
|
|
60
|
+
simo/core/__pycache__/api.cpython-38.pyc,sha256=RsMxUiiMEEXsSh2fBbrkjsIUOKUy81dmN9_20SB7CR8,19942
|
|
61
61
|
simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=5UTBr3rDMERAfc0OuOVDwGeQkt6Q7GLBtZJAMBse1sg,1712
|
|
62
62
|
simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=94T3_rybn2T1_bkaDQnQRyjy21LBaGOnz-mmkJ6T0N8,2840
|
|
63
63
|
simo/core/__pycache__/app_widgets.cpython-38.pyc,sha256=9Es2wZNduzUJv-jZ_HX0-L3vqwpXWBbseEwoC5K6b-w,3465
|
|
@@ -65,19 +65,19 @@ simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=SVl4fF0-yiq7e9gt08jIM6_rL4
|
|
|
65
65
|
simo/core/__pycache__/autocomplete_views.cpython-38.pyc,sha256=hJ6JILI1LqrAtpQMvxnLvljGdW1v1gpvBsD79vFkZ58,3972
|
|
66
66
|
simo/core/__pycache__/base_types.cpython-38.pyc,sha256=CasZJN42cK_ymoQgn5E4s8oOkuZJ18fVHCgN4GPuT7c,735
|
|
67
67
|
simo/core/__pycache__/context.cpython-38.pyc,sha256=MSZPDhqMhCpUuBJl3HCIBHZA3BntYeP8RAnQcdqAH9k,1278
|
|
68
|
-
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
68
|
+
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=HX7XcVpmNkqM8gVnWru43nmrkR5B9tlgWdZrosCaRjE,23978
|
|
69
69
|
simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=ELu06Hub4DOidja71ybvD3ZM4HdXiyZjNJrZfnXZXNA,2476
|
|
70
70
|
simo/core/__pycache__/events.cpython-38.pyc,sha256=A1Axx-qftd1r7st7wkO3DkvTdt9-RkcJe5KJhpzJVk8,5109
|
|
71
71
|
simo/core/__pycache__/filters.cpython-38.pyc,sha256=VIMADCBiYhziIyRmxAyUDJluZvuZmiC4bNYWTRsGSao,721
|
|
72
|
-
simo/core/__pycache__/forms.cpython-38.pyc,sha256=
|
|
72
|
+
simo/core/__pycache__/forms.cpython-38.pyc,sha256=69AqXKv_0SgFX_m6PCC1VdBEGjgGz-kkBTCaxIQZ0t0,19936
|
|
73
73
|
simo/core/__pycache__/gateways.cpython-38.pyc,sha256=XBiwMfBkjoQ2re6jvADJOwK0_0Aav-crzie9qtfqT9U,4599
|
|
74
74
|
simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NMEdPAiHK0cFaIL7I8,1623
|
|
75
75
|
simo/core/__pycache__/managers.cpython-38.pyc,sha256=ObkzRjSOs2UQmjwFWDvZHreNzc_P5k7dVA_f7L7S7Q4,2529
|
|
76
76
|
simo/core/__pycache__/middleware.cpython-38.pyc,sha256=ESR5JPtITo9flczO0672sfzYUxrc_cQU0e0w5DFL-60,2038
|
|
77
|
-
simo/core/__pycache__/models.cpython-38.pyc,sha256=
|
|
77
|
+
simo/core/__pycache__/models.cpython-38.pyc,sha256=UNX6Btm5ZnpLzSCWgevQnSYzAyDWttA2Ivy7CGPu8DU,17288
|
|
78
78
|
simo/core/__pycache__/permissions.cpython-38.pyc,sha256=flJOCh94U8mFhE0XWzUD0sGR6Xe1HlfG4hQtNSnAGZ4,2788
|
|
79
79
|
simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
|
|
80
|
-
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=
|
|
80
|
+
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=ltj2lqyqt2ctV6svTQ_VkTmq_aOx8iPhTdu5QQhScdk,17213
|
|
81
81
|
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=UcKT8RK_14CI-JEWfplnIxskmWec_w5-gqKUXITLDA4,4323
|
|
82
82
|
simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=NJUr7nRyHFvmAumxxWpsod5wzVVZM99rCEuJs1utHA4,8432
|
|
83
83
|
simo/core/__pycache__/storage.cpython-38.pyc,sha256=BTkYH8QQyjqI0WOtJC8fHNtgu0YA1vjqZclXjC2vCVI,1116
|
|
@@ -177,6 +177,7 @@ simo/core/migrations/0032_auto_20240506_0834.py,sha256=w-dXSZVYZD0B6pRmMXLy27Y2t
|
|
|
177
177
|
simo/core/migrations/0033_auto_20240509_0821.py,sha256=lao8AaCr4WrrXlRxdRmWBbC4sk2-zs1kCuBxbRN0mog,793
|
|
178
178
|
simo/core/migrations/0034_component_error_msg.py,sha256=Ag45Ib_8fCLRLKatXqfiSzqnx-IWBQ3wBUpzaV5bAFg,411
|
|
179
179
|
simo/core/migrations/0035_remove_instance_share_location.py,sha256=PeofRnw_INwN14JS3hkmbJRkxEvZ5LFrdF3XJ7UqixA,336
|
|
180
|
+
simo/core/migrations/0036_auto_20240521_0823.py,sha256=dDgrcSGjONisbEGTfGYS-AaycI8XbHLf5aL2cbFHAwk,529
|
|
180
181
|
simo/core/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
181
182
|
simo/core/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=w6GiBXVxWj30Bg4Sn_pFVeA041d-pCrkaq8mR3KuF70,5381
|
|
182
183
|
simo/core/migrations/__pycache__/0002_load_icons.cpython-38.pyc,sha256=Nb9RrPjVYo_RpZ5PmzoaEIWGCeVt4kicpmGiKlBrpIw,2123
|
|
@@ -213,6 +214,7 @@ simo/core/migrations/__pycache__/0032_auto_20240506_0834.cpython-38.pyc,sha256=U
|
|
|
213
214
|
simo/core/migrations/__pycache__/0033_auto_20240509_0821.cpython-38.pyc,sha256=9XEpmCp_Jt8ciKKaheJ_H7A6lyYwNXvJUbzTTEXXKOI,919
|
|
214
215
|
simo/core/migrations/__pycache__/0034_component_error_msg.cpython-38.pyc,sha256=9NBpcN_XnsUi-gyWym92ISjFCH6l4FUu5_7KiW1kVGk,622
|
|
215
216
|
simo/core/migrations/__pycache__/0035_remove_instance_share_location.cpython-38.pyc,sha256=S2gLxKMlJmiPj24MxHl4MdI7tUD9QE9c530smcYcPVU,558
|
|
217
|
+
simo/core/migrations/__pycache__/0036_auto_20240521_0823.cpython-38.pyc,sha256=iIdvU2s5UBI0guWpQWOSx7QynQ99myuK6Dqopeg7V0I,693
|
|
216
218
|
simo/core/migrations/__pycache__/__init__.cpython-38.pyc,sha256=VZmDQ57BTcebuM0KMhjiTOabgWZCBxQmSJzWZos9SO8,169
|
|
217
219
|
simo/core/static/ansi_styles.css,sha256=4ieJGrjZPKyPSago9FdB_gflHoGE1vxCHi8qVn5tY-Y,37352
|
|
218
220
|
simo/core/static/admin/Img/plus.svg,sha256=2NpSFPWqGIjpAQGFI7LDQHPKagEhYkJiJX95ufCoZaI,741
|
|
@@ -10180,11 +10182,11 @@ simo/fleet/api.py,sha256=Hxn84xI-Q77HxjINgRbjSJQOv9jii4OL20LxK0VSrS8,2499
|
|
|
10180
10182
|
simo/fleet/auto_urls.py,sha256=X04oKJWA48wFW5iXg3PPROY2KDdHn_a99orQSE28QC4,518
|
|
10181
10183
|
simo/fleet/base_types.py,sha256=wL9RVkHr0gA7HI1wZq0pruGEIgvQqpfnCL4cC3ywsvw,102
|
|
10182
10184
|
simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
|
|
10183
|
-
simo/fleet/controllers.py,sha256=
|
|
10184
|
-
simo/fleet/forms.py,sha256=
|
|
10185
|
+
simo/fleet/controllers.py,sha256=ROQWoCWLOiXX4Xh2E9ZPor1ypOibGfd7m8GItP1Si28,23172
|
|
10186
|
+
simo/fleet/forms.py,sha256=d3j_nv8uW1e3ptmaMlJZ6buOdFVKOfs6J7WyCbcKoYA,43582
|
|
10185
10187
|
simo/fleet/gateways.py,sha256=KV5i5fxXIrlK-k6zyEkk83x11GJt-ELQ0npb4Ac83cM,3693
|
|
10186
10188
|
simo/fleet/managers.py,sha256=XOpDOA9L-f_550TNSyXnJbun2EmtGz1TenVTMlUSb8E,807
|
|
10187
|
-
simo/fleet/models.py,sha256=
|
|
10189
|
+
simo/fleet/models.py,sha256=bD5AebGFCAYGXPYhTA2nK1X9KpMG4WK4zFk9OzBDoHI,15301
|
|
10188
10190
|
simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
|
|
10189
10191
|
simo/fleet/serializers.py,sha256=-16BjY_bp9VbDOYuD0V54h7r_RHpuLNkJX0SydWL9aU,2247
|
|
10190
10192
|
simo/fleet/socket_consumers.py,sha256=Mfdb3O19GvHA7aYmBzzqvkldnT_F3A6KOMBviz30lK4,17906
|
|
@@ -10197,8 +10199,8 @@ simo/fleet/__pycache__/api.cpython-38.pyc,sha256=rL9fb7cCQatyFvXyKmlNOKmxVo8vHYe
|
|
|
10197
10199
|
simo/fleet/__pycache__/auto_urls.cpython-38.pyc,sha256=SqyTuaz_kEBvx-bL46SclsZEEP5RFh6U6TGKyXDdiOE,565
|
|
10198
10200
|
simo/fleet/__pycache__/base_types.cpython-38.pyc,sha256=deyPwjpT6xZiFxBGFnj5b7R-lbdOTh2krgpJhrcGVhc,274
|
|
10199
10201
|
simo/fleet/__pycache__/ble.cpython-38.pyc,sha256=Nrof9w7cm4OlpFWHeVnmvvanh2_oF9oQ3TknJiV93-0,1267
|
|
10200
|
-
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
10201
|
-
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=
|
|
10202
|
+
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=IInB1lBX4uFj1ZDyzCJEDABPXWTMwUpKBczkoJyj4SI,19842
|
|
10203
|
+
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=aW_L2Q8y7YACrV6wlO3_JL-Id_16biEkXT_BAPnqzHg,31617
|
|
10202
10204
|
simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=YAcgTOqJbtjGI03lvEcU6keFfrwAHkObVmErYzfRvjk,3569
|
|
10203
10205
|
simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=8uz-xpUiqbGDgXIZ_XRZtFb-Tju6NGxflGg-Ee4Yo6k,1310
|
|
10204
10206
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=dQ5Fj9nXg7vgFfACzxWurhqGw8EnYa9Px7SwmGiAih4,12904
|
|
@@ -10464,8 +10466,8 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10464
10466
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10465
10467
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10466
10468
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10467
|
-
simo-2.0.
|
|
10468
|
-
simo-2.0.
|
|
10469
|
-
simo-2.0.
|
|
10470
|
-
simo-2.0.
|
|
10471
|
-
simo-2.0.
|
|
10469
|
+
simo-2.0.34.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10470
|
+
simo-2.0.34.dist-info/METADATA,sha256=aupHMz4VI42i2kPGzjG86agyXhh2e5V_Zc-FI9MLUcA,1730
|
|
10471
|
+
simo-2.0.34.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
10472
|
+
simo-2.0.34.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10473
|
+
simo-2.0.34.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|