simo 2.7.20__py3-none-any.whl → 2.8.1__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__/controllers.cpython-312.pyc +0 -0
- simo/automation/controllers.py +1 -1
- simo/core/__pycache__/api_auth.cpython-312.pyc +0 -0
- simo/core/__pycache__/controllers.cpython-312.pyc +0 -0
- simo/core/__pycache__/forms.cpython-312.pyc +0 -0
- simo/core/__pycache__/managers.cpython-312.pyc +0 -0
- simo/core/__pycache__/middleware.cpython-312.pyc +0 -0
- simo/core/__pycache__/models.cpython-312.pyc +0 -0
- simo/core/__pycache__/permissions.cpython-312.pyc +0 -0
- simo/core/__pycache__/serializers.cpython-312.pyc +0 -0
- simo/core/__pycache__/signal_receivers.cpython-312.pyc +0 -0
- simo/core/__pycache__/socket_consumers.cpython-312.pyc +0 -0
- simo/core/__pycache__/tasks.cpython-312.pyc +0 -0
- simo/core/api_auth.py +1 -1
- simo/core/controllers.py +2 -7
- simo/core/forms.py +1 -1
- simo/core/managers.py +1 -1
- simo/core/middleware.py +6 -13
- simo/core/models.py +1 -1
- simo/core/permissions.py +0 -2
- simo/core/serializers.py +1 -2
- simo/core/signal_receivers.py +2 -2
- simo/core/socket_consumers.py +4 -5
- simo/generic/__pycache__/controllers.cpython-312.pyc +0 -0
- simo/generic/__pycache__/forms.cpython-312.pyc +0 -0
- simo/generic/__pycache__/gateways.cpython-312.pyc +0 -0
- simo/generic/__pycache__/socket_consumers.cpython-312.pyc +0 -0
- simo/generic/controllers.py +0 -7
- simo/generic/forms.py +2 -2
- simo/generic/gateways.py +1 -1
- simo/generic/socket_consumers.py +2 -2
- simo/users/__pycache__/middleware.cpython-312.pyc +0 -0
- simo/users/__pycache__/models.cpython-312.pyc +0 -0
- simo/users/__pycache__/serializers.cpython-312.pyc +0 -0
- simo/users/__pycache__/utils.cpython-312.pyc +0 -0
- simo/users/__pycache__/views.cpython-312.pyc +0 -0
- simo/users/middleware.py +4 -30
- simo/users/models.py +1 -2
- simo/users/serializers.py +2 -2
- simo/users/utils.py +18 -1
- simo/users/views.py +2 -0
- {simo-2.7.20.dist-info → simo-2.8.1.dist-info}/METADATA +2 -2
- {simo-2.7.20.dist-info → simo-2.8.1.dist-info}/RECORD +47 -47
- {simo-2.7.20.dist-info → simo-2.8.1.dist-info}/WHEEL +1 -1
- {simo-2.7.20.dist-info → simo-2.8.1.dist-info}/LICENSE.md +0 -0
- {simo-2.7.20.dist-info → simo-2.8.1.dist-info}/entry_points.txt +0 -0
- {simo-2.7.20.dist-info → simo-2.8.1.dist-info}/top_level.txt +0 -0
|
Binary file
|
simo/automation/controllers.py
CHANGED
|
@@ -8,7 +8,7 @@ from bs4 import BeautifulSoup
|
|
|
8
8
|
from django.core.exceptions import ValidationError
|
|
9
9
|
from django.utils.translation import gettext_lazy as _
|
|
10
10
|
from simo.conf import dynamic_settings
|
|
11
|
-
from simo.users.
|
|
11
|
+
from simo.users.utils import get_current_user
|
|
12
12
|
from simo.core.models import RUN_STATUS_CHOICES_MAP, Component
|
|
13
13
|
from simo.core.utils.operations import OPERATIONS
|
|
14
14
|
from simo.core.middleware import get_current_instance
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/core/api_auth.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
|
|
2
2
|
from rest_framework import HTTP_HEADER_ENCODING, exceptions
|
|
3
3
|
from simo.users.models import User
|
|
4
|
-
from simo.users.
|
|
4
|
+
from simo.users.utils import introduce_user
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class SecretKeyAuth(BasicAuthentication):
|
simo/core/controllers.py
CHANGED
|
@@ -10,8 +10,7 @@ from django.core.exceptions import ValidationError
|
|
|
10
10
|
from django.utils import timezone
|
|
11
11
|
from django.template.loader import render_to_string
|
|
12
12
|
from django.utils.translation import gettext_lazy as _
|
|
13
|
-
from simo.users.
|
|
14
|
-
from simo.users.utils import get_device_user
|
|
13
|
+
from simo.users.utils import introduce_user, get_current_user, get_device_user
|
|
15
14
|
from .utils.helpers import is_hex_color, classproperty
|
|
16
15
|
# from django.utils.functional import classproperty
|
|
17
16
|
from .gateways import BaseGatewayHandler
|
|
@@ -291,10 +290,6 @@ class ControllerBase(ABC):
|
|
|
291
290
|
if not actor:
|
|
292
291
|
actor = get_current_user()
|
|
293
292
|
|
|
294
|
-
# Introducing user to this thread for changes that might happen to other components
|
|
295
|
-
# in relation to the change of this component
|
|
296
|
-
introduce(actor)
|
|
297
|
-
|
|
298
293
|
self.component.refresh_from_db()
|
|
299
294
|
if value != self.component.value:
|
|
300
295
|
self.component.value_previous = self.component.value
|
|
@@ -319,7 +314,7 @@ class ControllerBase(ABC):
|
|
|
319
314
|
|
|
320
315
|
# Introducing user to this thread for changes that might happen to other components
|
|
321
316
|
# in relation to the change of this component
|
|
322
|
-
|
|
317
|
+
introduce_user(actor)
|
|
323
318
|
self.component.alive = is_alive
|
|
324
319
|
if error_msg != None:
|
|
325
320
|
self.component.error_msg = error_msg if error_msg.strip() else None
|
simo/core/forms.py
CHANGED
simo/core/managers.py
CHANGED
|
@@ -58,7 +58,7 @@ class ComponentsManager(models.Manager):
|
|
|
58
58
|
"""
|
|
59
59
|
from .models import Component
|
|
60
60
|
from .controllers import BEFORE_SEND
|
|
61
|
-
from simo.users.
|
|
61
|
+
from simo.users.utils import get_current_user
|
|
62
62
|
from .events import GatewayObjectCommand
|
|
63
63
|
|
|
64
64
|
for component, value in data.items():
|
simo/core/middleware.py
CHANGED
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
import pytz
|
|
2
|
-
import threading
|
|
3
|
-
import re
|
|
4
2
|
from django.utils import timezone
|
|
5
3
|
from django.shortcuts import render
|
|
6
4
|
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
class InstanceCarrier:
|
|
7
|
+
instance = None
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
def get_current_request():
|
|
12
|
-
try:
|
|
13
|
-
return _thread_locals.request
|
|
14
|
-
except:
|
|
15
|
-
pass
|
|
9
|
+
_instance_carrier = InstanceCarrier()
|
|
16
10
|
|
|
17
11
|
|
|
18
12
|
def introduce_instance(instance, request=None):
|
|
19
13
|
if request and request.user.is_authenticated \
|
|
20
14
|
and instance not in request.user.instances:
|
|
21
15
|
return
|
|
22
|
-
|
|
16
|
+
_instance_carrier.instance = instance
|
|
23
17
|
if request:
|
|
24
18
|
request.session['instance_id'] = instance.id
|
|
25
19
|
request.instance = instance
|
|
@@ -28,7 +22,7 @@ def introduce_instance(instance, request=None):
|
|
|
28
22
|
def drop_current_instance(request=None):
|
|
29
23
|
if request and 'instance_id' in request.session:
|
|
30
24
|
request.session.pop('instance_id')
|
|
31
|
-
|
|
25
|
+
_instance_carrier.instance = None
|
|
32
26
|
|
|
33
27
|
|
|
34
28
|
def get_current_instance(request=None):
|
|
@@ -42,7 +36,7 @@ def get_current_instance(request=None):
|
|
|
42
36
|
else:
|
|
43
37
|
introduce_instance(instance, request)
|
|
44
38
|
|
|
45
|
-
instance = getattr(
|
|
39
|
+
instance = getattr(_instance_carrier, 'instance', None)
|
|
46
40
|
|
|
47
41
|
# NEVER FORCE THIS! IT's A very BAD IDEA!
|
|
48
42
|
# For example gateways run on an instance neutral environment!
|
|
@@ -57,7 +51,6 @@ def get_current_instance(request=None):
|
|
|
57
51
|
def simo_router_middleware(get_response):
|
|
58
52
|
|
|
59
53
|
def middleware(request):
|
|
60
|
-
_thread_locals.request = request
|
|
61
54
|
|
|
62
55
|
request.relay = None
|
|
63
56
|
|
simo/core/models.py
CHANGED
|
@@ -494,7 +494,7 @@ def is_in_alarm(self):
|
|
|
494
494
|
)
|
|
495
495
|
|
|
496
496
|
def save(self, *args, **kwargs):
|
|
497
|
-
from simo.users.
|
|
497
|
+
from simo.users.utils import get_current_user
|
|
498
498
|
if self.alarm_category is not None:
|
|
499
499
|
if self.arm_status == 'pending-arm':
|
|
500
500
|
if not self.is_in_alarm():
|
simo/core/permissions.py
CHANGED
|
@@ -80,8 +80,6 @@ class ComponentPermission(BasePermission):
|
|
|
80
80
|
return True
|
|
81
81
|
if request.user.is_master:
|
|
82
82
|
return True
|
|
83
|
-
if obj.controller and obj.controller.masters_only:
|
|
84
|
-
return False
|
|
85
83
|
user_role = request.user.get_role(view.instance)
|
|
86
84
|
if user_role.is_superuser:
|
|
87
85
|
return True
|
simo/core/serializers.py
CHANGED
|
@@ -8,7 +8,6 @@ from django.conf import settings
|
|
|
8
8
|
from django.forms.utils import pretty_name
|
|
9
9
|
from collections.abc import Iterable
|
|
10
10
|
from easy_thumbnails.files import get_thumbnailer
|
|
11
|
-
from simo.core.middleware import get_current_request
|
|
12
11
|
from rest_framework import serializers
|
|
13
12
|
from rest_framework.fields import SkipField
|
|
14
13
|
from rest_framework.relations import Hyperlink, PKOnlyObject
|
|
@@ -81,7 +80,7 @@ class CategorySerializer(serializers.ModelSerializer):
|
|
|
81
80
|
{'size': (830, 430), 'crop': True}
|
|
82
81
|
)
|
|
83
82
|
url = '/' + thumb.path.strip(settings.VAR_DIR)
|
|
84
|
-
request =
|
|
83
|
+
request = self.context['request']
|
|
85
84
|
if request:
|
|
86
85
|
url = request.build_absolute_uri(url)
|
|
87
86
|
return url
|
simo/core/signal_receivers.py
CHANGED
|
@@ -18,7 +18,7 @@ def create_instance_defaults(sender, instance, created, **kwargs):
|
|
|
18
18
|
if not created:
|
|
19
19
|
return
|
|
20
20
|
|
|
21
|
-
from simo.users.
|
|
21
|
+
from simo.users.utils import get_current_user
|
|
22
22
|
actor = get_current_user()
|
|
23
23
|
action.send(
|
|
24
24
|
actor, target=instance, verb="instance created",
|
|
@@ -121,7 +121,7 @@ def create_instance_defaults(sender, instance, created, **kwargs):
|
|
|
121
121
|
@receiver(post_save, sender=Zone)
|
|
122
122
|
@receiver(post_save, sender=Category)
|
|
123
123
|
def post_save_actions_dispatcher(sender, instance, created, **kwargs):
|
|
124
|
-
from simo.users.
|
|
124
|
+
from simo.users.utils import get_current_user
|
|
125
125
|
actor = get_current_user()
|
|
126
126
|
if created:
|
|
127
127
|
verb = 'created'
|
simo/core/socket_consumers.py
CHANGED
|
@@ -9,7 +9,7 @@ from channels.generic.websocket import AsyncWebsocketConsumer, WebsocketConsumer
|
|
|
9
9
|
from simo.core.events import ObjectChangeEvent, get_event_obj
|
|
10
10
|
from simo.core.utils.logs import capture_socket_errors
|
|
11
11
|
import paho.mqtt.client as mqtt
|
|
12
|
-
from simo.users.
|
|
12
|
+
from simo.users.utils import introduce_user
|
|
13
13
|
from simo.core.models import Component, Gateway
|
|
14
14
|
from simo.core.utils.model_helpers import get_log_file_path
|
|
15
15
|
from simo.core.middleware import introduce_instance
|
|
@@ -41,7 +41,6 @@ class LogConsumer(AsyncWebsocketConsumer):
|
|
|
41
41
|
)(
|
|
42
42
|
pk=self.scope['url_route']['kwargs']['object_pk'],
|
|
43
43
|
)
|
|
44
|
-
introduce(self.scope['user'])
|
|
45
44
|
await self.accept()
|
|
46
45
|
|
|
47
46
|
if not self.scope['user'].is_authenticated:
|
|
@@ -137,7 +136,7 @@ class GatewayController(SIMOWebsocketConsumer):
|
|
|
137
136
|
|
|
138
137
|
def connect(self):
|
|
139
138
|
|
|
140
|
-
|
|
139
|
+
introduce_user(self.scope['user'])
|
|
141
140
|
|
|
142
141
|
self.gateway = Gateway.objects.get(
|
|
143
142
|
pk=self.scope['url_route']['kwargs']['gateway_id']
|
|
@@ -194,7 +193,7 @@ class ComponentController(SIMOWebsocketConsumer):
|
|
|
194
193
|
|
|
195
194
|
def connect(self):
|
|
196
195
|
|
|
197
|
-
|
|
196
|
+
introduce_user(self.scope['user'])
|
|
198
197
|
self.accept()
|
|
199
198
|
|
|
200
199
|
try:
|
|
@@ -249,7 +248,7 @@ class ComponentController(SIMOWebsocketConsumer):
|
|
|
249
248
|
))
|
|
250
249
|
|
|
251
250
|
def receive(self, text_data=None, bytes_data=None, **kwargs):
|
|
252
|
-
|
|
251
|
+
introduce_user(self.scope['user'])
|
|
253
252
|
json_data = json.loads(text_data)
|
|
254
253
|
self.send_value = json_data.pop('send_value', False)
|
|
255
254
|
for method, param in json_data.items():
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/generic/controllers.py
CHANGED
|
@@ -8,8 +8,6 @@ from django.utils.functional import cached_property
|
|
|
8
8
|
from django.utils.translation import gettext_lazy as _
|
|
9
9
|
from django.conf import settings
|
|
10
10
|
from django.urls import reverse_lazy
|
|
11
|
-
from simo.users.middleware import get_current_user, introduce
|
|
12
|
-
from simo.users.utils import get_system_user
|
|
13
11
|
from simo.core.models import Component
|
|
14
12
|
from simo.core.utils.helpers import get_random_string
|
|
15
13
|
from simo.core.middleware import get_current_instance
|
|
@@ -197,9 +195,6 @@ class Thermostat(ControllerBase):
|
|
|
197
195
|
low = target_temp - self.component.config['reaction_difference'] / 2
|
|
198
196
|
high = target_temp + self.component.config['reaction_difference'] / 2
|
|
199
197
|
|
|
200
|
-
if not get_current_user():
|
|
201
|
-
introduce(get_system_user())
|
|
202
|
-
|
|
203
198
|
if mode in ('auto', 'heater'):
|
|
204
199
|
if (not heater or not heater.alive) and mode == 'heater':
|
|
205
200
|
self.component.error_msg = "No heater"
|
|
@@ -671,7 +666,6 @@ class Watering(ControllerBase):
|
|
|
671
666
|
minute_to_start -= 24*60
|
|
672
667
|
|
|
673
668
|
if minute_to_start <= local_minute < minute_to_start + gap:
|
|
674
|
-
introduce(get_system_user())
|
|
675
669
|
self.reset()
|
|
676
670
|
self.start()
|
|
677
671
|
|
|
@@ -929,7 +923,6 @@ class AlarmClock(ControllerBase):
|
|
|
929
923
|
continue
|
|
930
924
|
if event['uid'] in current_value['events_triggered']:
|
|
931
925
|
continue
|
|
932
|
-
introduce(get_system_user())
|
|
933
926
|
self._execute_event(event)
|
|
934
927
|
current_value['events_triggered'].append(event['uid'])
|
|
935
928
|
|
simo/generic/forms.py
CHANGED
|
@@ -689,8 +689,8 @@ class AudioAlertConfigForm(BaseComponentForm):
|
|
|
689
689
|
).delete()
|
|
690
690
|
self.instance.config['sound_id'] = sound.id
|
|
691
691
|
self.instance.config['duration'] = self.cleaned_data['sound'].duration
|
|
692
|
-
self.instance.config['stream_url'] = sound.stream_url()
|
|
693
|
-
self.instance.config['file_url'] = sound.get_absolute_url()
|
|
692
|
+
self.instance.config['stream_url'] = sound.stream_url() # DENON Heos
|
|
693
|
+
self.instance.config['file_url'] = sound.get_absolute_url() # SONOS
|
|
694
694
|
self.instance.config['sound'] = self.cleaned_data['sound'].name
|
|
695
695
|
self.instance.save()
|
|
696
696
|
return obj
|
simo/generic/gateways.py
CHANGED
|
@@ -9,7 +9,7 @@ from django.utils import timezone
|
|
|
9
9
|
import paho.mqtt.client as mqtt
|
|
10
10
|
from simo.core.utils.helpers import get_self_ip
|
|
11
11
|
from simo.core.models import Component, PublicFile
|
|
12
|
-
from simo.core.middleware import
|
|
12
|
+
from simo.core.middleware import drop_current_instance
|
|
13
13
|
from simo.core.gateways import BaseObjectCommandsGatewayHandler
|
|
14
14
|
from simo.core.forms import BaseGatewayForm
|
|
15
15
|
from simo.core.events import GatewayObjectCommand, get_event_obj
|
simo/generic/socket_consumers.py
CHANGED
|
@@ -4,7 +4,7 @@ import base64
|
|
|
4
4
|
import time
|
|
5
5
|
from asgiref.sync import sync_to_async
|
|
6
6
|
from channels.generic.websocket import AsyncWebsocketConsumer
|
|
7
|
-
from simo.users.
|
|
7
|
+
from simo.users.utils import introduce_user
|
|
8
8
|
from simo.core.models import Component
|
|
9
9
|
|
|
10
10
|
|
|
@@ -22,7 +22,7 @@ class CamStreamConsumer(AsyncWebsocketConsumer):
|
|
|
22
22
|
if not self.scope['user'].is_active:
|
|
23
23
|
return self.close()
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
introduce_user(self.scope['user'])
|
|
26
26
|
|
|
27
27
|
try:
|
|
28
28
|
self.component = await sync_to_async(
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/users/middleware.py
CHANGED
|
@@ -1,43 +1,17 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
import threading
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
# Do not use this for anything permissions related!
|
|
3
|
+
from .utils import introduce_user, get_current_user # legacy support for older third party apps
|
|
6
4
|
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
# For example gunicorn does that when configured with more than one worker,
|
|
10
|
-
# which eventually messes up this system.
|
|
11
|
-
|
|
12
|
-
# We use daphne for asgi, which seems to be working fine for what we have already
|
|
13
|
-
# observed. However, this is a good candidate for reworking it in to something
|
|
14
|
-
# more robust.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
_thread_locals = threading.local()
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def get_current_user():
|
|
21
|
-
try:
|
|
22
|
-
return getattr(_thread_locals, 'user')
|
|
23
|
-
except:
|
|
24
|
-
from .utils import get_system_user
|
|
25
|
-
user = get_system_user()
|
|
26
|
-
introduce(user)
|
|
27
|
-
return user
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def introduce(user):
|
|
31
|
-
_thread_locals.user = user
|
|
5
|
+
# legacy support
|
|
6
|
+
introduce = introduce_user
|
|
32
7
|
|
|
33
8
|
|
|
34
9
|
class IntroduceUser:
|
|
35
|
-
'''Middleware which stores user object to local threading'''
|
|
36
10
|
|
|
37
11
|
def __init__(self, get_response):
|
|
38
12
|
self.get_response = get_response
|
|
39
13
|
|
|
40
14
|
def __call__(self, request):
|
|
41
15
|
if request.user.is_authenticated:
|
|
42
|
-
|
|
16
|
+
introduce_user(request.user)
|
|
43
17
|
return self.get_response(request)
|
simo/users/models.py
CHANGED
|
@@ -24,8 +24,7 @@ from simo.core.utils.mixins import SimoAdminMixin
|
|
|
24
24
|
from simo.core.utils.helpers import get_random_string
|
|
25
25
|
from simo.core.events import OnChangeMixin
|
|
26
26
|
from simo.core.middleware import get_current_instance
|
|
27
|
-
from .
|
|
28
|
-
from .utils import rebuild_authorized_keys
|
|
27
|
+
from .utils import get_current_user, rebuild_authorized_keys
|
|
29
28
|
from .managers import ActiveInstanceManager
|
|
30
29
|
|
|
31
30
|
|
simo/users/serializers.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from rest_framework import serializers
|
|
2
2
|
from collections.abc import Iterable
|
|
3
|
-
from simo.core.middleware import
|
|
3
|
+
from simo.core.middleware import get_current_instance
|
|
4
4
|
from simo.core.utils.api import ReadWriteSerializerMethodField
|
|
5
5
|
from .models import (
|
|
6
6
|
User, PermissionsRole, ComponentPermission,
|
|
@@ -38,7 +38,7 @@ class UserSerializer(serializers.ModelSerializer):
|
|
|
38
38
|
url = obj.avatar['avatar'].url
|
|
39
39
|
except:
|
|
40
40
|
return
|
|
41
|
-
request =
|
|
41
|
+
request = self.context['request']
|
|
42
42
|
if request:
|
|
43
43
|
url = request.build_absolute_uri(url)
|
|
44
44
|
return {
|
simo/users/utils.py
CHANGED
|
@@ -64,4 +64,21 @@ def update_mqtt_acls():
|
|
|
64
64
|
)
|
|
65
65
|
subprocess.run(
|
|
66
66
|
['service', 'mosquitto', 'reload'], stdout=subprocess.PIPE
|
|
67
|
-
)
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class _CurrentUerStore:
|
|
71
|
+
user = None
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
_current_user_store = _CurrentUerStore()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def introduce_user(user):
|
|
78
|
+
_current_user_store.user = user
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def get_current_user():
|
|
82
|
+
if not _current_user_store.user:
|
|
83
|
+
_current_user_store.user = get_system_user()
|
|
84
|
+
return _current_user_store.user
|
simo/users/views.py
CHANGED
|
@@ -19,7 +19,7 @@ simo/__pycache__/urls.cpython-38.pyc,sha256=u0x6EqT8S1YfDOSPgbI8Kf-RDlveY9OV-EDX
|
|
|
19
19
|
simo/__pycache__/wsgi.cpython-38.pyc,sha256=TpRxO7VM_ql31hbKphVdanydC5RI1nHB4l0QA2pdWxo,322
|
|
20
20
|
simo/automation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
simo/automation/app_widgets.py,sha256=gaqImMZjuMHm7nIb9a4D-Y3qipz_WhSPAHXcwGx4Uzs,199
|
|
22
|
-
simo/automation/controllers.py,sha256=
|
|
22
|
+
simo/automation/controllers.py,sha256=jHEjAsizxpy-xDphjTN1jyNB9IWUTM7hLBvsW9rWfng,11487
|
|
23
23
|
simo/automation/forms.py,sha256=UWnkxw8pILPK0smRPTo4SLgsZl78zOySx7JIc30Bgtk,10228
|
|
24
24
|
simo/automation/gateways.py,sha256=MAzv-i8BemhqfNY2NTYYlyCGPfctyNh4_dXyIZYJRSE,15848
|
|
25
25
|
simo/automation/helpers.py,sha256=iP-fxxB8HsFQy3k2CjFubu86aMqvWgmh-p24DiyOrek,4330
|
|
@@ -30,7 +30,7 @@ simo/automation/__pycache__/__init__.cpython-312.pyc,sha256=rIs1rkBbUhjXjbUffmq2
|
|
|
30
30
|
simo/automation/__pycache__/__init__.cpython-38.pyc,sha256=YmP0xAD-mxpQHgdTZeC64sXChA8TriMZD1jckNYi3xg,164
|
|
31
31
|
simo/automation/__pycache__/app_widgets.cpython-312.pyc,sha256=6u8LsTpf32yn0L49eI4A0sVHlSwl6gOyPlReUwQKoOM,577
|
|
32
32
|
simo/automation/__pycache__/app_widgets.cpython-38.pyc,sha256=7DfUA9V_1MiwrOe_ta-ts8dYY8xXb9UMg2_9A3XoRcs,523
|
|
33
|
-
simo/automation/__pycache__/controllers.cpython-312.pyc,sha256=
|
|
33
|
+
simo/automation/__pycache__/controllers.cpython-312.pyc,sha256=VvHAmaxfOKpyr9Dd256KXd_qxPCj_-hJYpRnpjXIAzk,14965
|
|
34
34
|
simo/automation/__pycache__/controllers.cpython-38.pyc,sha256=CL-0Tq9B4-E36fYfWT1XEBTq1dkq1W8003f6MrBnQU0,8391
|
|
35
35
|
simo/automation/__pycache__/forms.cpython-312.pyc,sha256=63rU0rWZk-Rz5qoMZiXl743WPc9NVm5d8bSd8w52T4E,12347
|
|
36
36
|
simo/automation/__pycache__/forms.cpython-38.pyc,sha256=cpA5hA2Iz3JsPC0Dq01ki1I7S9c5DKRcXveHApI1dJo,7772
|
|
@@ -89,7 +89,7 @@ simo/backups/migrations/__pycache__/__init__.cpython-38.pyc,sha256=Lz1fs6V05h2Ao
|
|
|
89
89
|
simo/core/__init__.py,sha256=_s2TjJfQImsMrTIxqLAx9AZie1Ojmm6sCHASdl3WLGU,50
|
|
90
90
|
simo/core/admin.py,sha256=j07Dy3IsW7SRRsAJ2XXGzE0MTxmfY87CEEbT22kLlS4,18550
|
|
91
91
|
simo/core/api.py,sha256=vqh4jOE4Y2LtykXVGLUiyoNdhcbiItSAzLJILlV5Y7k,29964
|
|
92
|
-
simo/core/api_auth.py,sha256=
|
|
92
|
+
simo/core/api_auth.py,sha256=I9bALko_L7M2dodUkVLRHPctdwR-KPbyZ-r1HygDyEU,1229
|
|
93
93
|
simo/core/api_meta.py,sha256=Y-kq5lLwjymARnKOx0jHCS4OOH9PhyWNwIUxLUJMny8,5350
|
|
94
94
|
simo/core/app_widgets.py,sha256=VxZzapuc-a29wBH7JzpvNF2SK1ECrgNUySId5ke1ffc,2509
|
|
95
95
|
simo/core/apps.py,sha256=CsqpiQerhmrMsH-wGiG-gQgXd9qEkIi-LUaA9cXpKSw,425
|
|
@@ -97,22 +97,22 @@ simo/core/auto_urls.py,sha256=FqKhH0fF7cGO6P2YrjblwG4JA2UkVXj3lreJUOB2Jq4,1194
|
|
|
97
97
|
simo/core/autocomplete_views.py,sha256=x3MKOZvXYS3xVQ-V1S7Liv_U5bxr-uc0gePa85wv5nA,4561
|
|
98
98
|
simo/core/base_types.py,sha256=WypW8hTfzveuTQtruGjLYAGQZIuczxTlW-SdRk3iQug,666
|
|
99
99
|
simo/core/context.py,sha256=LKw1I4iIRnlnzoTCuSLLqDX7crHdBnMo3hjqYvVmzFc,1557
|
|
100
|
-
simo/core/controllers.py,sha256=
|
|
100
|
+
simo/core/controllers.py,sha256=Cy0-F4QEo-RbVkRpdfvl0sah9cUs4InP1T8shojaiKY,37355
|
|
101
101
|
simo/core/dynamic_settings.py,sha256=bUs58XEZOCIEhg1TigR3LmYggli13KMryBZ9pC7ugAQ,1872
|
|
102
102
|
simo/core/events.py,sha256=1_KIk5pJqdLPRQlCQ9xSyALst2Cn0b2lAEAJ3QjwIjE,4801
|
|
103
103
|
simo/core/filters.py,sha256=6wbn8C2WvKTTjtfMwwLBp2Fib1V0-DMpS4iqJd6jJQo,2540
|
|
104
104
|
simo/core/form_fields.py,sha256=b4wZ4n7OO0m0_BPPS9ILVrwBvhhjUB079YrroveFUWA,5222
|
|
105
|
-
simo/core/forms.py,sha256=
|
|
105
|
+
simo/core/forms.py,sha256=D56T38VIdqWXHJ3fW4_jQdxX40YOR8l7ynfWSm8Q1W0,22011
|
|
106
106
|
simo/core/gateways.py,sha256=Y2BME6zSyeUq_e-hzEUF6gErCUCP6nFxedkLZKiLVOo,4141
|
|
107
107
|
simo/core/loggers.py,sha256=EBdq23gTQScVfQVH-xeP90-wII2DQFDjoROAW6ggUP4,1645
|
|
108
|
-
simo/core/managers.py,sha256=
|
|
109
|
-
simo/core/middleware.py,sha256=
|
|
110
|
-
simo/core/models.py,sha256=
|
|
111
|
-
simo/core/permissions.py,sha256=
|
|
108
|
+
simo/core/managers.py,sha256=Ampwe5K7gfE6IJULNCV35V8ysmMOdS_wz7mRzfaLZUw,3014
|
|
109
|
+
simo/core/middleware.py,sha256=zX6N4P_KR7gG8N2-NcR7jKtuCEhCGRh51g4EktAhP7w,3272
|
|
110
|
+
simo/core/models.py,sha256=YjcTcBzesXwR5akdRXjM7wI2e1pYn379loBSaDWdDJM,23696
|
|
111
|
+
simo/core/permissions.py,sha256=Ef4NO7QwwDd3Z-v61R0BeCBXxTOJz9qBvzRTIB5tHwI,2943
|
|
112
112
|
simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
|
|
113
|
-
simo/core/serializers.py,sha256=
|
|
114
|
-
simo/core/signal_receivers.py,sha256=
|
|
115
|
-
simo/core/socket_consumers.py,sha256=
|
|
113
|
+
simo/core/serializers.py,sha256=adqe8oYP5f7hGFXcxa-Zmce2KOwy3hZOaWE3MaAFtpM,23157
|
|
114
|
+
simo/core/signal_receivers.py,sha256=tSHKGEFbGqfD-WNKnbDjOQRoABII4akB2oj7l_gLRWk,6517
|
|
115
|
+
simo/core/socket_consumers.py,sha256=UlxV9OvTUUXaoKKYT3-qf1TyGxyOPxIpFH5cPFepH1o,9584
|
|
116
116
|
simo/core/storage.py,sha256=_5igjaoWZAiExGWFEJMElxUw55DzJG1jqFty33xe8BE,342
|
|
117
117
|
simo/core/tasks.py,sha256=-yBjOPILEnKRga-6MK-hBpEINQcY5mpwZwUWiDpqISs,17091
|
|
118
118
|
simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
|
|
@@ -125,7 +125,7 @@ simo/core/__pycache__/admin.cpython-312.pyc,sha256=P8TOAzWJ96D4krjOvfGvRBE6Vo97g
|
|
|
125
125
|
simo/core/__pycache__/admin.cpython-38.pyc,sha256=zdegA3IsH3QhT7Hm6Aj08F2sv-3h1X7VBcwN05fhVis,14155
|
|
126
126
|
simo/core/__pycache__/api.cpython-312.pyc,sha256=nEmBSNxFuYGTBbY5sVS8k2iF4u8j8R4lhJdBrsN7tvU,41475
|
|
127
127
|
simo/core/__pycache__/api.cpython-38.pyc,sha256=TOa0p4h-zWzYdLpscveY4mY1NSYAVM4fDPvRkIDuSOQ,22905
|
|
128
|
-
simo/core/__pycache__/api_auth.cpython-312.pyc,sha256=
|
|
128
|
+
simo/core/__pycache__/api_auth.cpython-312.pyc,sha256=OreF9SvNrzUKgFBJ42ZA8MJjaC2XAOj04njdEk6-scw,2132
|
|
129
129
|
simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=mi3mu5qEKio_PvfQEvr3Q6AhdPLAHxzxAxrMbAz_pKU,1712
|
|
130
130
|
simo/core/__pycache__/api_meta.cpython-312.pyc,sha256=gb-wJopybROmiFc4ioqIqyQfTXNWPNAHKeohw_LKKgI,6719
|
|
131
131
|
simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=w4wGMK39fB2UjNIZOGcyd7J2EFymlEeNWNQRmF5ozP0,3958
|
|
@@ -141,7 +141,7 @@ simo/core/__pycache__/base_types.cpython-312.pyc,sha256=Lnq2NL9B5hfwJARJYC447Rdv
|
|
|
141
141
|
simo/core/__pycache__/base_types.cpython-38.pyc,sha256=CX-qlF7CefRi_mCE954wYa9rUFR88mOl6g7fybDRu7g,803
|
|
142
142
|
simo/core/__pycache__/context.cpython-312.pyc,sha256=8rsN2Er-Sx3rrVmO0Gk4cem3euGh0kTELXj667GGZ5E,2193
|
|
143
143
|
simo/core/__pycache__/context.cpython-38.pyc,sha256=NlTHt2GvXxA21AhBkeyOLfRFUuXw7wmwqyNhhcDl2cw,1373
|
|
144
|
-
simo/core/__pycache__/controllers.cpython-312.pyc,sha256=
|
|
144
|
+
simo/core/__pycache__/controllers.cpython-312.pyc,sha256=4QDs4cfrxPLcSnJLZFNn0XsGyvAy4GzNCVMr-qljNbM,52855
|
|
145
145
|
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=LtrQQ8egOIOuQbAckeM-z8OfbzS4W8VQ3vBnryAm3iU,32086
|
|
146
146
|
simo/core/__pycache__/dynamic_settings.cpython-312.pyc,sha256=WUZ6XF4kZb6zPf541PkKmiQaBIw-r5C6F3EUUZiTEnE,3331
|
|
147
147
|
simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=wGpnscX1DxFpRl54MQURhjz2aD3NJohSzw9JCFnzh2Y,2384
|
|
@@ -151,31 +151,31 @@ simo/core/__pycache__/filters.cpython-312.pyc,sha256=-vgZ2km1A2q4Un1i30fgHT-6rRO
|
|
|
151
151
|
simo/core/__pycache__/filters.cpython-38.pyc,sha256=WBBDwcDQwOmgbrRhyUxenSN80rU4Eq9jQ6RcrRGCP_o,2440
|
|
152
152
|
simo/core/__pycache__/form_fields.cpython-312.pyc,sha256=sWeR1PaM7w41FmvBeYZcJyjjziDh10ysyjd2hXKS4mo,8933
|
|
153
153
|
simo/core/__pycache__/form_fields.cpython-38.pyc,sha256=NJf1tKaZjgY-inTLDgbN2y6NTH798RWJnzvKkZaFz_k,6204
|
|
154
|
-
simo/core/__pycache__/forms.cpython-312.pyc,sha256=
|
|
154
|
+
simo/core/__pycache__/forms.cpython-312.pyc,sha256=UqqX4uE_r6PepR4InBxSfNg5OQ0BALw8zTvbxXUELqc,30945
|
|
155
155
|
simo/core/__pycache__/forms.cpython-38.pyc,sha256=frvM1b9KRqsjh4YbUlV1CW8yupUyXJTb2R4sVgwy2K0,17827
|
|
156
156
|
simo/core/__pycache__/gateways.cpython-312.pyc,sha256=VLLQZGJFmSszJRecatQOtMYrsVaYPEM-ZK8f2ARl-po,7574
|
|
157
157
|
simo/core/__pycache__/gateways.cpython-38.pyc,sha256=-_ugqnUOA1Cl6VfMqpV96n7ekVOEwYg_jNvoaZEcx9I,4815
|
|
158
158
|
simo/core/__pycache__/loggers.cpython-312.pyc,sha256=FSKGpAli3SJfBy0ne5qqNhG4Aui4Bx_z-5IBPWE3-Zk,2407
|
|
159
159
|
simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NMEdPAiHK0cFaIL7I8,1623
|
|
160
|
-
simo/core/__pycache__/managers.cpython-312.pyc,sha256=
|
|
160
|
+
simo/core/__pycache__/managers.cpython-312.pyc,sha256=RpeR1Z0GtSZht4_a4iDfTU_E8Px963UO7YGAvweFHgA,5062
|
|
161
161
|
simo/core/__pycache__/managers.cpython-38.pyc,sha256=6RTIxyjOgpQGtAqcUyE2vFPS09w1V5Wmd_vOV7rHRRI,3370
|
|
162
|
-
simo/core/__pycache__/middleware.cpython-312.pyc,sha256=
|
|
162
|
+
simo/core/__pycache__/middleware.cpython-312.pyc,sha256=2VhHTVY-rdPNqNX0wst2ioVbHD5uMqHkY-tpujLdpH0,4195
|
|
163
163
|
simo/core/__pycache__/middleware.cpython-38.pyc,sha256=SgTLFNkKxvJ62hevSAVNZHgHdG_u2p7AZBhrj-jfFPs,2649
|
|
164
|
-
simo/core/__pycache__/models.cpython-312.pyc,sha256=
|
|
164
|
+
simo/core/__pycache__/models.cpython-312.pyc,sha256=CVESJOD2imhwbhZ6i0KIs3M4equBtHT-TApdqZ10uoE,31932
|
|
165
165
|
simo/core/__pycache__/models.cpython-38.pyc,sha256=A4JsWsDMBaQ_U5sV5cX0c_Uox9mP5fAqn_712EjfNS4,19605
|
|
166
|
-
simo/core/__pycache__/permissions.cpython-312.pyc,sha256=
|
|
166
|
+
simo/core/__pycache__/permissions.cpython-312.pyc,sha256=yqG6t9NZZtL30Hr7razjiG6JDGKiz0Qjcjxgv1C93vM,4450
|
|
167
167
|
simo/core/__pycache__/permissions.cpython-38.pyc,sha256=UdtxCTXPEbe99vgZOfRz9wfKSYvUn9hSRbpIV9CJSyI,2988
|
|
168
168
|
simo/core/__pycache__/routing.cpython-312.pyc,sha256=bDvF5HTZ8POSOHKwREyhSPO7oh90s48iSul_4camf3I,790
|
|
169
169
|
simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
|
|
170
|
-
simo/core/__pycache__/serializers.cpython-312.pyc,sha256=
|
|
170
|
+
simo/core/__pycache__/serializers.cpython-312.pyc,sha256=LW6xmjKG5Ex5y8kslVd2xGy9eRqjNP2E29GxdJaAq48,32997
|
|
171
171
|
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=H3K_retN44wOj-ew0cvoxUSXqrUOhHCMV_oJabNF0Xg,20431
|
|
172
|
-
simo/core/__pycache__/signal_receivers.cpython-312.pyc,sha256=
|
|
172
|
+
simo/core/__pycache__/signal_receivers.cpython-312.pyc,sha256=aSU_K0X2heDJL7DM8zGrjj4JqcNBgkwY_dIMiMWJI2I,8942
|
|
173
173
|
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=R_h1GHkoZXR-nrwiRJWQ9xE69JB1R_mP_fNYIBX4lrE,5165
|
|
174
|
-
simo/core/__pycache__/socket_consumers.cpython-312.pyc,sha256=
|
|
174
|
+
simo/core/__pycache__/socket_consumers.cpython-312.pyc,sha256=Yph9SQTj6c3xr2HXKnSm7r2M7dp1ks2lp8Q6v8TJ7cM,15322
|
|
175
175
|
simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=Mr1-x-vGjBNffbz0S6AKpJCuzHJgRm8kXefv3qVVY_E,8397
|
|
176
176
|
simo/core/__pycache__/storage.cpython-312.pyc,sha256=VOD9via7BtpTbXe2jWsRovCIkeJofoX7Ts_Eyl9I_a4,934
|
|
177
177
|
simo/core/__pycache__/storage.cpython-38.pyc,sha256=9R1Xu0FJDflfRXUPsqEgt0SpwiP7FGk7HaR8s8XRyI8,721
|
|
178
|
-
simo/core/__pycache__/tasks.cpython-312.pyc,sha256=
|
|
178
|
+
simo/core/__pycache__/tasks.cpython-312.pyc,sha256=RCYzywZ6ZgKfUhm3MAO_I7nbm4dcHqKPLHGMCMpf62g,22382
|
|
179
179
|
simo/core/__pycache__/tasks.cpython-38.pyc,sha256=-J2is-l5XsfhamreN2TPQDTK-Jw6XGYL81bcVfjXsU8,11213
|
|
180
180
|
simo/core/__pycache__/todos.cpython-312.pyc,sha256=bqguSv-oCCdlvzbMsm-7jAB-g0AvMFux1GL97XNJjyk,263
|
|
181
181
|
simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
|
|
@@ -10591,29 +10591,29 @@ simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LS
|
|
|
10591
10591
|
simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10592
10592
|
simo/generic/app_widgets.py,sha256=y8W3jR76Hh26O9pPQyg2SophMbYIOtAWD33MPKbB8Mg,856
|
|
10593
10593
|
simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
|
|
10594
|
-
simo/generic/controllers.py,sha256=
|
|
10595
|
-
simo/generic/forms.py,sha256=
|
|
10596
|
-
simo/generic/gateways.py,sha256=
|
|
10594
|
+
simo/generic/controllers.py,sha256=NZmrJ1BYzAwHJ1vN-OMvqnH13ihvjUhZqdxq-l__1Jk,46268
|
|
10595
|
+
simo/generic/forms.py,sha256=yCEmOy6Sm5moCh-9UTzqLDiI5xmzfm5LwEhZ2r9KRbw,26054
|
|
10596
|
+
simo/generic/gateways.py,sha256=d7sbt_GeeGGwp2hoD-FZNuyM6fNvEU51kiZyznZYcxg,17589
|
|
10597
10597
|
simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
|
|
10598
10598
|
simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
|
|
10599
|
-
simo/generic/socket_consumers.py,sha256=
|
|
10599
|
+
simo/generic/socket_consumers.py,sha256=qesKZVhI56Kh7vdIUDD3hzDUi0FcXwIfcmE_a3YS6JQ,1772
|
|
10600
10600
|
simo/generic/__pycache__/__init__.cpython-312.pyc,sha256=-34GwswSg1zc1becA8lPwUpnd4ek2IoduCsIUr0KTNo,167
|
|
10601
10601
|
simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
|
|
10602
10602
|
simo/generic/__pycache__/app_widgets.cpython-312.pyc,sha256=ywoKk91YSEZxpyt9haG509_c0G9DMJVpae_y1iiZxJU,1937
|
|
10603
10603
|
simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=D9b13pbMlirgHmjDnQhfLIDGSVINoSouHb4SWOeCRrs,1642
|
|
10604
10604
|
simo/generic/__pycache__/base_types.cpython-312.pyc,sha256=h8Mwu49i-zmwTbL33JaLJfRDGOgkQh2_VqrfzEc4UQ4,616
|
|
10605
10605
|
simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
|
|
10606
|
-
simo/generic/__pycache__/controllers.cpython-312.pyc,sha256=
|
|
10606
|
+
simo/generic/__pycache__/controllers.cpython-312.pyc,sha256=TgHV-dNMJqYuFOgeJTxeh4Mihb4lHnfhid0CmdhZCR4,52737
|
|
10607
10607
|
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=jJjwKVaDYyazrRGNjUFoY74nr_jX_DEnsC9KjyxZCgc,30427
|
|
10608
|
-
simo/generic/__pycache__/forms.cpython-312.pyc,sha256=
|
|
10608
|
+
simo/generic/__pycache__/forms.cpython-312.pyc,sha256=duBW82wI9zfyzPnIk4hLs_vx5Rfk4vSCh9n7cSNbgcc,34681
|
|
10609
10609
|
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=k8lz3taXdWAg5P9jcnw66mWH51pCc4SOsg32kVEtBCg,19416
|
|
10610
|
-
simo/generic/__pycache__/gateways.cpython-312.pyc,sha256
|
|
10610
|
+
simo/generic/__pycache__/gateways.cpython-312.pyc,sha256=-ifxm5kYUvp6tRw3xr1EO7jCEXQ9_aQG3OdxAQvxHBg,21758
|
|
10611
10611
|
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=GIeMT51oZU2OCFD4eUDFdSRRYE0Qf14AcOr_gdUqG94,12705
|
|
10612
10612
|
simo/generic/__pycache__/models.cpython-312.pyc,sha256=xriUzjkaM2Y4mT3jo2OPK-XGBroBBSFJfLqK0jMA4MA,10200
|
|
10613
10613
|
simo/generic/__pycache__/models.cpython-38.pyc,sha256=MZpum7syAFxuulf47K7gtUlJJ7xRD-IBUBAwUM1ZRnw,5825
|
|
10614
10614
|
simo/generic/__pycache__/routing.cpython-312.pyc,sha256=_wQPZeAgwlGtnafw9VcabgqjyJxzDFywHBIFbGhzYRE,452
|
|
10615
10615
|
simo/generic/__pycache__/routing.cpython-38.pyc,sha256=xtxTUTBTdivzFyA5Wh7k-hUj1WDO_FiRq6HYXdbr9Ks,382
|
|
10616
|
-
simo/generic/__pycache__/socket_consumers.cpython-312.pyc,sha256=
|
|
10616
|
+
simo/generic/__pycache__/socket_consumers.cpython-312.pyc,sha256=zERTr2bHXLKSXCoIov6MaFRrgfeS1A0IHCXbaPfVvK4,2814
|
|
10617
10617
|
simo/generic/__pycache__/socket_consumers.cpython-38.pyc,sha256=FaVCf_uJI2uwj1Zz-jwsOXou65oV9gFCIB8e-YKquRk,1662
|
|
10618
10618
|
simo/generic/migrations/0001_initial.py,sha256=7FpPcfpRU5ya0b8s2KbxR5a3npf92YruvZltUybjzys,676
|
|
10619
10619
|
simo/generic/migrations/0002_auto_20241126_0726.py,sha256=SX38JwP732QooOm5HM1Xo7Th_Mv_6YZloT3eozULOhs,922
|
|
@@ -10740,15 +10740,15 @@ simo/users/auth_backends.py,sha256=KIw2AdjCUKfm_7Lql6aC4qdE6JznP0ECIMA5MVMLeiM,4
|
|
|
10740
10740
|
simo/users/auto_urls.py,sha256=RSUW3ai5LbMTknS8M7M5aOnG_YlFOVQrnNVNH-fkwlg,357
|
|
10741
10741
|
simo/users/dynamic_settings.py,sha256=sEIsi4yJw3kH46Jq_aOkSuK7QTfQACGUE-lkyBogCaM,570
|
|
10742
10742
|
simo/users/managers.py,sha256=OHgEP85MBtdkdYxdstBd8RavTBT8F_2WyDxUJ9aCqqM,246
|
|
10743
|
-
simo/users/middleware.py,sha256=
|
|
10744
|
-
simo/users/models.py,sha256=
|
|
10743
|
+
simo/users/middleware.py,sha256=tNPmnzo0eTrJ25SLHP7NotqYKI2cKnmv8hf6v5DLOWo,427
|
|
10744
|
+
simo/users/models.py,sha256=6Y05Z5IiARr-Dti_xRjQTxi2ji62M387mN-VVzxMGSY,20069
|
|
10745
10745
|
simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
|
|
10746
|
-
simo/users/serializers.py,sha256=
|
|
10746
|
+
simo/users/serializers.py,sha256=REgXD9Af6nTRu_wUm1dt5YoCB6C_KNDaPqHZj726zZ0,2497
|
|
10747
10747
|
simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
|
|
10748
10748
|
simo/users/sso_views.py,sha256=5J0D4qUFQDvd-Fcqx_xLJWLJgPdqtVD5DDiPJyPsT2Q,4336
|
|
10749
10749
|
simo/users/tasks.py,sha256=FhbczWFHRFI6To4xqkx4gUX4p0vCwwTT297GWBPAoIg,1162
|
|
10750
|
-
simo/users/utils.py,sha256
|
|
10751
|
-
simo/users/views.py,sha256=
|
|
10750
|
+
simo/users/utils.py,sha256=vR5SlWdMKkMgNZdJXUI14pASVue8WMqJSQpVKruX25I,2305
|
|
10751
|
+
simo/users/views.py,sha256=iIfv8DqNztzBB3fiZcnHOyzp4eFtjrC-gCv5rBX3XsQ,4136
|
|
10752
10752
|
simo/users/__pycache__/__init__.cpython-312.pyc,sha256=n0GE5zxjujBUkv1t1CswZ9GbybW478_oY8d_wQJ44N8,223
|
|
10753
10753
|
simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
|
|
10754
10754
|
simo/users/__pycache__/admin.cpython-312.pyc,sha256=lTVuZQwkuw1bzSn0A0kt-8H6ruKas_YPb_61AxSYSoo,11465
|
|
@@ -10765,22 +10765,22 @@ simo/users/__pycache__/dynamic_settings.cpython-312.pyc,sha256=lRVrJzyYRU2CVOKc_
|
|
|
10765
10765
|
simo/users/__pycache__/dynamic_settings.cpython-38.pyc,sha256=6F8JBjZkHykySnmZjNEzjS0ijbmPdcp9yUAZ5kqq_Fo,864
|
|
10766
10766
|
simo/users/__pycache__/managers.cpython-312.pyc,sha256=A9-yF1dilDc1H_-BtrIw9USpH6MYwkUI02gVmDOxsOA,821
|
|
10767
10767
|
simo/users/__pycache__/managers.cpython-38.pyc,sha256=O0Y8ABp42RAosrbODmYsPMaj9AyOPyJ-aqzuO0Qpi2s,679
|
|
10768
|
-
simo/users/__pycache__/middleware.cpython-312.pyc,sha256=
|
|
10768
|
+
simo/users/__pycache__/middleware.cpython-312.pyc,sha256=9pkiIkMriu0ExLK479hyPfaN-DOfp6WErqQlrZY1Mvk,927
|
|
10769
10769
|
simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
|
|
10770
|
-
simo/users/__pycache__/models.cpython-312.pyc,sha256=
|
|
10770
|
+
simo/users/__pycache__/models.cpython-312.pyc,sha256=j4-HII44-P4ExB7UVZGtOT8IYz6jbRa4hnDsCRglbUU,29020
|
|
10771
10771
|
simo/users/__pycache__/models.cpython-38.pyc,sha256=qNtAn_eWVmRTWhTxN8GtCc549dcJsTdaF7Uk19yNMgg,18330
|
|
10772
10772
|
simo/users/__pycache__/permissions.cpython-312.pyc,sha256=NCaxeIz4qmG_mF18lKTYXqOSUvJkFLnUZjfYIQFUCkU,718
|
|
10773
10773
|
simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
|
|
10774
|
-
simo/users/__pycache__/serializers.cpython-312.pyc,sha256=
|
|
10774
|
+
simo/users/__pycache__/serializers.cpython-312.pyc,sha256=2xqTf8TIqmt7mKNEPfc6Aiy1iVShNShKugNGMIyttCQ,4751
|
|
10775
10775
|
simo/users/__pycache__/serializers.cpython-38.pyc,sha256=Dy8RAcwNkNSXoJHvLp8fozURyHCtucqpSPyqZtbnMZc,3732
|
|
10776
10776
|
simo/users/__pycache__/sso_urls.cpython-312.pyc,sha256=FQLOFu310j7pOhTNlg2wyUybqts1anZnLTLbYaSpi7U,534
|
|
10777
10777
|
simo/users/__pycache__/sso_urls.cpython-38.pyc,sha256=uAwDozpOmrhUald-8tOHANILXkH7-TI8fNYXOtPkSY8,402
|
|
10778
10778
|
simo/users/__pycache__/sso_views.cpython-312.pyc,sha256=FZGDRdt7pb8qROe8ZAEGSTfeZtLCGNBvQiXpDtrc4dE,6011
|
|
10779
10779
|
simo/users/__pycache__/sso_views.cpython-38.pyc,sha256=PLRF6FYCxRhnmgnN_gUS-pdQlH7lofLU1Xhgw3vDO_Y,4019
|
|
10780
10780
|
simo/users/__pycache__/tasks.cpython-38.pyc,sha256=XLMKt3suT7BlcXrJZoH9ZIhhtBuqyiW4lsOB9IbBkko,1225
|
|
10781
|
-
simo/users/__pycache__/utils.cpython-312.pyc,sha256=
|
|
10781
|
+
simo/users/__pycache__/utils.cpython-312.pyc,sha256=dJtfFncpI2QtTSZoUUNCfUsDoofOOfVtMRXNm5ZXC20,3515
|
|
10782
10782
|
simo/users/__pycache__/utils.cpython-38.pyc,sha256=cgxUwEaBgxT360mw4E03J7u4vi3dhw6K3n7-8WNvyFU,1888
|
|
10783
|
-
simo/users/__pycache__/views.cpython-312.pyc,sha256=
|
|
10783
|
+
simo/users/__pycache__/views.cpython-312.pyc,sha256=2m58jFyV2LDVC5VogOr_BEKkyFXuLe5DOo5YxOlN-dw,4883
|
|
10784
10784
|
simo/users/__pycache__/views.cpython-38.pyc,sha256=RiCyUbBqNzszsfyOfcu_lNExms7LFViNCx2vRQuBaw0,3206
|
|
10785
10785
|
simo/users/migrations/0001_initial.py,sha256=_SnJemhNOs8Jjj-PjyvTVCBoxfs5V3lR_4ypUHUdLUg,7017
|
|
10786
10786
|
simo/users/migrations/0002_componentpermission.py,sha256=rH9pC9HERf_5WWn3LCsNiu03BiHqURTF62pSNfswStI,918
|
|
@@ -10924,9 +10924,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10924
10924
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10925
10925
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10926
10926
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10927
|
-
simo-2.
|
|
10928
|
-
simo-2.
|
|
10929
|
-
simo-2.
|
|
10930
|
-
simo-2.
|
|
10931
|
-
simo-2.
|
|
10932
|
-
simo-2.
|
|
10927
|
+
simo-2.8.1.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10928
|
+
simo-2.8.1.dist-info/METADATA,sha256=PKsv2_6Yf6RkgjV_szPJcK2ej9l087C4L4Gi8mKmgO8,2008
|
|
10929
|
+
simo-2.8.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
10930
|
+
simo-2.8.1.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
|
|
10931
|
+
simo-2.8.1.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10932
|
+
simo-2.8.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|