simo 2.0.9__py3-none-any.whl → 2.0.10__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/management/commands/__pycache__/gateways_manager.cpython-38.pyc +0 -0
- simo/fleet/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/fleet/__pycache__/socket_consumers.cpython-38.pyc +0 -0
- simo/fleet/controllers.py +20 -1
- simo/fleet/migrations/0034_auto_20240418_0735.py +24 -0
- simo/fleet/migrations/__pycache__/0034_auto_20240418_0735.cpython-38.pyc +0 -0
- simo/fleet/socket_consumers.py +6 -24
- simo/generic/__pycache__/gateways.cpython-38.pyc +0 -0
- simo/generic/gateways.py +27 -4
- simo/users/__pycache__/models.cpython-38.pyc +0 -0
- simo/users/__pycache__/serializers.cpython-38.pyc +0 -0
- simo/users/migrations/0026_fingerprint_name.py +18 -0
- simo/users/migrations/__pycache__/0026_fingerprint_name.cpython-38.pyc +0 -0
- simo/users/models.py +1 -0
- simo/users/serializers.py +1 -4
- {simo-2.0.9.dist-info → simo-2.0.10.dist-info}/METADATA +1 -1
- {simo-2.0.9.dist-info → simo-2.0.10.dist-info}/RECORD +20 -15
- {simo-2.0.9.dist-info → simo-2.0.10.dist-info}/LICENSE.md +0 -0
- {simo-2.0.9.dist-info → simo-2.0.10.dist-info}/WHEEL +0 -0
- {simo-2.0.9.dist-info → simo-2.0.10.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
simo/fleet/controllers.py
CHANGED
|
@@ -402,7 +402,6 @@ class TTLock(FleeDeviceMixin, Lock):
|
|
|
402
402
|
command='call', method='get_codes'
|
|
403
403
|
).publish()
|
|
404
404
|
|
|
405
|
-
|
|
406
405
|
def add_fingerprint(self):
|
|
407
406
|
GatewayObjectCommand(
|
|
408
407
|
self.component.gateway,
|
|
@@ -420,6 +419,8 @@ class TTLock(FleeDeviceMixin, Lock):
|
|
|
420
419
|
).publish()
|
|
421
420
|
|
|
422
421
|
def clear_fingerprints(self):
|
|
422
|
+
self.component.meta['clear_fingerprints'] = True
|
|
423
|
+
self.component.save(update_fields=['meta'])
|
|
423
424
|
GatewayObjectCommand(
|
|
424
425
|
self.component.gateway,
|
|
425
426
|
Colonel(id=self.component.config['colonel']),
|
|
@@ -435,6 +436,24 @@ class TTLock(FleeDeviceMixin, Lock):
|
|
|
435
436
|
command='call', method='get_fingerprints'
|
|
436
437
|
).publish()
|
|
437
438
|
|
|
439
|
+
def _receive_meta(self, data):
|
|
440
|
+
from simo.users.models import Fingerprint
|
|
441
|
+
if 'codes' in data:
|
|
442
|
+
self.component.meta['codes'] = data['codes']
|
|
443
|
+
for code in data['codes']:
|
|
444
|
+
Fingerprint.objects.get_or_create(
|
|
445
|
+
value=f"ttlock-{self.component.id}-code-{str(code)}",
|
|
446
|
+
defaults={'type': "TTLock code"}
|
|
447
|
+
)
|
|
448
|
+
if 'fingerprints' in data:
|
|
449
|
+
self.component.meta['fingerprints'] = data['fingerprints']
|
|
450
|
+
for finger in data['fingerprints']:
|
|
451
|
+
Fingerprint.objects.get_or_create(
|
|
452
|
+
value=f"ttlock-{self.component.id}-finger-{str(finger)}",
|
|
453
|
+
defaults={'type': "TTLock code"}
|
|
454
|
+
)
|
|
455
|
+
self.component.save(update_fields=['meta'])
|
|
456
|
+
|
|
438
457
|
|
|
439
458
|
class DALIDevice(FleeDeviceMixin, ControllerBase):
|
|
440
459
|
gateway_class = FleetGatewayHandler
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated by Django 3.2.9 on 2024-04-18 07: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', '0033_auto_20240415_0736'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AlterField(
|
|
15
|
+
model_name='interface',
|
|
16
|
+
name='pin_a',
|
|
17
|
+
field=models.ForeignKey(editable=False, limit_choices_to={'native': True, 'output': True}, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='interface_a', to='fleet.colonelpin', verbose_name='Pin A (scl)'),
|
|
18
|
+
),
|
|
19
|
+
migrations.AlterField(
|
|
20
|
+
model_name='interface',
|
|
21
|
+
name='pin_b',
|
|
22
|
+
field=models.ForeignKey(editable=False, limit_choices_to={'native': True, 'output': True}, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='interface_b', to='fleet.colonelpin', verbose_name='Pin B (sda)'),
|
|
23
|
+
),
|
|
24
|
+
]
|
|
Binary file
|
simo/fleet/socket_consumers.py
CHANGED
|
@@ -392,30 +392,12 @@ class FleetConsumer(AsyncWebsocketConsumer):
|
|
|
392
392
|
receive_options, thread_sensitive=True
|
|
393
393
|
)(data['options'])
|
|
394
394
|
|
|
395
|
-
if
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
defaults={'type': "TTLock code"}
|
|
402
|
-
)
|
|
403
|
-
component.save()
|
|
404
|
-
await sync_to_async(
|
|
405
|
-
save_codes, thread_sensitive=True
|
|
406
|
-
)(data['codes'])
|
|
407
|
-
if 'fingerprints' in data and component.controller_uid == TTLock.uid:
|
|
408
|
-
def save_fingerprints(codes):
|
|
409
|
-
component.meta['fingerprints'] = codes
|
|
410
|
-
for code in codes:
|
|
411
|
-
Fingerprint.objects.get_or_create(
|
|
412
|
-
value=f"ttlock-{component.id}-finger-{str(code)}",
|
|
413
|
-
defaults={'type': "TTLock Fingerprint"}
|
|
414
|
-
)
|
|
415
|
-
component.save()
|
|
416
|
-
await sync_to_async(
|
|
417
|
-
save_fingerprints, thread_sensitive=True
|
|
418
|
-
)(data['fingerprints'])
|
|
395
|
+
if component.controller_uid == TTLock.uid:
|
|
396
|
+
if 'codes' in data or 'fingerprints' in data:
|
|
397
|
+
await sync_to_async(
|
|
398
|
+
component.controller._receive_meta,
|
|
399
|
+
thread_sensitive=True
|
|
400
|
+
)(data)
|
|
419
401
|
|
|
420
402
|
except Exception as e:
|
|
421
403
|
print(traceback.format_exc(), file=sys.stderr)
|
|
Binary file
|
simo/generic/gateways.py
CHANGED
|
@@ -114,9 +114,9 @@ class CameraWatcher(threading.Thread):
|
|
|
114
114
|
|
|
115
115
|
class ScriptRunHandler(multiprocessing.Process):
|
|
116
116
|
'''
|
|
117
|
-
Threading offers better overall stability, but we
|
|
118
|
-
multiprocessing for Scripts
|
|
119
|
-
we need
|
|
117
|
+
Threading offers better overall stability, but we use
|
|
118
|
+
multiprocessing for Scripts so that they are better isolated and
|
|
119
|
+
we are able to kill them whenever we need.
|
|
120
120
|
'''
|
|
121
121
|
component = None
|
|
122
122
|
logger = None
|
|
@@ -164,7 +164,7 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
|
|
|
164
164
|
periodic_tasks = (
|
|
165
165
|
('watch_thermostats', 60),
|
|
166
166
|
('watch_alarm_clocks', 30),
|
|
167
|
-
('watch_scripts',
|
|
167
|
+
('watch_scripts', 10),
|
|
168
168
|
('watch_watering', 60)
|
|
169
169
|
)
|
|
170
170
|
|
|
@@ -187,6 +187,29 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
|
|
|
187
187
|
alarm_clock.tick()
|
|
188
188
|
|
|
189
189
|
def watch_scripts(self):
|
|
190
|
+
# observe running scripts and drop the ones that are no longer alive
|
|
191
|
+
dead_processes = []
|
|
192
|
+
for id, process in self.running_scripts.items():
|
|
193
|
+
if process.is_alive():
|
|
194
|
+
continue
|
|
195
|
+
component = Component.objects.filter(id=id).exclude(
|
|
196
|
+
value__in=('error', 'finished')
|
|
197
|
+
).first()
|
|
198
|
+
if component:
|
|
199
|
+
logger = get_component_logger(component)
|
|
200
|
+
logger.log(logging.INFO, "-------DEAD!-------")
|
|
201
|
+
component.value = 'error'
|
|
202
|
+
component.save()
|
|
203
|
+
dead_processes.append(id)
|
|
204
|
+
|
|
205
|
+
for id in dead_processes:
|
|
206
|
+
self.running_scripts.pop(id)
|
|
207
|
+
|
|
208
|
+
if dead_processes:
|
|
209
|
+
# give 10s of air before we restart the scripts what were
|
|
210
|
+
# detected to be dead.
|
|
211
|
+
return
|
|
212
|
+
|
|
190
213
|
from simo.generic.controllers import Script
|
|
191
214
|
for script in Component.objects.filter(
|
|
192
215
|
controller_uid=Script.uid,
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 3.2.9 on 2024-04-18 07:35
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('users', '0025_rename_name_fingerprint_type_and_more'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='fingerprint',
|
|
15
|
+
name='name',
|
|
16
|
+
field=models.CharField(blank=True, max_length=100, null=True),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
Binary file
|
simo/users/models.py
CHANGED
|
@@ -359,6 +359,7 @@ class Fingerprint(models.Model):
|
|
|
359
359
|
User, on_delete=models.CASCADE, null=True, blank=True,
|
|
360
360
|
related_name='fingerprints'
|
|
361
361
|
)
|
|
362
|
+
name = models.CharField(max_length=100, null=True, blank=True)
|
|
362
363
|
date_created = models.DateTimeField(auto_now_add=True)
|
|
363
364
|
type = models.CharField(max_length=100, null=True, blank=True)
|
|
364
365
|
|
simo/users/serializers.py
CHANGED
|
@@ -7,9 +7,6 @@ from .models import (
|
|
|
7
7
|
)
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
10
|
class UserSerializer(serializers.ModelSerializer):
|
|
14
11
|
avatar = serializers.SerializerMethodField()
|
|
15
12
|
role = serializers.IntegerField(source='role_id')
|
|
@@ -81,7 +78,7 @@ class FingerprintSerializer(serializers.ModelSerializer):
|
|
|
81
78
|
|
|
82
79
|
class Meta:
|
|
83
80
|
model = Fingerprint
|
|
84
|
-
fields = 'id', 'type', 'value', 'user'
|
|
81
|
+
fields = 'id', 'type', 'value', 'user', 'name'
|
|
85
82
|
read_only_fields = ('id', 'type', 'value')
|
|
86
83
|
|
|
87
84
|
def get_type(self, obj):
|
|
@@ -141,6 +141,7 @@ simo/core/management/commands/gateways_manager.py,sha256=a_JmUG1SPJhbhPh5QdViCT5
|
|
|
141
141
|
simo/core/management/commands/run_gateway.py,sha256=bp0FQQoBeOSoxjHCCMicDL1fxPZZGyLgnq2QKht3bJo,645
|
|
142
142
|
simo/core/management/commands/update.py,sha256=Y2_6EL8E757nr-MjSuIpdSsEItI0yN42DT5P1e1zkno,175
|
|
143
143
|
simo/core/management/commands/__pycache__/__init__.cpython-38.pyc,sha256=WKpfZZpAB9D7U4X6oWQIrU_H-6rUmq8Gl9fj9XaY2fw,178
|
|
144
|
+
simo/core/management/commands/__pycache__/gateways_manager.cpython-38.pyc,sha256=pgEJdchhOcqKCpjdRMeF0_QKJfMmfSkl_W4TUwcgS9o,6031
|
|
144
145
|
simo/core/migrations/0001_initial.py,sha256=0Uy7IqJxQQYlurs8Mw_RJy7NaWS7BU0VFmZBBz8YkQI,9220
|
|
145
146
|
simo/core/migrations/0002_load_icons.py,sha256=s9TtGo5NWEyWV3BspfbDNAlWqmQWxmDj7GjEaJXruFk,2044
|
|
146
147
|
simo/core/migrations/0003_create_default_zones_and_categories.py,sha256=59pZuYv1b4jaBaLRtkHwGroYYVjwgS1m1wV1FOoey7s,1728
|
|
@@ -10167,14 +10168,14 @@ simo/fleet/api.py,sha256=Hxn84xI-Q77HxjINgRbjSJQOv9jii4OL20LxK0VSrS8,2499
|
|
|
10167
10168
|
simo/fleet/auto_urls.py,sha256=X04oKJWA48wFW5iXg3PPROY2KDdHn_a99orQSE28QC4,518
|
|
10168
10169
|
simo/fleet/base_types.py,sha256=wL9RVkHr0gA7HI1wZq0pruGEIgvQqpfnCL4cC3ywsvw,102
|
|
10169
10170
|
simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
|
|
10170
|
-
simo/fleet/controllers.py,sha256=
|
|
10171
|
+
simo/fleet/controllers.py,sha256=vt-IeCnMN70RU498SIasWk1fW29hvMWU7WgYtbGA4gA,18663
|
|
10171
10172
|
simo/fleet/forms.py,sha256=lWJ9luZiRJD4yLQCdCMmkvezk-vY3yVb3q7Y5C4r9qc,35649
|
|
10172
10173
|
simo/fleet/gateways.py,sha256=EbSxv1DGSuv8MT7MmpZxKgV041umOteFW2Xo4LybzWI,2284
|
|
10173
10174
|
simo/fleet/managers.py,sha256=XOpDOA9L-f_550TNSyXnJbun2EmtGz1TenVTMlUSb8E,807
|
|
10174
10175
|
simo/fleet/models.py,sha256=J-rnn7Ew-7s3646NNRVY947Sbz21mUD_nBHtuHAKXds,14160
|
|
10175
10176
|
simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
|
|
10176
10177
|
simo/fleet/serializers.py,sha256=zEpXAXxjk4Rf1JhlNnLTrs20qJggqjvIySbeHVo4Tt4,1505
|
|
10177
|
-
simo/fleet/socket_consumers.py,sha256=
|
|
10178
|
+
simo/fleet/socket_consumers.py,sha256=Z-MooNN2HQccdhkynADJks5slbK9mGsnEpMLuA51H3I,18534
|
|
10178
10179
|
simo/fleet/utils.py,sha256=2gcjbwQawsGw2edr_wm9q6XacGpYqO-gd4BF1t0Hg6U,3511
|
|
10179
10180
|
simo/fleet/views.py,sha256=YKkcf8KcLgiPjr-brIHvu5yr1zZUIs8aytAgwdo49Pg,1694
|
|
10180
10181
|
simo/fleet/__pycache__/__init__.cpython-38.pyc,sha256=pIZE7EL6-cuJ3pQtaSwjKLrKLsTYelp1k9sRhXKLh6s,159
|
|
@@ -10183,14 +10184,14 @@ simo/fleet/__pycache__/api.cpython-38.pyc,sha256=rL9fb7cCQatyFvXyKmlNOKmxVo8vHYe
|
|
|
10183
10184
|
simo/fleet/__pycache__/auto_urls.cpython-38.pyc,sha256=SqyTuaz_kEBvx-bL46SclsZEEP5RFh6U6TGKyXDdiOE,565
|
|
10184
10185
|
simo/fleet/__pycache__/base_types.cpython-38.pyc,sha256=deyPwjpT6xZiFxBGFnj5b7R-lbdOTh2krgpJhrcGVhc,274
|
|
10185
10186
|
simo/fleet/__pycache__/ble.cpython-38.pyc,sha256=Nrof9w7cm4OlpFWHeVnmvvanh2_oF9oQ3TknJiV93-0,1267
|
|
10186
|
-
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
10187
|
+
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=KAmVOz5Z8Qt9m2Jw_MPoCWeP220urQ73F2lfXEtHWNo,16199
|
|
10187
10188
|
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=pHgx8ulx_2v0L0bkUHaW13Tn9KcfOP6ROhgHXPVvKJE,25510
|
|
10188
10189
|
simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=xg7fW5JusYwl6epn5nEjxQJlFOyQ18SVybOaRBcpwl8,2418
|
|
10189
10190
|
simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=8uz-xpUiqbGDgXIZ_XRZtFb-Tju6NGxflGg-Ee4Yo6k,1310
|
|
10190
10191
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=S9pPqRjIxASXahoIOkkjQX7cBwjkdu4d2nXMju0-Cf8,12283
|
|
10191
10192
|
simo/fleet/__pycache__/routing.cpython-38.pyc,sha256=aPrCmxFKVyB8R8ZbJDwdPdFfvT7CvobovvZeq_mqRgY,314
|
|
10192
10193
|
simo/fleet/__pycache__/serializers.cpython-38.pyc,sha256=yuY2H7jcboQGZdjb5WIsgNHXFhI9IPMUrEu9NgSiXNo,2452
|
|
10193
|
-
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=
|
|
10194
|
+
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=RjzPD580096fby0HYLzZorm61zdZNOq5AHXmNAC4Yd8,13764
|
|
10194
10195
|
simo/fleet/__pycache__/utils.cpython-38.pyc,sha256=dTuvW9MnhUycwdCc6eHYfHsMlvZw-CmEWXWYu18X8Uw,1955
|
|
10195
10196
|
simo/fleet/__pycache__/views.cpython-38.pyc,sha256=7hhRBlf6Vczg0TTdwTE5Hc5B-F7VcvFg1iS6mfs-fgo,1790
|
|
10196
10197
|
simo/fleet/migrations/0001_initial.py,sha256=lce8nkD8Sz6pYr-XJSpDm4CMDuB6TA__WtnHpIp-eA4,1326
|
|
@@ -10226,6 +10227,7 @@ simo/fleet/migrations/0030_colonelpin_label_alter_colonel_type.py,sha256=5T5bmQx
|
|
|
10226
10227
|
simo/fleet/migrations/0031_alter_colonel_type.py,sha256=Kv_Gld-X0NZ7d2P9WBXfIlhq4iPH1_NnzDrPyy9_Pos,522
|
|
10227
10228
|
simo/fleet/migrations/0032_auto_20240415_0736.py,sha256=yBT48pIfDBm7J1Y3LrvNtmihRbwEXjmBGBB1ghc2z5Y,1800
|
|
10228
10229
|
simo/fleet/migrations/0033_auto_20240415_0736.py,sha256=3ysmu-fkzwY_7l4tDIHEylcoqXGdW_KMKHs1J3_0i5w,771
|
|
10230
|
+
simo/fleet/migrations/0034_auto_20240418_0735.py,sha256=rVJwhoSZGUZP3B7ZzkbtQRypSktkAO7TAE6jJ0MY8F4,950
|
|
10229
10231
|
simo/fleet/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10230
10232
|
simo/fleet/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=9kc1UyMEYkRNVnZ7iwZbiW1t3qWXROvWrI2G1BdzIaA,1250
|
|
10231
10233
|
simo/fleet/migrations/__pycache__/0002_auto_20220422_0743.cpython-38.pyc,sha256=8oxhGb7rL8QYKlBLU3pOYcd8aHeQWDB9I8awkK04mXg,841
|
|
@@ -10260,13 +10262,14 @@ simo/fleet/migrations/__pycache__/0030_colonelpin_label_alter_colonel_type.cpyth
|
|
|
10260
10262
|
simo/fleet/migrations/__pycache__/0031_alter_colonel_type.cpython-38.pyc,sha256=zXX254ZgEE4uSV8xnLdH9DM3qy-ICmbrT05i0Q287bU,733
|
|
10261
10263
|
simo/fleet/migrations/__pycache__/0032_auto_20240415_0736.cpython-38.pyc,sha256=QD3JNIDQhzseXKLRYysYY3Q9_vDaurIhlWBcri83FMw,1655
|
|
10262
10264
|
simo/fleet/migrations/__pycache__/0033_auto_20240415_0736.cpython-38.pyc,sha256=zN3KrYHzE40Wfnt48zp7AGCIa8Jj9-fPXxo3adZIxwo,1046
|
|
10265
|
+
simo/fleet/migrations/__pycache__/0034_auto_20240418_0735.cpython-38.pyc,sha256=FEd_tw1GVVrRYd44Fdx1Yf-rsVIebHLel7jlv434A_E,924
|
|
10263
10266
|
simo/fleet/migrations/__pycache__/__init__.cpython-38.pyc,sha256=5k1KW0jeSDzw6RnVPRq4CaO13Lg7M0F-pxA_gqqZ6Mg,170
|
|
10264
10267
|
simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10265
10268
|
simo/generic/app_widgets.py,sha256=E_pnpA1hxMIhenRCrHoQ5cik06jm2BAHCkl_eo-OudU,1264
|
|
10266
10269
|
simo/generic/base_types.py,sha256=djymox_boXTHX1BTTCLXrCH7ED-uAsV_idhaDOc3OLI,409
|
|
10267
10270
|
simo/generic/controllers.py,sha256=Mn4jmOx-1Yb5rAZb9ZcfMcYBMf7r61NQV2p8JgxbYvQ,51675
|
|
10268
10271
|
simo/generic/forms.py,sha256=p-gzH1z7J0CV8bKMmWTQluzpYmgc7fF1aEHL7eL-fJI,20075
|
|
10269
|
-
simo/generic/gateways.py,sha256=
|
|
10272
|
+
simo/generic/gateways.py,sha256=L3obiClEomiRbWfDu_LrMbhH9r7hUH4e0oBeLMXghXw,16027
|
|
10270
10273
|
simo/generic/models.py,sha256=d00Q-UXtt7mG9MdPpZ3mXnxKjwlTI2FgCEklZpGBk7s,3629
|
|
10271
10274
|
simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
|
|
10272
10275
|
simo/generic/socket_consumers.py,sha256=NfTQGYtVAc864IoogZRxf_0xpDPM0eMCWn0SlKA5P7Y,1751
|
|
@@ -10275,7 +10278,7 @@ simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=0IoKRG9n1tkNRRkrqAeOQ
|
|
|
10275
10278
|
simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=ptw6axyAqemZA35oa6vzr7EihzvbhW9w7Y-G6kfDedU,555
|
|
10276
10279
|
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=3U3W-EgpKdqh7MN94ZaoCEGvY4SSq2zsTptJoZbysgM,32795
|
|
10277
10280
|
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=Uvh-YQxcN-0RCinRi13fyITM1Jxm6FwYQyXs3OLNruA,15699
|
|
10278
|
-
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=
|
|
10281
|
+
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=syQzoWdRGcU4kKRMC8HfbQ9VQiGxMWkzYwJDqQcfDwg,11940
|
|
10279
10282
|
simo/generic/__pycache__/models.cpython-38.pyc,sha256=ItjBjJaioJttzSUJsHCKV4xiqH6QX90kRw1C_Xx7mMk,3065
|
|
10280
10283
|
simo/generic/__pycache__/routing.cpython-38.pyc,sha256=xtxTUTBTdivzFyA5Wh7k-hUj1WDO_FiRq6HYXdbr9Ks,382
|
|
10281
10284
|
simo/generic/__pycache__/socket_consumers.cpython-38.pyc,sha256=piFHces0J9QuXu_CNBCQCYjoZEeoaxyVjLfJ9KaR8C8,1898
|
|
@@ -10356,9 +10359,9 @@ simo/users/auth_backends.py,sha256=I5pnaTa20-Lxfw_dFG8471xDITb0_fQl1PVhJalp5vU,3
|
|
|
10356
10359
|
simo/users/auto_urls.py,sha256=lcJvteBsbHQMJieZpDz-63tDYejLApqsW3CUnDakd7k,272
|
|
10357
10360
|
simo/users/dynamic_settings.py,sha256=sEIsi4yJw3kH46Jq_aOkSuK7QTfQACGUE-lkyBogCaM,570
|
|
10358
10361
|
simo/users/middleware.py,sha256=GMCrnWSc_2qCleyQIkfQGdL-pU-UTEcSg1wPvIKZ9uk,1210
|
|
10359
|
-
simo/users/models.py,sha256=
|
|
10362
|
+
simo/users/models.py,sha256=e4Abz8Px4f9QUGmiqhNKduBeUjJMPlnf0tDdqRCSM1A,18565
|
|
10360
10363
|
simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
|
|
10361
|
-
simo/users/serializers.py,sha256=
|
|
10364
|
+
simo/users/serializers.py,sha256=Gay16bdHinjhbn1Ly2KBwnomwK2d4jclO-OqAVeWbZI,2491
|
|
10362
10365
|
simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
|
|
10363
10366
|
simo/users/sso_views.py,sha256=-XI67TvQ7SN3goU4OuAHyn84u_1vtusvpn7Pu0K97zo,4648
|
|
10364
10367
|
simo/users/tasks.py,sha256=v9J7t4diB0VnqUDVZAQ8H-rlr4ZR14bgEUuEGpODyOI,854
|
|
@@ -10371,9 +10374,9 @@ simo/users/__pycache__/auth_backends.cpython-38.pyc,sha256=MuOieBIXt6lrDx83-UQtd
|
|
|
10371
10374
|
simo/users/__pycache__/auto_urls.cpython-38.pyc,sha256=K-3sz2h-cEitoflSmZk1t0eUg5mQMMGLNZFREVwG7_o,430
|
|
10372
10375
|
simo/users/__pycache__/dynamic_settings.cpython-38.pyc,sha256=6F8JBjZkHykySnmZjNEzjS0ijbmPdcp9yUAZ5kqq_Fo,864
|
|
10373
10376
|
simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
|
|
10374
|
-
simo/users/__pycache__/models.cpython-38.pyc,sha256=
|
|
10377
|
+
simo/users/__pycache__/models.cpython-38.pyc,sha256=qSDZPjbMd5t7qDWGQSX6zE1IwrSsqzzNFYGanlAMMDw,17515
|
|
10375
10378
|
simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
|
|
10376
|
-
simo/users/__pycache__/serializers.cpython-38.pyc,sha256=
|
|
10379
|
+
simo/users/__pycache__/serializers.cpython-38.pyc,sha256=RfyHFuPrIhPJ62h5RHy3h17S-5DX41hL5cLhmcDIaXo,3435
|
|
10377
10380
|
simo/users/__pycache__/sso_urls.cpython-38.pyc,sha256=uAwDozpOmrhUald-8tOHANILXkH7-TI8fNYXOtPkSY8,402
|
|
10378
10381
|
simo/users/__pycache__/sso_views.cpython-38.pyc,sha256=sHEoxLOac3U3Epmhm197huFnW_J3gGCDZSji57itijU,3969
|
|
10379
10382
|
simo/users/__pycache__/tasks.cpython-38.pyc,sha256=xq-XaJ5gzkpVVZRWe0bvGdA31Eh_WS2rKSY62p4eY5E,1111
|
|
@@ -10404,6 +10407,7 @@ simo/users/migrations/0022_userdevicereportlog_instance.py,sha256=h0ue6uMcIyVs2o
|
|
|
10404
10407
|
simo/users/migrations/0023_auto_20240105_0719.py,sha256=OAkWJusXjzT6dx4EgwjvNvMEgrP_zvcG8zgi774pYG0,700
|
|
10405
10408
|
simo/users/migrations/0024_fingerprint.py,sha256=0wfplJ3iHv_6heJx7yIQYX3D68Nf9pLPlIZoM5NcPk8,1021
|
|
10406
10409
|
simo/users/migrations/0025_rename_name_fingerprint_type_and_more.py,sha256=Azw_a1qxIDttdG4m0DcLa82amv-mFsbW8PsjG9qFL0Y,466
|
|
10410
|
+
simo/users/migrations/0026_fingerprint_name.py,sha256=DPmfi1brbaPymdNiPgc7dINSKy97yVHdKpKp-ZfnS3I,428
|
|
10407
10411
|
simo/users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10408
10412
|
simo/users/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=ngXA1QR-Qc2VS-BTTZWybVXiEfifIgKaVS6bADiN8nU,4269
|
|
10409
10413
|
simo/users/migrations/__pycache__/0002_componentpermission.cpython-38.pyc,sha256=pknJnpic8p6Vdx9DX41FfODXNnvexDswJtUCmC5w1tg,995
|
|
@@ -10430,6 +10434,7 @@ simo/users/migrations/__pycache__/0022_userdevicereportlog_instance.cpython-38.p
|
|
|
10430
10434
|
simo/users/migrations/__pycache__/0023_auto_20240105_0719.cpython-38.pyc,sha256=VOc5g9AlyhnB3QhU6GmOw6RPWUh4WhtLIOypCYb4jXY,739
|
|
10431
10435
|
simo/users/migrations/__pycache__/0024_fingerprint.cpython-38.pyc,sha256=QLW3v4BK78HL682qeHkK_aXZgCJSs9sIIte60ieF5ZY,1132
|
|
10432
10436
|
simo/users/migrations/__pycache__/0025_rename_name_fingerprint_type_and_more.cpython-38.pyc,sha256=21CgVotrTT02MW58zqePt_-gsbpdN_m01T_SOHgWkBo,631
|
|
10437
|
+
simo/users/migrations/__pycache__/0026_fingerprint_name.cpython-38.pyc,sha256=Ti0NLIKb0Wffn33LCBQQ-cumFCX6JFxSi1FYoV8C0ZE,642
|
|
10433
10438
|
simo/users/migrations/__pycache__/__init__.cpython-38.pyc,sha256=NKq7WLgktK8WV1oOqCPbAbdkrPV5GRGhYx4VxxI4dcs,170
|
|
10434
10439
|
simo/users/templates/conf/mosquitto.conf,sha256=1eIGNuRu4Y3hfAU6qiWix648eCRrw0oOT24PnyFI4ys,189
|
|
10435
10440
|
simo/users/templates/conf/mosquitto_acls.conf,sha256=ga44caTDNQE0CBKw55iM2jOuna6-9fKGwAhjyERZdRE,500
|
|
@@ -10439,8 +10444,8 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10439
10444
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10440
10445
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10441
10446
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10442
|
-
simo-2.0.
|
|
10443
|
-
simo-2.0.
|
|
10444
|
-
simo-2.0.
|
|
10445
|
-
simo-2.0.
|
|
10446
|
-
simo-2.0.
|
|
10447
|
+
simo-2.0.10.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10448
|
+
simo-2.0.10.dist-info/METADATA,sha256=S0PRMS4s3GZwHxmJoI8u5TNtamuivqP6Xi2mr3K9FWU,1700
|
|
10449
|
+
simo-2.0.10.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
10450
|
+
simo-2.0.10.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10451
|
+
simo-2.0.10.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|