simo 2.5.22__py3-none-any.whl → 2.5.24__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/__pycache__/settings.cpython-38.pyc +0 -0
- simo/core/__pycache__/tasks.cpython-38.pyc +0 -0
- simo/core/context.py +5 -1
- simo/core/management/update.py +4 -1
- simo/core/tasks.py +22 -5
- simo/fleet/__pycache__/socket_consumers.cpython-38.pyc +0 -0
- simo/fleet/socket_consumers.py +15 -10
- simo/settings.py +2 -1
- simo/users/__pycache__/admin.cpython-38.pyc +0 -0
- simo/users/__pycache__/managers.cpython-38.pyc +0 -0
- simo/users/__pycache__/models.cpython-38.pyc +0 -0
- simo/users/admin.py +5 -0
- simo/users/auth_backends.py +6 -1
- simo/users/managers.py +1 -4
- simo/users/models.py +4 -14
- {simo-2.5.22.dist-info → simo-2.5.24.dist-info}/METADATA +1 -1
- {simo-2.5.22.dist-info → simo-2.5.24.dist-info}/RECORD +21 -21
- {simo-2.5.22.dist-info → simo-2.5.24.dist-info}/LICENSE.md +0 -0
- {simo-2.5.22.dist-info → simo-2.5.24.dist-info}/WHEEL +0 -0
- {simo-2.5.22.dist-info → simo-2.5.24.dist-info}/entry_points.txt +0 -0
- {simo-2.5.22.dist-info → simo-2.5.24.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
simo/core/context.py
CHANGED
|
@@ -14,10 +14,14 @@ def additional_templates_context(request):
|
|
|
14
14
|
instances = Instance.objects.none()
|
|
15
15
|
else:
|
|
16
16
|
instances = request.user.instances
|
|
17
|
+
try:
|
|
18
|
+
version = pkg_resources.get_distribution('simo')
|
|
19
|
+
except:
|
|
20
|
+
version = 'dev'
|
|
17
21
|
ctx = {
|
|
18
22
|
'hub_ip': get_self_ip(),
|
|
19
23
|
'dynamic_settings': dynamic_settings,
|
|
20
|
-
'current_version':
|
|
24
|
+
'current_version': version,
|
|
21
25
|
'update_available': is_update_available(True),
|
|
22
26
|
'instances': instances,
|
|
23
27
|
'current_instance': get_current_instance()
|
simo/core/management/update.py
CHANGED
|
@@ -54,7 +54,10 @@ def maybe_update():
|
|
|
54
54
|
if not os.path.exists('/etc/SIMO/_var/auto_update'):
|
|
55
55
|
print("Auto updates are disabled")
|
|
56
56
|
else:
|
|
57
|
-
|
|
57
|
+
try:
|
|
58
|
+
current = pkg_resources.get_distribution('simo')
|
|
59
|
+
except:
|
|
60
|
+
current = 'dev'
|
|
58
61
|
resp = requests.get("https://pypi.org/pypi/simo/json")
|
|
59
62
|
if resp.status_code != 200:
|
|
60
63
|
sys.exit("Bad response from PyPi")
|
simo/core/tasks.py
CHANGED
|
@@ -119,8 +119,13 @@ def sync_with_remote():
|
|
|
119
119
|
except:
|
|
120
120
|
mac = ''
|
|
121
121
|
|
|
122
|
+
try:
|
|
123
|
+
version = pkg_resources.get_distribution('simo').version,
|
|
124
|
+
except:
|
|
125
|
+
version = 'dev'
|
|
126
|
+
|
|
122
127
|
report_data = {
|
|
123
|
-
'simo_version':
|
|
128
|
+
'simo_version': version,
|
|
124
129
|
'local_http': 'https://%s' % get_self_ip(),
|
|
125
130
|
'mac': mac,
|
|
126
131
|
'hub_uid': dynamic_settings['core__hub_uid'],
|
|
@@ -141,6 +146,7 @@ def sync_with_remote():
|
|
|
141
146
|
'users': [],
|
|
142
147
|
}
|
|
143
148
|
|
|
149
|
+
users_included = set()
|
|
144
150
|
for iuser in instance.instance_users.all().select_related('user', 'role'):
|
|
145
151
|
instance_data['users'].append({
|
|
146
152
|
'email': iuser.user.email,
|
|
@@ -150,11 +156,16 @@ def sync_with_remote():
|
|
|
150
156
|
'is_active': iuser.is_active,
|
|
151
157
|
'device_token': iuser.user.primary_device_token
|
|
152
158
|
})
|
|
159
|
+
users_included.add(iuser.user.id)
|
|
153
160
|
|
|
154
161
|
# Include god mode users!
|
|
155
162
|
for user in User.objects.filter(
|
|
156
|
-
|
|
157
|
-
).exclude(
|
|
163
|
+
is_master=True
|
|
164
|
+
).exclude(
|
|
165
|
+
email__in=('system@simo.io', 'device@simo.io')
|
|
166
|
+
).exclude(id__in=users_included).distinct():
|
|
167
|
+
if not user.is_active:
|
|
168
|
+
continue
|
|
158
169
|
instance_data['users'].append({
|
|
159
170
|
'email': user.email,
|
|
160
171
|
'is_hub_master': True,
|
|
@@ -456,8 +467,14 @@ def maybe_update_to_latest():
|
|
|
456
467
|
return
|
|
457
468
|
latest = list(resp.json()['releases'].keys())[-1]
|
|
458
469
|
dynamic_settings['core__latest_version_available'] = latest
|
|
459
|
-
|
|
460
|
-
|
|
470
|
+
|
|
471
|
+
try:
|
|
472
|
+
version = pkg_resources.get_distribution('simo').version
|
|
473
|
+
except:
|
|
474
|
+
# dev environment
|
|
475
|
+
version = dynamic_settings['core__latest_version_available']
|
|
476
|
+
|
|
477
|
+
if dynamic_settings['core__latest_version_available'] == version:
|
|
461
478
|
print("Up to date!")
|
|
462
479
|
return
|
|
463
480
|
|
|
Binary file
|
simo/fleet/socket_consumers.py
CHANGED
|
@@ -87,7 +87,6 @@ class FleetConsumer(AsyncWebsocketConsumer):
|
|
|
87
87
|
timezone.activate(tz)
|
|
88
88
|
|
|
89
89
|
def get_colonel():
|
|
90
|
-
# looks like update_or_create doesn't work in socket/async environment.
|
|
91
90
|
defaults={
|
|
92
91
|
'instance': self.instance,
|
|
93
92
|
'name': headers.get('colonel-name'),
|
|
@@ -96,16 +95,22 @@ class FleetConsumer(AsyncWebsocketConsumer):
|
|
|
96
95
|
'last_seen': timezone.now(),
|
|
97
96
|
'enabled': True
|
|
98
97
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
# !!!!! ATETION! !!!!!!!
|
|
99
|
+
# update_or_create and get_or_create doesn't
|
|
100
|
+
# provide reliable operation in socket/async environment.
|
|
101
|
+
new = False
|
|
102
|
+
colonel = Colonel.objects.filter(uid=headers['colonel-uid']).first()
|
|
103
|
+
if not colonel:
|
|
104
|
+
new = True
|
|
105
|
+
colonel = Colonel.objects.create(
|
|
106
|
+
uid=headers['colonel-uid'], **defaults
|
|
102
107
|
)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
else:
|
|
109
|
+
for key, val in defaults.items():
|
|
110
|
+
if key == 'name':
|
|
111
|
+
continue
|
|
112
|
+
setattr(colonel, key, val)
|
|
113
|
+
colonel.save()
|
|
109
114
|
|
|
110
115
|
return colonel, new
|
|
111
116
|
|
simo/settings.py
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/users/admin.py
CHANGED
|
@@ -4,6 +4,7 @@ from django.utils.safestring import mark_safe
|
|
|
4
4
|
from django.contrib import messages
|
|
5
5
|
from django.contrib.auth.admin import UserAdmin as OrgUserAdmin
|
|
6
6
|
from django.contrib import admin
|
|
7
|
+
from simo.core.middleware import get_current_instance
|
|
7
8
|
from .models import (
|
|
8
9
|
PermissionsRole, ComponentPermission, User, UserDevice, UserDeviceReportLog,
|
|
9
10
|
InstanceInvitation, InstanceUser, Fingerprint
|
|
@@ -58,6 +59,10 @@ class InstanceUserAdmin(admin.ModelAdmin):
|
|
|
58
59
|
'at_home', 'last_seen', 'last_seen_speed_kmh', 'phone_on_charge',
|
|
59
60
|
)
|
|
60
61
|
|
|
62
|
+
def get_queryset(self, request):
|
|
63
|
+
instance = get_current_instance()
|
|
64
|
+
return super().get_queryset(request).filter(instance=instance)
|
|
65
|
+
|
|
61
66
|
|
|
62
67
|
class InstanceUserInline(admin.TabularInline):
|
|
63
68
|
model = InstanceUser
|
simo/users/auth_backends.py
CHANGED
|
@@ -99,6 +99,10 @@ class SSOBackend(ModelBackend):
|
|
|
99
99
|
user=user, instance=invitation.instance,
|
|
100
100
|
defaults={'role': invitation.role}
|
|
101
101
|
)
|
|
102
|
+
user.is_active = True
|
|
103
|
+
|
|
104
|
+
if not user.is_active:
|
|
105
|
+
return
|
|
102
106
|
|
|
103
107
|
if user_data.get('name'):
|
|
104
108
|
user.name = user_data['name']
|
|
@@ -109,6 +113,7 @@ class SSOBackend(ModelBackend):
|
|
|
109
113
|
user.avatar.save(
|
|
110
114
|
os.path.basename(user.avatar_url), io.BytesIO(resp.content)
|
|
111
115
|
)
|
|
112
|
-
user.
|
|
116
|
+
if user.get_dirty_fields():
|
|
117
|
+
user.save()
|
|
113
118
|
|
|
114
119
|
return user
|
simo/users/managers.py
CHANGED
simo/users/models.py
CHANGED
|
@@ -154,7 +154,7 @@ def post_instance_user_save(sender, instance, created, **kwargs):
|
|
|
154
154
|
dynamic_settings['core__needs_mqtt_acls_rebuild'] = True
|
|
155
155
|
|
|
156
156
|
|
|
157
|
-
class User(AbstractBaseUser, SimoAdminMixin):
|
|
157
|
+
class User(DirtyFieldsMixin, AbstractBaseUser, SimoAdminMixin):
|
|
158
158
|
name = models.CharField(_('name'), max_length=150)
|
|
159
159
|
email = models.EmailField(_('email address'), unique=True)
|
|
160
160
|
avatar = ThumbnailerImageField(
|
|
@@ -309,16 +309,11 @@ class User(AbstractBaseUser, SimoAdminMixin):
|
|
|
309
309
|
|
|
310
310
|
@property
|
|
311
311
|
def is_active(self):
|
|
312
|
-
|
|
313
|
-
instance = get_current_instance()
|
|
314
|
-
if not instance:
|
|
315
|
-
cache_key = f'user-{self.id}_is_active'
|
|
316
|
-
else:
|
|
317
|
-
cache_key = f'user-{self.id}_is_active_instance-{instance.id}'
|
|
312
|
+
cache_key = f'user-{self.id}_is_active'
|
|
318
313
|
cached_value = cache.get(cache_key)
|
|
319
314
|
if cached_value is None:
|
|
320
315
|
if self.is_master:
|
|
321
|
-
if not self.instance_roles.all():
|
|
316
|
+
if not self.instance_roles.all().count():
|
|
322
317
|
# Master who have no roles on any instance are in GOD mode!
|
|
323
318
|
# It can not be disabled by anybody, nor it is seen by anybody. :)
|
|
324
319
|
cached_value = True
|
|
@@ -333,13 +328,8 @@ class User(AbstractBaseUser, SimoAdminMixin):
|
|
|
333
328
|
cached_value = bool(
|
|
334
329
|
self.instance_roles.filter(is_active=True).count()
|
|
335
330
|
)
|
|
336
|
-
elif instance:
|
|
337
|
-
cached_value = bool(
|
|
338
|
-
self.instance_roles.filter(
|
|
339
|
-
instance=instance, is_active=True
|
|
340
|
-
).count()
|
|
341
|
-
)
|
|
342
331
|
else:
|
|
332
|
+
# user is considered active if he is active on at least one instance
|
|
343
333
|
cached_value = bool(
|
|
344
334
|
self.instance_roles.filter(is_active=True).count()
|
|
345
335
|
)
|
|
@@ -2,13 +2,13 @@ simo/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
|
2
2
|
simo/asgi.py,sha256=L8CUVZLM32IMzWDZ4IShdDN-m69t7oxAUeHods4-xNM,822
|
|
3
3
|
simo/celeryc.py,sha256=eab7_e9rw0c__DCeoUFUh_tjAGVlulxVrk75BaJf57Q,1512
|
|
4
4
|
simo/conf.py,sha256=H2BhXAV8MEDVXF8AbkaLSfR4ULd-9_bS4bnhE5sE5fg,112
|
|
5
|
-
simo/settings.py,sha256=
|
|
5
|
+
simo/settings.py,sha256=tB7rqHA1QHyb4c_nNNnGD_JkqCWmz7XbS_N3Qq5YacY,6986
|
|
6
6
|
simo/urls.py,sha256=fRmAsNQ_pzFloimLmxNeDcR6hHRJ3rOoZ3kGy8zOQ_A,2402
|
|
7
7
|
simo/__pycache__/__init__.cpython-38.pyc,sha256=j81de0BqHMr6bs0C7cuYrXl7HwtK_vv8hDEtAdSwDJc,153
|
|
8
8
|
simo/__pycache__/asgi.cpython-38.pyc,sha256=5W_YSKOIrRd6NQQuJDuA3Yuj688GzirXVVOyLe8wJIQ,845
|
|
9
9
|
simo/__pycache__/celeryc.cpython-38.pyc,sha256=eSRoaKwfYlxVaxAiwqpQ2ndEcx7W-VpZtbxRFSV8UYg,1653
|
|
10
10
|
simo/__pycache__/conf.cpython-38.pyc,sha256=MYP2yk3ULxiYwZsZR6tCLjKnU-z03A3avzQzIn66y3k,273
|
|
11
|
-
simo/__pycache__/settings.cpython-38.pyc,sha256=
|
|
11
|
+
simo/__pycache__/settings.cpython-38.pyc,sha256=KxcUZqNnr1y6QxvcBLoLm_sk-vwbLsJHPvSD6XadAMs,6128
|
|
12
12
|
simo/__pycache__/urls.cpython-38.pyc,sha256=u0x6EqT8S1YfDOSPgbI8Kf-RDlveY9OV-EDXMYKAQ7w,2125
|
|
13
13
|
simo/__pycache__/wsgi.cpython-38.pyc,sha256=TpRxO7VM_ql31hbKphVdanydC5RI1nHB4l0QA2pdWxo,322
|
|
14
14
|
simo/backups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -41,7 +41,7 @@ simo/core/apps.py,sha256=CsqpiQerhmrMsH-wGiG-gQgXd9qEkIi-LUaA9cXpKSw,425
|
|
|
41
41
|
simo/core/auto_urls.py,sha256=nNXEgLAAAQAhRWQDA9AbDtw-zcPKmu_pufJaSa8g818,1102
|
|
42
42
|
simo/core/autocomplete_views.py,sha256=l7DmpoeXcwjmBda--tT6zFQTNcyfYpgTaryWP-ghETU,3846
|
|
43
43
|
simo/core/base_types.py,sha256=WypW8hTfzveuTQtruGjLYAGQZIuczxTlW-SdRk3iQug,666
|
|
44
|
-
simo/core/context.py,sha256=
|
|
44
|
+
simo/core/context.py,sha256=xH7Fdd2uO7CMm3a1QHnYJTZfEfPfBDFSScKxAx6q69o,1549
|
|
45
45
|
simo/core/controllers.py,sha256=JvXdwXD7iotA7fIjZmBVshKLQGSt9Na48FMAyHRDh84,35615
|
|
46
46
|
simo/core/dynamic_settings.py,sha256=bUs58XEZOCIEhg1TigR3LmYggli13KMryBZ9pC7ugAQ,1872
|
|
47
47
|
simo/core/events.py,sha256=fH6d5HcPdDqT3R7CZPdo69qTszJ23j3GJt3IFOso3WA,4757
|
|
@@ -59,7 +59,7 @@ simo/core/serializers.py,sha256=WgksN1Ombv240nfQR_UtmKslTWM9vz9Y0yTdN5usiHU,2189
|
|
|
59
59
|
simo/core/signal_receivers.py,sha256=WYBRCFJhP83Ukd-Ipc1HlNyTXdTHD1rl0tV3uOKnYWY,8861
|
|
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=KjRx7X948A7j-ZKZNU0LucV-HGRQnd4ai6ikb49yYb0,16517
|
|
63
63
|
simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
|
|
64
64
|
simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
|
|
65
65
|
simo/core/views.py,sha256=3SRZr00fyLQf8ja3U-9eekKt-ld5TvU1WQqUWprXfQ4,2390
|
|
@@ -92,7 +92,7 @@ simo/core/__pycache__/serializers.cpython-38.pyc,sha256=d4wpUjFuo8GxaNWbin9GdHKi
|
|
|
92
92
|
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=ZxsQUC_bijcKs2A9BifeqdI5JVS0RCsZpdcBTRoT8o8,6733
|
|
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=PN2_K7yt2lDRYqbkKIozcENhq0gkW5muE0GVKevLM6o,10951
|
|
96
96
|
simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
|
|
97
97
|
simo/core/__pycache__/views.cpython-38.pyc,sha256=K_QM967bIJeU02DJu0Dm7j8RiFDKn_TLzX77YzNkA7c,2495
|
|
98
98
|
simo/core/__pycache__/widgets.cpython-38.pyc,sha256=sR0ZeHCHrhnNDBJuRrxp3zUsfBp0xrtF0xrK2TkQv1o,3520
|
|
@@ -146,7 +146,7 @@ simo/core/drf_braces/tests/serializers/test_enforce_validation_serializer.py,sha
|
|
|
146
146
|
simo/core/drf_braces/tests/serializers/test_form_serializer.py,sha256=IE2xQ1SzhSsOy2BFsBYw_Po-ujKBgIuNoTRxCzhyilE,12995
|
|
147
147
|
simo/core/drf_braces/tests/serializers/test_swapping.py,sha256=o-B5YV5HDxHCVrXYGODeF7lB3rPDGtafNgClx97d6w4,1220
|
|
148
148
|
simo/core/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
149
|
-
simo/core/management/update.py,sha256=
|
|
149
|
+
simo/core/management/update.py,sha256=CDve2OAKBLJpnuhIgOp7riqBm_gl9D0oNKmNOFXGq2E,1964
|
|
150
150
|
simo/core/management/__pycache__/__init__.cpython-38.pyc,sha256=Ptf1WzljXMt3wP1tzOy6q3JfLERYDs66wSHBVdrzjHg,169
|
|
151
151
|
simo/core/management/_hub_template/hub/asgi.py,sha256=ElN_fdeSkf0Ysa7pS9rJVmZ1HmLhFxb8jFaMLqe1220,126
|
|
152
152
|
simo/core/management/_hub_template/hub/celeryc.py,sha256=3ksDXftIZKJ4Cq9WNKJERdZdQlDEnjTQXycweRFmsSQ,27
|
|
@@ -10230,7 +10230,7 @@ simo/fleet/managers.py,sha256=XOpDOA9L-f_550TNSyXnJbun2EmtGz1TenVTMlUSb8E,807
|
|
|
10230
10230
|
simo/fleet/models.py,sha256=xAffeAh5hf8NC94B66ZqmYoF7qDN53wEQ1xE2E9D8Xc,17524
|
|
10231
10231
|
simo/fleet/routing.py,sha256=cofGsVWXMfPDwsJ6HM88xxtRxHwERhJ48Xyxc8mxg5o,149
|
|
10232
10232
|
simo/fleet/serializers.py,sha256=X2M0DFKVaxM6JFGDsdg3S2nJlLIcBvbujidZdfxD88w,2169
|
|
10233
|
-
simo/fleet/socket_consumers.py,sha256=
|
|
10233
|
+
simo/fleet/socket_consumers.py,sha256=LBpdAApNDvUpKIqgbpZxlvIA8GuvB3XEezldZ-Ksi70,18247
|
|
10234
10234
|
simo/fleet/tasks.py,sha256=AGq9BXFNAqkhOANsPvId8yjEbDtVCB3MRsi_AKDpgIM,821
|
|
10235
10235
|
simo/fleet/utils.py,sha256=wNJvURzLP3-aho3D3rfg07N9kWCaMIw5gOsmeeO9Nlg,4740
|
|
10236
10236
|
simo/fleet/views.py,sha256=jT3GcGv_JEj3dqyfHH2whCnGqwT8YEAuFxRgIX4Dk9w,3237
|
|
@@ -10247,7 +10247,7 @@ simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=8uz-xpUiqbGDgXIZ_XRZtFb-Tj
|
|
|
10247
10247
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=d1Reu7cAryqGuA_Z0eqVsX7SFUo4_jNnyi1JbK7mWuI,14138
|
|
10248
10248
|
simo/fleet/__pycache__/routing.cpython-38.pyc,sha256=aPrCmxFKVyB8R8ZbJDwdPdFfvT7CvobovvZeq_mqRgY,314
|
|
10249
10249
|
simo/fleet/__pycache__/serializers.cpython-38.pyc,sha256=gIWHJaSUbTe9H_xerD29Fz7BxIqXNzBI60GsIVXbNdY,3134
|
|
10250
|
-
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=
|
|
10250
|
+
simo/fleet/__pycache__/socket_consumers.cpython-38.pyc,sha256=av_7AF6ncsVeWC5x44BANe2TR7f0l660NmJY1jKqZww,13904
|
|
10251
10251
|
simo/fleet/__pycache__/tasks.cpython-38.pyc,sha256=RoNxL2WUiW67s9O9DjaYVVjCBSZu2nje0Qn9FJkWVS0,1116
|
|
10252
10252
|
simo/fleet/__pycache__/utils.cpython-38.pyc,sha256=obUd-X2Y-ybx4icqUWq_qwIxrP9yyarJjexWAfO4MTI,3344
|
|
10253
10253
|
simo/fleet/__pycache__/views.cpython-38.pyc,sha256=wilxSvZliSKQ5qC7JjWneYBSdbeZeTsF5uDrOQVmvms,3181
|
|
@@ -10442,15 +10442,15 @@ simo/notifications/migrations/__pycache__/0002_notification_instance.cpython-38.
|
|
|
10442
10442
|
simo/notifications/migrations/__pycache__/0003_alter_notification_instance.cpython-38.pyc,sha256=awhD1F9RyK_706zVNM5io3WT_konFkKQgL7D5MkONwk,851
|
|
10443
10443
|
simo/notifications/migrations/__pycache__/__init__.cpython-38.pyc,sha256=YMBRHVon2nWDtIUbghckjnC12sIg_ykPWhV5aM0tto4,178
|
|
10444
10444
|
simo/users/__init__.py,sha256=6a7uBpCWB_DR7p54rbHusc0xvi1qfT1ZCCQGb6TiBh8,52
|
|
10445
|
-
simo/users/admin.py,sha256=
|
|
10445
|
+
simo/users/admin.py,sha256=9P0iIGAep2R1AUvZnROsRULbxwCYK9pCfSJ2X4aLLBg,6965
|
|
10446
10446
|
simo/users/api.py,sha256=xe__HFxzOaKgrh75PFpP4nkSs5DvmJp8QvMDNhP5kLU,12127
|
|
10447
10447
|
simo/users/apps.py,sha256=cq0A8-U1HALEwev0TicgFhr4CAu7Icz8rwq0HfOaL4E,207
|
|
10448
|
-
simo/users/auth_backends.py,sha256=
|
|
10448
|
+
simo/users/auth_backends.py,sha256=EErYrGti3TIlYH9Bxj0UFs5EKsbYMV4FP4wGfpdHtts,4165
|
|
10449
10449
|
simo/users/auto_urls.py,sha256=lcJvteBsbHQMJieZpDz-63tDYejLApqsW3CUnDakd7k,272
|
|
10450
10450
|
simo/users/dynamic_settings.py,sha256=sEIsi4yJw3kH46Jq_aOkSuK7QTfQACGUE-lkyBogCaM,570
|
|
10451
|
-
simo/users/managers.py,sha256=
|
|
10451
|
+
simo/users/managers.py,sha256=OHgEP85MBtdkdYxdstBd8RavTBT8F_2WyDxUJ9aCqqM,246
|
|
10452
10452
|
simo/users/middleware.py,sha256=GMCrnWSc_2qCleyQIkfQGdL-pU-UTEcSg1wPvIKZ9uk,1210
|
|
10453
|
-
simo/users/models.py,sha256=
|
|
10453
|
+
simo/users/models.py,sha256=KcIanqB8xvgvTO_jAUJpoN6JSRJha_DhIDSs4lniFXA,19402
|
|
10454
10454
|
simo/users/permissions.py,sha256=IwtYS8yQdupWbYKR9VimSRDV3qCJ2jXP57Lyjpb2EQM,242
|
|
10455
10455
|
simo/users/serializers.py,sha256=zzw1KONTnaTNBaU0r4rNVxJ827KzD6Z5LuQt27ZsQ98,2516
|
|
10456
10456
|
simo/users/sso_urls.py,sha256=gQOaPvGMYFD0NCVSwyoWO-mTEHe5j9sbzV_RK7kdvp0,251
|
|
@@ -10459,15 +10459,15 @@ simo/users/tasks.py,sha256=HJAqiyWGsaN3wSfquU0UyQ20jL-njXeaaTOdDT3TQ3s,979
|
|
|
10459
10459
|
simo/users/utils.py,sha256=1HGSZyHRqQvdJ4RtAiZDg1juvgG8aOlrGXR7CcvsyQc,1886
|
|
10460
10460
|
simo/users/views.py,sha256=dOQVvmlHG7ihWKJLFUBcqKOA0UDctlMKR0pTc36JZqg,3487
|
|
10461
10461
|
simo/users/__pycache__/__init__.cpython-38.pyc,sha256=VFoDJE_SKKaPqqYaaBYd1Ndb1hjakkTo_u0EG_XJ1GM,211
|
|
10462
|
-
simo/users/__pycache__/admin.cpython-38.pyc,sha256=
|
|
10462
|
+
simo/users/__pycache__/admin.cpython-38.pyc,sha256=xZ_PgvobRrbqSuNgR2z2ZNm1Ec7MlvswLp7wiUxw5KQ,7937
|
|
10463
10463
|
simo/users/__pycache__/api.cpython-38.pyc,sha256=laiJ17ZN-Bj8fL-AjKpcjPm0hOVEd83vYkOqxfmHa7c,10218
|
|
10464
10464
|
simo/users/__pycache__/apps.cpython-38.pyc,sha256=dgbWL8CxzzISJQTmq_4IztPJ2UzykNVdqA2Ae1PmeGk,605
|
|
10465
10465
|
simo/users/__pycache__/auth_backends.cpython-38.pyc,sha256=n5nx2QSXNj2idzRcGE6bAagMN-8qxoCs580H1EFZXls,3105
|
|
10466
10466
|
simo/users/__pycache__/auto_urls.cpython-38.pyc,sha256=K-3sz2h-cEitoflSmZk1t0eUg5mQMMGLNZFREVwG7_o,430
|
|
10467
10467
|
simo/users/__pycache__/dynamic_settings.cpython-38.pyc,sha256=6F8JBjZkHykySnmZjNEzjS0ijbmPdcp9yUAZ5kqq_Fo,864
|
|
10468
|
-
simo/users/__pycache__/managers.cpython-38.pyc,sha256=
|
|
10468
|
+
simo/users/__pycache__/managers.cpython-38.pyc,sha256=O0Y8ABp42RAosrbODmYsPMaj9AyOPyJ-aqzuO0Qpi2s,679
|
|
10469
10469
|
simo/users/__pycache__/middleware.cpython-38.pyc,sha256=Tj4nVEAvxEW3xA63fBRiJWRJpz_M848ZOqbHioc_IPE,1149
|
|
10470
|
-
simo/users/__pycache__/models.cpython-38.pyc,sha256=
|
|
10470
|
+
simo/users/__pycache__/models.cpython-38.pyc,sha256=RDZ7bjfjTQV0rJxEVM8dfaxD5oKmoOWViAtIPpQmNQg,17472
|
|
10471
10471
|
simo/users/__pycache__/permissions.cpython-38.pyc,sha256=ez5NxoL_JUeeH6GsKhvFreuA3FCBgGf9floSypdXUtM,633
|
|
10472
10472
|
simo/users/__pycache__/serializers.cpython-38.pyc,sha256=Dy8RAcwNkNSXoJHvLp8fozURyHCtucqpSPyqZtbnMZc,3732
|
|
10473
10473
|
simo/users/__pycache__/sso_urls.cpython-38.pyc,sha256=uAwDozpOmrhUald-8tOHANILXkH7-TI8fNYXOtPkSY8,402
|
|
@@ -10561,9 +10561,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10561
10561
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10562
10562
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10563
10563
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10564
|
-
simo-2.5.
|
|
10565
|
-
simo-2.5.
|
|
10566
|
-
simo-2.5.
|
|
10567
|
-
simo-2.5.
|
|
10568
|
-
simo-2.5.
|
|
10569
|
-
simo-2.5.
|
|
10564
|
+
simo-2.5.24.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10565
|
+
simo-2.5.24.dist-info/METADATA,sha256=e0f9ASVs2ZfxneQadAVZZXmw3pN-F71v9AgAtUMcZg0,1924
|
|
10566
|
+
simo-2.5.24.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
10567
|
+
simo-2.5.24.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
|
|
10568
|
+
simo-2.5.24.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10569
|
+
simo-2.5.24.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|