simo 2.5.36__py3-none-any.whl → 2.5.38__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__/auto_urls.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__/permissions.cpython-38.pyc +0 -0
- simo/core/__pycache__/serializers.cpython-38.pyc +0 -0
- simo/core/__pycache__/tasks.cpython-38.pyc +0 -0
- simo/core/__pycache__/views.cpython-38.pyc +0 -0
- simo/core/api.py +8 -2
- simo/core/auto_urls.py +2 -2
- simo/core/serializers.py +5 -5
- simo/core/tasks.py +1 -1
- simo/core/templates/admin/user_tools.html +3 -3
- simo/core/views.py +9 -5
- simo/fleet/__pycache__/serializers.cpython-38.pyc +0 -0
- simo/fleet/__pycache__/socket_consumers.cpython-38.pyc +0 -0
- simo/fleet/serializers.py +9 -3
- simo/generic/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/generic/controllers.py +12 -0
- simo/generic/scripting/helpers.py +18 -0
- simo/users/__pycache__/admin.cpython-38.pyc +0 -0
- simo/users/__pycache__/api.cpython-38.pyc +0 -0
- simo/users/__pycache__/models.cpython-38.pyc +0 -0
- simo/users/admin.py +3 -2
- simo/users/api.py +22 -9
- simo/users/migrations/0043_userdevicereportlog_avg_speed_kmh.py +18 -0
- simo/users/migrations/__pycache__/0043_userdevicereportlog_avg_speed_kmh.cpython-38.pyc +0 -0
- simo/users/models.py +1 -0
- {simo-2.5.36.dist-info → simo-2.5.38.dist-info}/METADATA +1 -1
- {simo-2.5.36.dist-info → simo-2.5.38.dist-info}/RECORD +34 -32
- {simo-2.5.36.dist-info → simo-2.5.38.dist-info}/LICENSE.md +0 -0
- {simo-2.5.36.dist-info → simo-2.5.38.dist-info}/WHEEL +0 -0
- {simo-2.5.36.dist-info → simo-2.5.38.dist-info}/entry_points.txt +0 -0
- {simo-2.5.36.dist-info → simo-2.5.38.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/core/api.py
CHANGED
|
@@ -2,8 +2,7 @@ import datetime
|
|
|
2
2
|
from calendar import monthrange
|
|
3
3
|
import pytz
|
|
4
4
|
import time
|
|
5
|
-
import
|
|
6
|
-
from django.db.models import Q
|
|
5
|
+
import pkg_resources
|
|
7
6
|
from django.utils.translation import gettext_lazy as _
|
|
8
7
|
from django.utils import timezone
|
|
9
8
|
from django.http import HttpResponse, Http404
|
|
@@ -559,6 +558,11 @@ class SettingsViewSet(InstanceMixin, viewsets.GenericViewSet):
|
|
|
559
558
|
else:
|
|
560
559
|
main_state = None
|
|
561
560
|
|
|
561
|
+
try:
|
|
562
|
+
version = pkg_resources.get_distribution('simo').version
|
|
563
|
+
except:
|
|
564
|
+
version = 'dev'
|
|
565
|
+
|
|
562
566
|
return RESTResponse({
|
|
563
567
|
'hub_uid': dynamic_settings['core__hub_uid'],
|
|
564
568
|
'instance_name': self.instance.name,
|
|
@@ -577,6 +581,8 @@ class SettingsViewSet(InstanceMixin, viewsets.GenericViewSet):
|
|
|
577
581
|
'history_days': self.instance.history_days,
|
|
578
582
|
'device_report_history_days': self.instance.device_report_history_days,
|
|
579
583
|
'indoor_climate_sensor': self.instance.indoor_climate_sensor_id,
|
|
584
|
+
'version': version,
|
|
585
|
+
'new_version_available': dynamic_settings['core__latest_version_available'],
|
|
580
586
|
})
|
|
581
587
|
|
|
582
588
|
def update(self, request, *args, **kwargs):
|
simo/core/auto_urls.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from django.urls import path
|
|
2
2
|
from .views import (
|
|
3
|
-
get_timestamp,
|
|
3
|
+
get_timestamp, upgrade, restart, reboot, set_instance
|
|
4
4
|
)
|
|
5
5
|
from .autocomplete_views import (
|
|
6
6
|
IconModelAutocomplete,
|
|
@@ -31,7 +31,7 @@ urlpatterns = [
|
|
|
31
31
|
ComponentAutocomplete.as_view(), name='autocomplete-component'
|
|
32
32
|
),
|
|
33
33
|
path('set-instance/<slug:instance_slug>/', set_instance, name='set-instance'),
|
|
34
|
-
path('
|
|
34
|
+
path('upgrade/', upgrade, name='upgrade'),
|
|
35
35
|
path('restart/', restart, name='restart'),
|
|
36
36
|
path('reboot/', reboot, name='reboot')
|
|
37
37
|
]
|
simo/core/serializers.py
CHANGED
|
@@ -530,11 +530,11 @@ class ComponentSerializer(FormSerializer):
|
|
|
530
530
|
role = user.get_role(instance)
|
|
531
531
|
if not role:
|
|
532
532
|
return True
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
533
|
+
for perm in role.component_permissions.all(): # prefetched
|
|
534
|
+
if perm == obj:
|
|
535
|
+
return not perm.write
|
|
536
|
+
return True
|
|
537
|
+
|
|
538
538
|
|
|
539
539
|
def get_app_widget(self, obj):
|
|
540
540
|
try:
|
simo/core/tasks.py
CHANGED
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
<i class="fas fa-sort-down"></i>
|
|
17
17
|
</div>
|
|
18
18
|
<div class="dropdown-content" style="right: 110px">
|
|
19
|
-
<a href="{% url '
|
|
20
|
-
<i class="fas fa-angle-double-up"></i>
|
|
19
|
+
<a href="{% url 'upgrade' %}" title="Upgrade hub" class="update_link">
|
|
20
|
+
<i class="fas fa-angle-double-up"></i> Upgrade
|
|
21
21
|
</a>
|
|
22
22
|
<a href="{% url 'restart' %}" title="Restart main processes">
|
|
23
|
-
<i class="far fa-power-off" ></i> Restart
|
|
23
|
+
<i class="far fa-power-off" ></i> Restart processes
|
|
24
24
|
</a>
|
|
25
25
|
<a href="{% url 'reboot' %}" title="Reboot hub" id="reboot_link">
|
|
26
26
|
<i class="fad fa-power-off"></i> Reboot
|
simo/core/views.py
CHANGED
|
@@ -3,6 +3,7 @@ import re
|
|
|
3
3
|
from django.contrib.auth.decorators import login_required
|
|
4
4
|
from django.urls import reverse
|
|
5
5
|
from django.shortcuts import redirect
|
|
6
|
+
from django.views.decorators.csrf import csrf_exempt
|
|
6
7
|
from django.http import HttpResponse, Http404, JsonResponse
|
|
7
8
|
from django.contrib import messages
|
|
8
9
|
from simo.conf import dynamic_settings
|
|
@@ -15,10 +16,11 @@ def get_timestamp(request):
|
|
|
15
16
|
return HttpResponse(time.time())
|
|
16
17
|
|
|
17
18
|
@login_required
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
@csrf_exempt
|
|
20
|
+
def upgrade(request):
|
|
21
|
+
if not request.user.is_master:
|
|
20
22
|
raise Http404()
|
|
21
|
-
messages.warning(request, "Hub
|
|
23
|
+
messages.warning(request, "Hub upgrade initiated. ")
|
|
22
24
|
update_task.delay()
|
|
23
25
|
if request.META.get('HTTP_REFERER'):
|
|
24
26
|
return redirect(request.META.get('HTTP_REFERER'))
|
|
@@ -26,8 +28,9 @@ def update(request):
|
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
@login_required
|
|
31
|
+
@csrf_exempt
|
|
29
32
|
def restart(request):
|
|
30
|
-
if not request.user.
|
|
33
|
+
if not request.user.is_master:
|
|
31
34
|
raise Http404()
|
|
32
35
|
messages.warning(
|
|
33
36
|
request, "Hub restart initiated. "
|
|
@@ -41,8 +44,9 @@ def restart(request):
|
|
|
41
44
|
|
|
42
45
|
|
|
43
46
|
@login_required
|
|
47
|
+
@csrf_exempt
|
|
44
48
|
def reboot(request):
|
|
45
|
-
if not request.user.
|
|
49
|
+
if not request.user.is_master:
|
|
46
50
|
raise Http404()
|
|
47
51
|
messages.error(
|
|
48
52
|
request,
|
|
Binary file
|
|
Binary file
|
simo/fleet/serializers.py
CHANGED
|
@@ -42,16 +42,19 @@ class ColonelInterfaceSerializer(serializers.ModelSerializer):
|
|
|
42
42
|
class ColonelSerializer(serializers.ModelSerializer):
|
|
43
43
|
pins = serializers.SerializerMethodField()
|
|
44
44
|
interfaces = serializers.SerializerMethodField()
|
|
45
|
+
newer_firmware_available = serializers.SerializerMethodField()
|
|
45
46
|
|
|
46
47
|
class Meta:
|
|
47
48
|
model = Colonel
|
|
48
49
|
fields = (
|
|
49
|
-
'id', 'uid', 'name', 'type',
|
|
50
|
+
'id', 'uid', 'name', 'type',
|
|
51
|
+
'firmware_version', 'firmware_auto_update',
|
|
52
|
+
'newer_firmware_available',
|
|
50
53
|
'socket_connected', 'last_seen', 'pins', 'interfaces',
|
|
51
54
|
)
|
|
52
55
|
read_only_fields = [
|
|
53
|
-
'uid', 'type', 'firmware_version', '
|
|
54
|
-
'last_seen', 'pins', 'interfaces'
|
|
56
|
+
'uid', 'type', 'firmware_version', 'newer_firmware_available',
|
|
57
|
+
'socket_connected', 'last_seen', 'pins', 'interfaces'
|
|
55
58
|
]
|
|
56
59
|
|
|
57
60
|
def get_pins(self, obj):
|
|
@@ -66,6 +69,9 @@ class ColonelSerializer(serializers.ModelSerializer):
|
|
|
66
69
|
result.append(ColonelInterfaceSerializer(interface).data)
|
|
67
70
|
return result
|
|
68
71
|
|
|
72
|
+
def get_newer_firmware_available(self, obj):
|
|
73
|
+
return obj.newer_firmware_available()
|
|
74
|
+
|
|
69
75
|
def update(self, instance, validated_data):
|
|
70
76
|
instance = super().update(instance, validated_data)
|
|
71
77
|
instance.update_config()
|
|
Binary file
|
simo/generic/controllers.py
CHANGED
|
@@ -169,6 +169,13 @@ class PresenceLighting(Script):
|
|
|
169
169
|
sensor.on_change(self._on_sensor)
|
|
170
170
|
self.sensors[id] = sensor
|
|
171
171
|
|
|
172
|
+
if self.component.config['off_value'] != 0:
|
|
173
|
+
for id in self.component.config['lights']:
|
|
174
|
+
light = Component.objects.filter(id=id).first()
|
|
175
|
+
if not light or not light.controller:
|
|
176
|
+
continue
|
|
177
|
+
light.on_change(self._on_light_change)
|
|
178
|
+
|
|
172
179
|
for condition in self.component.config.get('conditions', []):
|
|
173
180
|
comp = Component.objects.filter(
|
|
174
181
|
id=condition.get('component', 0)
|
|
@@ -196,6 +203,11 @@ class PresenceLighting(Script):
|
|
|
196
203
|
self._regulate()
|
|
197
204
|
|
|
198
205
|
|
|
206
|
+
def _on_light_change(self, light):
|
|
207
|
+
if self.is_on:
|
|
208
|
+
self.light_org_values[light.id] = light.value
|
|
209
|
+
|
|
210
|
+
|
|
199
211
|
def _regulate(self, on_val_change=True):
|
|
200
212
|
presence_values = [s.value for id, s in self.sensors.items()]
|
|
201
213
|
if self.component.config.get('act_on', 0) == 0:
|
|
@@ -61,6 +61,24 @@ class LocalSun(Sun):
|
|
|
61
61
|
return (self.get_sunrise_time(utc_datetime) - utc_datetime).total_seconds()
|
|
62
62
|
|
|
63
63
|
|
|
64
|
+
def get_day_evening_night_morning(sun, localtime):
|
|
65
|
+
|
|
66
|
+
# It is daytime if the sun is up!
|
|
67
|
+
if not sun.is_night():
|
|
68
|
+
return 'day'
|
|
69
|
+
|
|
70
|
+
# it is evening if the sun is down at the evening
|
|
71
|
+
if sun.get_sunset_time(localtime) < localtime:
|
|
72
|
+
return 'evening'
|
|
73
|
+
|
|
74
|
+
# if it's past 6 AM but still dark - we consider this as morning
|
|
75
|
+
if localtime.hour >= 6:
|
|
76
|
+
return 'morning'
|
|
77
|
+
|
|
78
|
+
# 0 - 6AM and still dark
|
|
79
|
+
return 'night'
|
|
80
|
+
|
|
81
|
+
|
|
64
82
|
def haversine_distance(location1, location2, units_of_measure='metric'):
|
|
65
83
|
# Radius of Earth in meters
|
|
66
84
|
R = 6371000
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/users/admin.py
CHANGED
|
@@ -132,11 +132,12 @@ class UserDeviceLog(admin.ModelAdmin):
|
|
|
132
132
|
model = UserDeviceReportLog
|
|
133
133
|
readonly_fields = (
|
|
134
134
|
'timestamp', 'app_open', 'relay', 'at_home',
|
|
135
|
-
'location', 'users', 'speed_kmh', '
|
|
135
|
+
'location', 'users', 'speed_kmh', 'avg_speed_kmh',
|
|
136
|
+
'phone_on_charge'
|
|
136
137
|
)
|
|
137
138
|
list_display = (
|
|
138
139
|
'timestamp', 'app_open', 'relay', 'at_home',
|
|
139
|
-
'location', 'speed_kmh',
|
|
140
|
+
'location', 'speed_kmh', 'avg_speed_kmh',
|
|
140
141
|
'phone_on_charge', 'users'
|
|
141
142
|
)
|
|
142
143
|
fields = readonly_fields
|
simo/users/api.py
CHANGED
|
@@ -192,6 +192,12 @@ class UserDeviceReport(InstanceMixin, viewsets.GenericViewSet):
|
|
|
192
192
|
)
|
|
193
193
|
user_device.users.add(request.user)
|
|
194
194
|
|
|
195
|
+
log_datetime = timezone.now()
|
|
196
|
+
if request.data.get('timestamp'):
|
|
197
|
+
log_datetime = datetime.datetime.utcfromtimestamp(
|
|
198
|
+
int(float(request.GET['start_from']))
|
|
199
|
+
).replace(tzinfo=pytz.utc)
|
|
200
|
+
|
|
195
201
|
relay = None
|
|
196
202
|
if request.META.get('HTTP_HOST', '').endswith('.simo.io'):
|
|
197
203
|
relay = request.META.get('HTTP_HOST')
|
|
@@ -201,10 +207,23 @@ class UserDeviceReport(InstanceMixin, viewsets.GenericViewSet):
|
|
|
201
207
|
except:
|
|
202
208
|
speed_kmh = 0
|
|
203
209
|
|
|
210
|
+
avg_speed_kmh = 0
|
|
211
|
+
|
|
204
212
|
if relay:
|
|
205
213
|
location = request.data.get('location')
|
|
206
214
|
if 'null' in location:
|
|
207
215
|
location = None
|
|
216
|
+
prev_log = UserDeviceReportLog.objects.filter(
|
|
217
|
+
user_device=user_device, instance=self.instance,
|
|
218
|
+
datetime__lt=log_datetime - datetime.timedelta(seconds=3),
|
|
219
|
+
datetime__gt=log_datetime - datetime.timedelta(seconds=10),
|
|
220
|
+
at_home=False, location__isnull=False
|
|
221
|
+
).last()
|
|
222
|
+
if prev_log:
|
|
223
|
+
from simo.generic.scripting.helpers import haversine_distance
|
|
224
|
+
meters_traveled = haversine_distance(location, prev_log.location)
|
|
225
|
+
seconds_passed = (log_datetime - prev_log.datetime).total_seconds()
|
|
226
|
+
avg_speed_kmh = round(meters_traveled / seconds_passed * 3.6, 0)
|
|
208
227
|
else:
|
|
209
228
|
location = self.instance.location
|
|
210
229
|
|
|
@@ -221,7 +240,6 @@ class UserDeviceReport(InstanceMixin, viewsets.GenericViewSet):
|
|
|
221
240
|
if request.data.get('is_charging') == True:
|
|
222
241
|
phone_on_charge = True
|
|
223
242
|
|
|
224
|
-
|
|
225
243
|
at_home = False
|
|
226
244
|
if not relay:
|
|
227
245
|
at_home = True
|
|
@@ -239,22 +257,17 @@ class UserDeviceReport(InstanceMixin, viewsets.GenericViewSet):
|
|
|
239
257
|
) < dynamic_settings['users__at_home_radius']
|
|
240
258
|
|
|
241
259
|
iu.last_seen = user_device.last_seen
|
|
242
|
-
|
|
260
|
+
if location:
|
|
261
|
+
iu.last_seen_location = location
|
|
243
262
|
iu.last_seen_speed_kmh = speed_kmh
|
|
244
263
|
iu.phone_on_charge = phone_on_charge
|
|
245
264
|
iu.save()
|
|
246
265
|
|
|
247
|
-
log_datetime = timezone.now()
|
|
248
|
-
if request.data.get('timestamp'):
|
|
249
|
-
log_datetime = datetime.datetime.utcfromtimestamp(
|
|
250
|
-
int(float(request.GET['start_from']))
|
|
251
|
-
).replace(tzinfo=pytz.utc)
|
|
252
|
-
|
|
253
266
|
UserDeviceReportLog.objects.create(
|
|
254
267
|
user_device=user_device, instance=self.instance,
|
|
255
268
|
app_open=request.data.get('app_open', False),
|
|
256
269
|
location=location, datetime=log_datetime,
|
|
257
|
-
relay=relay, speed_kmh=speed_kmh,
|
|
270
|
+
relay=relay, speed_kmh=speed_kmh, avg_speed_kmh=avg_speed_kmh,
|
|
258
271
|
phone_on_charge=phone_on_charge, at_home=at_home
|
|
259
272
|
)
|
|
260
273
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 4.2.10 on 2024-11-23 09:02
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('users', '0042_remove_userdevicereportlog_location_smoothed_and_more'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='userdevicereportlog',
|
|
15
|
+
name='avg_speed_kmh',
|
|
16
|
+
field=models.FloatField(default=0),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
Binary file
|
simo/users/models.py
CHANGED
|
@@ -448,6 +448,7 @@ class UserDeviceReportLog(models.Model):
|
|
|
448
448
|
)
|
|
449
449
|
location = PlainLocationField(zoom=7, null=True, blank=True)
|
|
450
450
|
speed_kmh = models.FloatField(default=0)
|
|
451
|
+
avg_speed_kmh = models.FloatField(default=0)
|
|
451
452
|
phone_on_charge = models.BooleanField(default=False, db_index=True)
|
|
452
453
|
at_home = models.BooleanField(default=True)
|
|
453
454
|
|
|
@@ -33,12 +33,12 @@ simo/backups/migrations/__pycache__/0004_alter_backup_options_alter_backuplog_op
|
|
|
33
33
|
simo/backups/migrations/__pycache__/__init__.cpython-38.pyc,sha256=Lz1fs6V05h2AoxTOLNye0do9bEMnyuaXB_hHOjG5-HU,172
|
|
34
34
|
simo/core/__init__.py,sha256=_s2TjJfQImsMrTIxqLAx9AZie1Ojmm6sCHASdl3WLGU,50
|
|
35
35
|
simo/core/admin.py,sha256=T-NjMq1OxtCt-LjWL-YuuGtAi4JcvtjWhcGrLb8G5D4,18434
|
|
36
|
-
simo/core/api.py,sha256=
|
|
36
|
+
simo/core/api.py,sha256=jFSuknrIiFhuf_Hx07GeTQ_prOG0cBJhtbcTImPVmqI,28502
|
|
37
37
|
simo/core/api_auth.py,sha256=vCxvczA8aWNcW0VyKs5WlC_ytlqeGP_H_hkKUNVkCwM,1247
|
|
38
38
|
simo/core/api_meta.py,sha256=EaiY-dCADP__9MvLpoHvhjytFT92IrxPZDv95xgqasU,4955
|
|
39
39
|
simo/core/app_widgets.py,sha256=VxZzapuc-a29wBH7JzpvNF2SK1ECrgNUySId5ke1ffc,2509
|
|
40
40
|
simo/core/apps.py,sha256=CsqpiQerhmrMsH-wGiG-gQgXd9qEkIi-LUaA9cXpKSw,425
|
|
41
|
-
simo/core/auto_urls.py,sha256=
|
|
41
|
+
simo/core/auto_urls.py,sha256=FBDclIeRp5UVWomIUbRzUgY-AoMk-r2qC2htlwKD4Lo,1106
|
|
42
42
|
simo/core/autocomplete_views.py,sha256=Nu9sgc0X5OspRkJnpomeO2XdHCOg9ii9v4ZkGecCNjQ,3860
|
|
43
43
|
simo/core/base_types.py,sha256=WypW8hTfzveuTQtruGjLYAGQZIuczxTlW-SdRk3iQug,666
|
|
44
44
|
simo/core/context.py,sha256=LKw1I4iIRnlnzoTCuSLLqDX7crHdBnMo3hjqYvVmzFc,1557
|
|
@@ -55,46 +55,46 @@ simo/core/middleware.py,sha256=eUFf6iP-Snx_0TE3MoXsSwqrd5IjlukqZk2GQGStRCo,3385
|
|
|
55
55
|
simo/core/models.py,sha256=1eJRIxOYtzx7JOGSAyo75QBoTEaigxjsRXIFghDSz9k,22837
|
|
56
56
|
simo/core/permissions.py,sha256=INQPrUAIM3WXCvd7e6cmYytKaak8fMEn7VooX-fIds0,3002
|
|
57
57
|
simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
|
|
58
|
-
simo/core/serializers.py,sha256=
|
|
58
|
+
simo/core/serializers.py,sha256=LguXTsiGiIkLbBES4lHakvpRlYii7P6JVPALazo_cRU,21832
|
|
59
59
|
simo/core/signal_receivers.py,sha256=2WfF3FI5ZmJM1S-oT_1w3TdnBUX6fjbI4Rpg-DKsuYA,8696
|
|
60
60
|
simo/core/socket_consumers.py,sha256=trRZvBGTJ7xIbfdmVvn7zoiWp_qssSkMZykDrI5YQyE,9783
|
|
61
61
|
simo/core/storage.py,sha256=_5igjaoWZAiExGWFEJMElxUw55DzJG1jqFty33xe8BE,342
|
|
62
|
-
simo/core/tasks.py,sha256=
|
|
62
|
+
simo/core/tasks.py,sha256=ridh-22XWY3v9DCWrGYaXrOM0w4XOebkjkkZT9NtnP4,16911
|
|
63
63
|
simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
|
|
64
64
|
simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
|
|
65
|
-
simo/core/views.py,sha256=
|
|
65
|
+
simo/core/views.py,sha256=yx9I0byeVUa-LAOnklpWIYwpNNOf5m9fyjKBvj4YCh4,2475
|
|
66
66
|
simo/core/widgets.py,sha256=J9e06C6I22F6xKic3VMgG7WeX07glAcl-4bF2Mg180A,2827
|
|
67
67
|
simo/core/__pycache__/__init__.cpython-38.pyc,sha256=ZJFM_XN0RmJMULQulgA_wFiOnEtsMoedcOWnXjH-Y8o,208
|
|
68
68
|
simo/core/__pycache__/admin.cpython-38.pyc,sha256=mXU-u9Bl5RCa0K4Y9wJAkYns33XCByME3sb_FsMC2DI,14090
|
|
69
|
-
simo/core/__pycache__/api.cpython-38.pyc,sha256=
|
|
69
|
+
simo/core/__pycache__/api.cpython-38.pyc,sha256=u4qCGX0I_IEvdVf4vzQWnGkUsNRBa7Bx2PqWCyX7aHs,21980
|
|
70
70
|
simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=mi3mu5qEKio_PvfQEvr3Q6AhdPLAHxzxAxrMbAz_pKU,1712
|
|
71
71
|
simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=VYx5ZeDyNBI4B_CBEIhV5B3GnLsMOx9s3rNZTSMODco,3703
|
|
72
72
|
simo/core/__pycache__/app_widgets.cpython-38.pyc,sha256=oN657XMMZ6GYN9nblv7fX3kdnTEzSP9XV6PXM6Z0wl4,4358
|
|
73
73
|
simo/core/__pycache__/apps.cpython-38.pyc,sha256=JL0BEqgXcSQvMlcK48PBpPfyDEkPMdO1Y0teqMRGirs,713
|
|
74
|
-
simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=
|
|
74
|
+
simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=ib_ns5Ko8ybfrdJJWYVV1jevihxOFs39aBF4bez6Lzs,874
|
|
75
75
|
simo/core/__pycache__/autocomplete_views.cpython-38.pyc,sha256=Of2ZFdN8XF1I4TmAUwqZonHqZd8O9CpX_DqIQMU_rdc,3967
|
|
76
76
|
simo/core/__pycache__/base_types.cpython-38.pyc,sha256=CX-qlF7CefRi_mCE954wYa9rUFR88mOl6g7fybDRu7g,803
|
|
77
77
|
simo/core/__pycache__/context.cpython-38.pyc,sha256=NlTHt2GvXxA21AhBkeyOLfRFUuXw7wmwqyNhhcDl2cw,1373
|
|
78
|
-
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
78
|
+
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=Lt9JDheLB3qgaZZ9NACAEeg43IY9XxZHN3Y0c5JavMo,30710
|
|
79
79
|
simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=wGpnscX1DxFpRl54MQURhjz2aD3NJohSzw9JCFnzh2Y,2384
|
|
80
80
|
simo/core/__pycache__/events.cpython-38.pyc,sha256=1y8YaZsiDkBOeIWzH7SQz4holmMG_RLlMWi8kuSZcoE,5280
|
|
81
81
|
simo/core/__pycache__/filters.cpython-38.pyc,sha256=VIMADCBiYhziIyRmxAyUDJluZvuZmiC4bNYWTRsGSao,721
|
|
82
82
|
simo/core/__pycache__/form_fields.cpython-38.pyc,sha256=phMdhDFRmaFDhJSnasAg8VKNP6PxkPjFqkLwEuWicIs,3465
|
|
83
|
-
simo/core/__pycache__/forms.cpython-38.pyc,sha256=
|
|
83
|
+
simo/core/__pycache__/forms.cpython-38.pyc,sha256=9ogrGIBTmPWXUD3qgICo2oA-pBlgO2Bqg9hRv_-IUdE,17571
|
|
84
84
|
simo/core/__pycache__/gateways.cpython-38.pyc,sha256=D1ooHL-iSpQrxnD8uAl4xWFJmm-QWZfbkLiLlFOMtdU,4553
|
|
85
85
|
simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NMEdPAiHK0cFaIL7I8,1623
|
|
86
86
|
simo/core/__pycache__/managers.cpython-38.pyc,sha256=6RTIxyjOgpQGtAqcUyE2vFPS09w1V5Wmd_vOV7rHRRI,3370
|
|
87
87
|
simo/core/__pycache__/middleware.cpython-38.pyc,sha256=g3d4L2PwxFyRKIPMP9Hkdjk1PL9NarQd4hSHS55I8n8,2649
|
|
88
88
|
simo/core/__pycache__/models.cpython-38.pyc,sha256=m2KdO5zWXwHT3pIDyGW9SQgnesSAGPPcttOXoKCArzM,18610
|
|
89
|
-
simo/core/__pycache__/permissions.cpython-38.pyc,sha256=
|
|
89
|
+
simo/core/__pycache__/permissions.cpython-38.pyc,sha256=LXfbPrLm81oquflywAdK-a53-g7N1tkUuiePIdvk0ek,2974
|
|
90
90
|
simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
|
|
91
|
-
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=
|
|
91
|
+
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=iMxzjjGq4OiUjyRNRb3z7bV2y1DVZf7kwLNAnmyItxg,19561
|
|
92
92
|
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=Od1ejof2nHAFzTAG5vGGVjMA8WUJNVJ9o_KWGqRSR34,6669
|
|
93
93
|
simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=KqbO1cOewodVPcy0-htVefyUjCuELKV0o7fOfYqfgPc,8490
|
|
94
94
|
simo/core/__pycache__/storage.cpython-38.pyc,sha256=9R1Xu0FJDflfRXUPsqEgt0SpwiP7FGk7HaR8s8XRyI8,721
|
|
95
|
-
simo/core/__pycache__/tasks.cpython-38.pyc,sha256=
|
|
95
|
+
simo/core/__pycache__/tasks.cpython-38.pyc,sha256=A2qCdGJtaM1vpiM7LmzAMsuPkt5EG4vLzW2s0-WnklE,11220
|
|
96
96
|
simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
|
|
97
|
-
simo/core/__pycache__/views.cpython-38.pyc,sha256=
|
|
97
|
+
simo/core/__pycache__/views.cpython-38.pyc,sha256=IRjbX3MwKkAb10sMIJ3esKZH8W-tHwnuzm-mLIT_NWc,2584
|
|
98
98
|
simo/core/__pycache__/widgets.cpython-38.pyc,sha256=sR0ZeHCHrhnNDBJuRrxp3zUsfBp0xrtF0xrK2TkQv1o,3520
|
|
99
99
|
simo/core/db_backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
100
|
simo/core/db_backend/base.py,sha256=wY5jsZ8hQpwot3o-7JNtDe33xy-vlfMLXa011htDojI,601
|
|
@@ -10155,7 +10155,7 @@ simo/core/templates/admin/index.html,sha256=AJpt1FA4g6IAFQA99-3glJ88RmoWJ0YXBIz_
|
|
|
10155
10155
|
simo/core/templates/admin/item_name_display.html,sha256=Y3zk-rc-y8_6dC6_WrSy6tx6Z-6IZzZ5w3a1hMxlpz4,357
|
|
10156
10156
|
simo/core/templates/admin/msg_page.html,sha256=C1T9fniV7cIiSBQXRFcSAsbt5Y_fshf6T6ZAE1e8hNw,738
|
|
10157
10157
|
simo/core/templates/admin/svg_file_widget.html,sha256=1QOz2RzwWn2FAnn44Zbg8v4EVgzBmmLA2bzyomm6ohk,202
|
|
10158
|
-
simo/core/templates/admin/user_tools.html,sha256=
|
|
10158
|
+
simo/core/templates/admin/user_tools.html,sha256=zkHNnrqvQduy3fNGQ6EmZvRNGTIUc9HW5Fqkh0sIZlc,1608
|
|
10159
10159
|
simo/core/templates/admin/zone_table_row.html,sha256=4XCgDsnrvn6s9ac0_e74pPsjDFdVdtoSLTV3Y5oklis,119
|
|
10160
10160
|
simo/core/templates/admin/controller_widgets/binary_sensor.html,sha256=PTwoLyppBIH8VL3-PKXCT4SWFQOeWqrzfsriWyROnzU,277
|
|
10161
10161
|
simo/core/templates/admin/controller_widgets/button.html,sha256=PXlZ1KpSPeB77AOXZu_0yh_bA9M0OWyg5KO-KKHLzvg,289
|
|
@@ -10233,7 +10233,7 @@ simo/fleet/gateways.py,sha256=lKEJW0MgaOEiNnijH50DNSVChvaUT3TA3UurcI57P8k,5677
|
|
|
10233
10233
|
simo/fleet/managers.py,sha256=ZNeHFSkF5kzsl9E1DCBevOW6kXJlD6kw0LU4B-JMOG8,828
|
|
10234
10234
|
simo/fleet/models.py,sha256=zPplx_v64nfKBmb-nCb74aCVtEeY3m3SjEy-VhbnydU,17511
|
|
10235
10235
|
simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
|
|
10236
|
-
simo/fleet/serializers.py,sha256=
|
|
10236
|
+
simo/fleet/serializers.py,sha256=wY6q5zq6sIWPVnnyHT2Vhu3nxHJLWfYrSCcIKXJu_Ac,2411
|
|
10237
10237
|
simo/fleet/socket_consumers.py,sha256=4hVSvFNq9Hi44R7JmaujFoEtgmH5YBST2cFYtIiMDRA,18840
|
|
10238
10238
|
simo/fleet/tasks.py,sha256=NX_opj-rbkK9eeQMeRNwHj_ZJ0LC4rYOZovMg9_r0kA,904
|
|
10239
10239
|
simo/fleet/utils.py,sha256=wNJvURzLP3-aho3D3rfg07N9kWCaMIw5gOsmeeO9Nlg,4740
|
|
@@ -10250,8 +10250,8 @@ simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=0RKVn0ndreVKhsrukqeLPSdMnR
|
|
|
10250
10250
|
simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=Vmm23zoQnS3-uS5_WJt2n3wtjhLiEhLWaYxXJCU6Gts,1339
|
|
10251
10251
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=WUahZgETWlem5rVXlJ_vINFRM7OZWp5xpWXGMoeBXsM,14131
|
|
10252
10252
|
simo/fleet/__pycache__/routing.cpython-38.pyc,sha256=aPrCmxFKVyB8R8ZbJDwdPdFfvT7CvobovvZeq_mqRgY,314
|
|
10253
|
-
simo/fleet/__pycache__/serializers.cpython-38.pyc,sha256=
|
|
10254
|
-
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=
|
|
10253
|
+
simo/fleet/__pycache__/serializers.cpython-38.pyc,sha256=YcEokBqi_5MXkIxhHmTmcqW0o8li5qntPfwwH2oa63A,3358
|
|
10254
|
+
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=m8sJWln-uyjeTD-alyoNikEJcHCxZGTe2vXnMGVNZog,14170
|
|
10255
10255
|
simo/fleet/__pycache__/tasks.cpython-38.pyc,sha256=RoNxL2WUiW67s9O9DjaYVVjCBSZu2nje0Qn9FJkWVS0,1116
|
|
10256
10256
|
simo/fleet/__pycache__/utils.cpython-38.pyc,sha256=obUd-X2Y-ybx4icqUWq_qwIxrP9yyarJjexWAfO4MTI,3344
|
|
10257
10257
|
simo/fleet/__pycache__/views.cpython-38.pyc,sha256=wilxSvZliSKQ5qC7JjWneYBSdbeZeTsF5uDrOQVmvms,3181
|
|
@@ -10346,7 +10346,7 @@ simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LS
|
|
|
10346
10346
|
simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10347
10347
|
simo/generic/app_widgets.py,sha256=TPRLj4hri2hBuY6mrdwBiv-01z2hDxZmsup-GDD9LrM,953
|
|
10348
10348
|
simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
|
|
10349
|
-
simo/generic/controllers.py,sha256=
|
|
10349
|
+
simo/generic/controllers.py,sha256=QwmVXC3phIDYXAP98MtKbzHuamWPc1kVg9FQfjkP22g,50566
|
|
10350
10350
|
simo/generic/forms.py,sha256=tCbIZtbruBHjZRzulGXJQOjmxaGJ2uoKqjT1scScdDQ,29004
|
|
10351
10351
|
simo/generic/gateways.py,sha256=0gDjWSCAt6MABR6k8xV7N1zXutDLCileGtAm6pSl4Q4,16165
|
|
10352
10352
|
simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
|
|
@@ -10355,7 +10355,7 @@ simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-
|
|
|
10355
10355
|
simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
|
|
10356
10356
|
simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=YZ5db6-FPynBi6ooPW5crK9lZ6ymRh2DlGN6FwxfX4M,1820
|
|
10357
10357
|
simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
|
|
10358
|
-
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256
|
|
10358
|
+
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=f0nzxm3U7pgmn7TbUOM3KfIWk50II2XeGbkCyFDix_w,33658
|
|
10359
10359
|
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=Dd-hgbRNdIFzUDjSZ4yQp7wwR-ILBYQFI8MCob_ZYwQ,21232
|
|
10360
10360
|
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=uubZtp-UgEmKU4vG9ophnCZFEDqmKkeY1yyWUXzdmdY,12015
|
|
10361
10361
|
simo/generic/__pycache__/models.cpython-38.pyc,sha256=MZpum7syAFxuulf47K7gtUlJJ7xRD-IBUBAwUM1ZRnw,5825
|
|
@@ -10367,7 +10367,7 @@ simo/generic/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=xy_fN8vne
|
|
|
10367
10367
|
simo/generic/migrations/__pycache__/__init__.cpython-38.pyc,sha256=nJV0NkIT8MuONj1hUX-V6aCU2lX3BXHyPjisapnBsPA,172
|
|
10368
10368
|
simo/generic/scripting/__init__.py,sha256=aZZvNBae7unnux_zGHCIWCV2z47hVJc-DIL72Hqfkeo,600
|
|
10369
10369
|
simo/generic/scripting/example.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10370
|
-
simo/generic/scripting/helpers.py,sha256=
|
|
10370
|
+
simo/generic/scripting/helpers.py,sha256=iP-fxxB8HsFQy3k2CjFubu86aMqvWgmh-p24DiyOrek,4330
|
|
10371
10371
|
simo/generic/scripting/serializers.py,sha256=PjyFrjdPK1mBsgbNhyqMi9SWzcymqTa742ipy0LhAN4,1996
|
|
10372
10372
|
simo/generic/scripting/__pycache__/__init__.cpython-38.pyc,sha256=eHncoNpv5dy35IO1_htWd8CK0sHFBnU_WJ0hl5TKOHQ,794
|
|
10373
10373
|
simo/generic/scripting/__pycache__/helpers.cpython-38.pyc,sha256=34sa3L2cK1Aw636PCaoCYIWUBIE1h6XmbgDIto9cLeo,2757
|
|
@@ -10448,15 +10448,15 @@ simo/notifications/migrations/__pycache__/0002_notification_instance.cpython-38.
|
|
|
10448
10448
|
simo/notifications/migrations/__pycache__/0003_alter_notification_instance.cpython-38.pyc,sha256=awhD1F9RyK_706zVNM5io3WT_konFkKQgL7D5MkONwk,851
|
|
10449
10449
|
simo/notifications/migrations/__pycache__/__init__.cpython-38.pyc,sha256=YMBRHVon2nWDtIUbghckjnC12sIg_ykPWhV5aM0tto4,178
|
|
10450
10450
|
simo/users/__init__.py,sha256=6a7uBpCWB_DR7p54rbHusc0xvi1qfT1ZCCQGb6TiBh8,52
|
|
10451
|
-
simo/users/admin.py,sha256=
|
|
10452
|
-
simo/users/api.py,sha256=
|
|
10451
|
+
simo/users/admin.py,sha256=Vkx1KLHBRN7U5mgriOYolW-itcz0gi6x1qk7UdJP3ko,7229
|
|
10452
|
+
simo/users/api.py,sha256=S0Jmvxo8pWeaJ2fEF3zuMygrINTqwg3e080YMxEhTnU,13227
|
|
10453
10453
|
simo/users/apps.py,sha256=cq0A8-U1HALEwev0TicgFhr4CAu7Icz8rwq0HfOaL4E,207
|
|
10454
10454
|
simo/users/auth_backends.py,sha256=KIw2AdjCUKfm_7Lql6aC4qdE6JznP0ECIMA5MVMLeiM,4251
|
|
10455
10455
|
simo/users/auto_urls.py,sha256=lcJvteBsbHQMJieZpDz-63tDYejLApqsW3CUnDakd7k,272
|
|
10456
10456
|
simo/users/dynamic_settings.py,sha256=sEIsi4yJw3kH46Jq_aOkSuK7QTfQACGUE-lkyBogCaM,570
|
|
10457
10457
|
simo/users/managers.py,sha256=OHgEP85MBtdkdYxdstBd8RavTBT8F_2WyDxUJ9aCqqM,246
|
|
10458
10458
|
simo/users/middleware.py,sha256=GMCrnWSc_2qCleyQIkfQGdL-pU-UTEcSg1wPvIKZ9uk,1210
|
|
10459
|
-
simo/users/models.py,sha256=
|
|
10459
|
+
simo/users/models.py,sha256=cmoPzz5e4Mymqf7Dwh8KBoR5D-wumHSj18rvb3LU9E4,19735
|
|
10460
10460
|
simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
|
|
10461
10461
|
simo/users/serializers.py,sha256=zzw1KONTnaTNBaU0r4rNVxJ827KzD6Z5LuQt27ZsQ98,2516
|
|
10462
10462
|
simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
|
|
@@ -10465,15 +10465,15 @@ simo/users/tasks.py,sha256=M8MDQ1oR6WXWoOP5SQYui-CsCIV0jUmfI84TbRgGKo8,1199
|
|
|
10465
10465
|
simo/users/utils.py,sha256=-Lu7C_sz8JJauLaIwgEa6umArqzNL7JJTY-ZcuF4irA,2004
|
|
10466
10466
|
simo/users/views.py,sha256=dOQVvmlHG7ihWKJLFUBcqKOA0UDctlMKR0pTc36JZqg,3487
|
|
10467
10467
|
simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
|
|
10468
|
-
simo/users/__pycache__/admin.cpython-38.pyc,sha256=
|
|
10469
|
-
simo/users/__pycache__/api.cpython-38.pyc,sha256=
|
|
10468
|
+
simo/users/__pycache__/admin.cpython-38.pyc,sha256=lQHm_2V104pUoUj0xSEa28b542GO1QNd_jdH1ebxXqM,8233
|
|
10469
|
+
simo/users/__pycache__/api.cpython-38.pyc,sha256=3bN_V5SnBnvR5X5G_PFtLzyO3gFr_UuUVgX5cdVvzWk,10328
|
|
10470
10470
|
simo/users/__pycache__/apps.cpython-38.pyc,sha256=dgbWL8CxzzISJQTmq_4IztPJ2UzykNVdqA2Ae1PmeGk,605
|
|
10471
10471
|
simo/users/__pycache__/auth_backends.cpython-38.pyc,sha256=jYS2hlbTZh_ZtPeWcN50pc0IpyfCSO7_MvIbuVwEp8M,3144
|
|
10472
10472
|
simo/users/__pycache__/auto_urls.cpython-38.pyc,sha256=K-3sz2h-cEitoflSmZk1t0eUg5mQMMGLNZFREVwG7_o,430
|
|
10473
10473
|
simo/users/__pycache__/dynamic_settings.cpython-38.pyc,sha256=6F8JBjZkHykySnmZjNEzjS0ijbmPdcp9yUAZ5kqq_Fo,864
|
|
10474
10474
|
simo/users/__pycache__/managers.cpython-38.pyc,sha256=O0Y8ABp42RAosrbODmYsPMaj9AyOPyJ-aqzuO0Qpi2s,679
|
|
10475
10475
|
simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
|
|
10476
|
-
simo/users/__pycache__/models.cpython-38.pyc,sha256=
|
|
10476
|
+
simo/users/__pycache__/models.cpython-38.pyc,sha256=XemTxwgZMpnoAXYryfY_H-g_xhVepqOU-ddCKJyPNCE,17710
|
|
10477
10477
|
simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
|
|
10478
10478
|
simo/users/__pycache__/serializers.cpython-38.pyc,sha256=Dy8RAcwNkNSXoJHvLp8fozURyHCtucqpSPyqZtbnMZc,3732
|
|
10479
10479
|
simo/users/__pycache__/sso_urls.cpython-38.pyc,sha256=uAwDozpOmrhUald-8tOHANILXkH7-TI8fNYXOtPkSY8,402
|
|
@@ -10523,6 +10523,7 @@ simo/users/migrations/0039_auto_20241117_1039.py,sha256=e64AJM2ZId516Px-gmAxkp2N
|
|
|
10523
10523
|
simo/users/migrations/0040_userdevicereportlog_location_smoothed_and_more.py,sha256=umGDjQGpCrQocNxaCvwdTsOmSxcRC61NcUdHGUczoc4,855
|
|
10524
10524
|
simo/users/migrations/0041_userdevicereportlog_speed_kmh_received.py,sha256=WoJ-ImX1lNIl7CKO_HMt3jbFjoenFGBUm9HZWidb-eA,433
|
|
10525
10525
|
simo/users/migrations/0042_remove_userdevicereportlog_location_smoothed_and_more.py,sha256=p-GFu6qjkxqeA0TI8aaIum0k6fQfc39RIKbfGPSf0Yk,499
|
|
10526
|
+
simo/users/migrations/0043_userdevicereportlog_avg_speed_kmh.py,sha256=DheQR-GsGMwNkya3rWHp6pOrNz7-ljnsbcU4e_7AVuE,435
|
|
10526
10527
|
simo/users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10527
10528
|
simo/users/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=e4XOKaYRb7l0P7cBnHHi5FQQJMlwjK0g7iqgM-xKmNI,4215
|
|
10528
10529
|
simo/users/migrations/__pycache__/0002_componentpermission.cpython-38.pyc,sha256=pknJnpic8p6Vdx9DX41FfODXNnvexDswJtUCmC5w1tg,995
|
|
@@ -10568,6 +10569,7 @@ simo/users/migrations/__pycache__/0039_auto_20241117_1039.cpython-38.pyc,sha256=
|
|
|
10568
10569
|
simo/users/migrations/__pycache__/0040_userdevicereportlog_location_smoothed_and_more.cpython-38.pyc,sha256=I0W00mt73gjKunnwAyf3kz1FKfgm2HRwCJY_ogATSS0,918
|
|
10569
10570
|
simo/users/migrations/__pycache__/0041_userdevicereportlog_speed_kmh_received.cpython-38.pyc,sha256=XWC9Emcc1Bm498UZ-6Lo7-i2Vq77vndjMA9xRdJbdfU,676
|
|
10570
10571
|
simo/users/migrations/__pycache__/0042_remove_userdevicereportlog_location_smoothed_and_more.cpython-38.pyc,sha256=sSnWjU7rg5LXlRCxUFb_m2lUIcB4EHgtAnl-C9MMJvE,656
|
|
10572
|
+
simo/users/migrations/__pycache__/0043_userdevicereportlog_avg_speed_kmh.cpython-38.pyc,sha256=ZkXpVQtjfMoX4WF5N8rioCVv77mNNGhu9g50EQEf03w,673
|
|
10571
10573
|
simo/users/migrations/__pycache__/__init__.cpython-38.pyc,sha256=NKq7WLgktK8WV1oOqCPbAbdkrPV5GRGhYx4VxxI4dcs,170
|
|
10572
10574
|
simo/users/templates/conf/mosquitto.conf,sha256=1eIGNuRu4Y3hfAU6qiWix648eCRrw0oOT24PnyFI4ys,189
|
|
10573
10575
|
simo/users/templates/conf/mosquitto_acls.conf,sha256=ga44caTDNQE0CBKw55iM2jOuna6-9fKGwAhjyERZdRE,500
|
|
@@ -10577,9 +10579,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10577
10579
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10578
10580
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10579
10581
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10580
|
-
simo-2.5.
|
|
10581
|
-
simo-2.5.
|
|
10582
|
-
simo-2.5.
|
|
10583
|
-
simo-2.5.
|
|
10584
|
-
simo-2.5.
|
|
10585
|
-
simo-2.5.
|
|
10582
|
+
simo-2.5.38.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10583
|
+
simo-2.5.38.dist-info/METADATA,sha256=zR1Dxup5v9iDYxUK1QuIM09D3UkHfXz4ocAGVhkzXPA,1953
|
|
10584
|
+
simo-2.5.38.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
10585
|
+
simo-2.5.38.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
|
|
10586
|
+
simo-2.5.38.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10587
|
+
simo-2.5.38.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|