simo 2.1.3__py3-none-any.whl → 2.1.5__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_auth.cpython-38.pyc +0 -0
- simo/core/__pycache__/tasks.cpython-38.pyc +0 -0
- simo/core/api_auth.py +0 -4
- simo/core/tasks.py +7 -11
- simo/fleet/__pycache__/forms.cpython-38.pyc +0 -0
- simo/fleet/forms.py +1 -1
- simo/management/__pycache__/on_http_start.cpython-38.pyc +0 -0
- simo/management/install.py +68 -25
- simo/management/on_http_start.py +5 -0
- {simo-2.1.3.dist-info → simo-2.1.5.dist-info}/METADATA +1 -1
- {simo-2.1.3.dist-info → simo-2.1.5.dist-info}/RECORD +15 -15
- {simo-2.1.3.dist-info → simo-2.1.5.dist-info}/LICENSE.md +0 -0
- {simo-2.1.3.dist-info → simo-2.1.5.dist-info}/WHEEL +0 -0
- {simo-2.1.3.dist-info → simo-2.1.5.dist-info}/entry_points.txt +0 -0
- {simo-2.1.3.dist-info → simo-2.1.5.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
simo/core/api_auth.py
CHANGED
simo/core/tasks.py
CHANGED
|
@@ -9,6 +9,7 @@ import threading
|
|
|
9
9
|
import pkg_resources
|
|
10
10
|
import sys
|
|
11
11
|
import traceback
|
|
12
|
+
import uuid
|
|
12
13
|
from django.db.models import Q
|
|
13
14
|
from django.db import connection, transaction
|
|
14
15
|
from django.template.loader import render_to_string
|
|
@@ -102,9 +103,15 @@ def save_config(data):
|
|
|
102
103
|
def sync_with_remote():
|
|
103
104
|
from simo.users.models import User
|
|
104
105
|
|
|
106
|
+
try:
|
|
107
|
+
mac = str(hex(uuid.getnode()))
|
|
108
|
+
except:
|
|
109
|
+
mac = ''
|
|
110
|
+
|
|
105
111
|
report_data = {
|
|
106
112
|
'simo_version': pkg_resources.get_distribution('simo').version,
|
|
107
113
|
'local_http': 'https://%s' % get_self_ip(),
|
|
114
|
+
'mac': mac,
|
|
108
115
|
'hub_uid': dynamic_settings['core__hub_uid'],
|
|
109
116
|
'hub_secret': dynamic_settings['core__hub_secret'],
|
|
110
117
|
'remote_conn_version': dynamic_settings['core__remote_conn_version'],
|
|
@@ -325,16 +332,6 @@ def update():
|
|
|
325
332
|
perform_update()
|
|
326
333
|
|
|
327
334
|
|
|
328
|
-
@celery_app.task
|
|
329
|
-
def auto_update():
|
|
330
|
-
if not dynamic_settings['core__auto_update']:
|
|
331
|
-
return
|
|
332
|
-
if dynamic_settings['core__latest_version_available'] != \
|
|
333
|
-
pkg_resources.get_distribution('simo').version:
|
|
334
|
-
return update()
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
335
|
@celery_app.task
|
|
339
336
|
def update_latest_version_available():
|
|
340
337
|
resp = requests.get("https://pypi.org/pypi/simo/json")
|
|
@@ -408,7 +405,6 @@ def setup_periodic_tasks(sender, **kwargs):
|
|
|
408
405
|
sender.add_periodic_task(20, sync_with_remote.s())
|
|
409
406
|
sender.add_periodic_task(60 * 60, clear_history.s())
|
|
410
407
|
sender.add_periodic_task(60 * 60, update_latest_version_available.s())
|
|
411
|
-
sender.add_periodic_task(60 * 60, auto_update.s())
|
|
412
408
|
sender.add_periodic_task(60, drop_fingerprints_learn.s())
|
|
413
409
|
sender.add_periodic_task(60 * 60 * 24, restart_postgresql.s())
|
|
414
410
|
sender.add_periodic_task(60 * 60, low_battery_notifications.s())
|
|
Binary file
|
simo/fleet/forms.py
CHANGED
|
@@ -146,7 +146,7 @@ class ColonelComponentForm(BaseComponentForm):
|
|
|
146
146
|
continue
|
|
147
147
|
if pin_instances[i].colonel != self.cleaned_data['colonel']:
|
|
148
148
|
formset_errors[i] = {
|
|
149
|
-
'
|
|
149
|
+
'input': f"{pin_instances[i]} must be from the same Colonel!"
|
|
150
150
|
}
|
|
151
151
|
elif pin_instances[i].occupied_by \
|
|
152
152
|
and pin_instances[i].occupied_by != self.instance:
|
|
Binary file
|
simo/management/install.py
CHANGED
|
@@ -51,7 +51,7 @@ def copy_template(to_directory='/etc/SIMO'):
|
|
|
51
51
|
'base_dir': to_directory
|
|
52
52
|
}, autoescape=False)
|
|
53
53
|
template_dir = os.path.join(
|
|
54
|
-
os.path.dirname(simo.__file__), '_hub_template'
|
|
54
|
+
os.path.dirname(simo.__file__), 'management', '_hub_template'
|
|
55
55
|
)
|
|
56
56
|
prefix_length = len(template_dir) + 1
|
|
57
57
|
for root, dirs, files in os.walk(template_dir):
|
|
@@ -82,10 +82,19 @@ def copy_template(to_directory='/etc/SIMO'):
|
|
|
82
82
|
else:
|
|
83
83
|
os.makedirs(os.path.join(root, dirname), exist_ok=True)
|
|
84
84
|
|
|
85
|
+
manage_py_path = os.path.join(to_directory, 'hub', 'manage.py')
|
|
86
|
+
st = os.stat(manage_py_path)
|
|
87
|
+
os.chmod(manage_py_path, st.st_mode | 0o111)
|
|
88
|
+
|
|
85
89
|
|
|
86
90
|
def install():
|
|
91
|
+
# this must be performed on a host machine before simo could be installed.
|
|
92
|
+
#
|
|
93
|
+
# apt install python3-pip libpq-dev python3-dev -y
|
|
94
|
+
|
|
87
95
|
simo_directory = '/etc/SIMO'
|
|
88
96
|
installed_flag_file_path = os.path.join(simo_directory, 'is_installed.json')
|
|
97
|
+
HUB_DIR = os.path.join(simo_directory, 'hub')
|
|
89
98
|
|
|
90
99
|
if os.path.exists(installed_flag_file_path):
|
|
91
100
|
print("SIMO.io hub is already installed. ")
|
|
@@ -115,33 +124,62 @@ def install():
|
|
|
115
124
|
step += 1
|
|
116
125
|
print(f"{step}.___________Copy default template__________________")
|
|
117
126
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
shutil.rmtree(simo_directory, ignore_errors=True)
|
|
128
|
+
try:
|
|
129
|
+
copy_template(simo_directory)
|
|
130
|
+
except Exception as e:
|
|
131
|
+
print(traceback.format_exc(), file=sys.stderr)
|
|
132
|
+
shutil.rmtree(simo_directory, ignore_errors=True)
|
|
133
|
+
return
|
|
134
|
+
|
|
135
|
+
step += 1
|
|
136
|
+
print(f"{step}.___________Create database__________________")
|
|
137
|
+
subprocess.call(
|
|
138
|
+
'sudo -u postgres createuser -s -i -d -r -l -w root',
|
|
139
|
+
shell=True
|
|
140
|
+
)
|
|
141
|
+
subprocess.call('createdb SIMO', shell=True)
|
|
142
|
+
|
|
143
|
+
step += 1
|
|
144
|
+
print(f"{step}.___________Apply migrations__________________")
|
|
145
|
+
|
|
146
|
+
proc = subprocess.Popen(
|
|
147
|
+
[os.path.join(HUB_DIR, 'manage.py'), 'migrate'],
|
|
148
|
+
cwd=HUB_DIR,
|
|
149
|
+
stderr=subprocess.PIPE
|
|
150
|
+
)
|
|
151
|
+
out, err = proc.communicate()
|
|
152
|
+
if proc.returncode:
|
|
153
|
+
raise Exception(err.decode())
|
|
154
|
+
|
|
155
|
+
step += 1
|
|
156
|
+
print(f"{step}.___________Collect statics__________________")
|
|
157
|
+
proc = subprocess.Popen(
|
|
158
|
+
[os.path.join(HUB_DIR, 'manage.py'), 'collectstatic',
|
|
159
|
+
'--noinput'],
|
|
160
|
+
cwd=HUB_DIR, stderr=subprocess.PIPE
|
|
161
|
+
)
|
|
162
|
+
out, err = proc.communicate()
|
|
163
|
+
if proc.returncode:
|
|
164
|
+
raise Exception(err.decode())
|
|
127
165
|
|
|
128
166
|
step += 1
|
|
129
167
|
print(f"{step}.___________Configure supervisor__________________")
|
|
130
168
|
|
|
131
169
|
try:
|
|
132
|
-
os.remove('/etc/supervisor/conf.d/SIMO.conf'
|
|
170
|
+
os.remove('/etc/supervisor/conf.d/SIMO.conf')
|
|
133
171
|
except:
|
|
134
172
|
pass
|
|
135
173
|
os.symlink(
|
|
136
174
|
f'{simo_directory}/hub/supervisor.conf',
|
|
137
175
|
'/etc/supervisor/conf.d/SIMO.conf'
|
|
138
176
|
)
|
|
177
|
+
os.makedirs('/var/log/simo')
|
|
139
178
|
status = subprocess.call(['supervisorctl', 'update', 'all'])
|
|
140
179
|
if status != 0:
|
|
141
180
|
sys.exit("INSTALLATION FAILED! Unable to start supervisord")
|
|
142
181
|
|
|
143
182
|
|
|
144
|
-
|
|
145
183
|
step += 1
|
|
146
184
|
print("%d._____________ Configure NGINX _________________________" % step)
|
|
147
185
|
|
|
@@ -184,10 +222,10 @@ def install():
|
|
|
184
222
|
with open('/etc/ssh/sshd_config', 'r') as ssh_conf:
|
|
185
223
|
line = ssh_conf.readline()
|
|
186
224
|
while line:
|
|
187
|
-
if 'PasswordAuthentication'
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
225
|
+
if line.startswitn('PasswordAuthentication'):
|
|
226
|
+
line.replace(' yes', ' no')
|
|
227
|
+
new_ssh_conf += line
|
|
228
|
+
|
|
191
229
|
line = ssh_conf.readline()
|
|
192
230
|
with open('/etc/ssh/sshd_config', 'w') as ssh_conf:
|
|
193
231
|
ssh_conf.write(new_ssh_conf)
|
|
@@ -234,17 +272,22 @@ def install():
|
|
|
234
272
|
timeshift_conf['schedule_monthly'] = "true"
|
|
235
273
|
timeshift_conf['schedule_weekly'] = "true"
|
|
236
274
|
timeshift_conf['schedule_daily'] = "true"
|
|
275
|
+
timeshift_conf['exclude'] = []
|
|
237
276
|
|
|
238
|
-
# Must be copied to /etc/timeshift.json to work
|
|
239
|
-
with open('/etc/timeshift.json', 'w') as conf_f:
|
|
277
|
+
# Must be copied to /etc/timeshift/timeshift.json to work
|
|
278
|
+
with open('/etc/timeshift/timeshift.json', 'w') as conf_f:
|
|
240
279
|
conf_f.write(json.dumps(timeshift_conf))
|
|
241
280
|
|
|
242
|
-
status = subprocess.call([
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
])
|
|
246
|
-
if status != 0:
|
|
247
|
-
|
|
281
|
+
# status = subprocess.call([
|
|
282
|
+
# '/usr/bin/timeshift', '--create',
|
|
283
|
+
# '--comments', '"Initial backup"', '--tags', 'M'
|
|
284
|
+
# ])
|
|
285
|
+
# if status != 0:
|
|
286
|
+
# print("Unable to start TimeShift")
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
step += 1
|
|
290
|
+
print("%d.__________ PUT UP INSTALL COMPLETE FLAG! _____________________" % step)
|
|
248
291
|
|
|
249
292
|
with open(installed_flag_file_path, 'w') as f:
|
|
250
293
|
f.write(json.dumps(True))
|
|
@@ -255,4 +298,4 @@ def install():
|
|
|
255
298
|
|
|
256
299
|
|
|
257
300
|
if __name__ == "__main__":
|
|
258
|
-
sys.exit(
|
|
301
|
+
sys.exit(install())
|
simo/management/on_http_start.py
CHANGED
|
@@ -68,6 +68,11 @@ def update_auto_update():
|
|
|
68
68
|
executable_path = '/usr/local/bin/simo-auto-update'
|
|
69
69
|
if os.geteuid() == 0:
|
|
70
70
|
# We are running as root!
|
|
71
|
+
if os.path.exists(executable_path):
|
|
72
|
+
# refresh the link if it already exists
|
|
73
|
+
os.remove(executable_path)
|
|
74
|
+
os.symlink(auto_update_file_path, executable_path)
|
|
75
|
+
|
|
71
76
|
if not os.path.islink(executable_path):
|
|
72
77
|
# There is no symbolic link yet made for auto updates.
|
|
73
78
|
# Let's make it!
|
|
@@ -15,7 +15,7 @@ simo/__pycache__/wsgi.cpython-38.pyc,sha256=TpRxO7VM_ql31hbKphVdanydC5RI1nHB4l0Q
|
|
|
15
15
|
simo/core/__init__.py,sha256=_s2TjJfQImsMrTIxqLAx9AZie1Ojmm6sCHASdl3WLGU,50
|
|
16
16
|
simo/core/admin.py,sha256=Gb1lSyvFtYj2oC5lA7j3VqU6zlqlncx5R-_XJbb8Wdk,17927
|
|
17
17
|
simo/core/api.py,sha256=HSokv9CZCCr0WHSzo5TBXe2BF5-EnTZHPnShlzN86ms,25706
|
|
18
|
-
simo/core/api_auth.py,sha256=
|
|
18
|
+
simo/core/api_auth.py,sha256=vCxvczA8aWNcW0VyKs5WlC_ytlqeGP_H_hkKUNVkCwM,1247
|
|
19
19
|
simo/core/api_meta.py,sha256=0leq4qdAELwACL7-9V_LCkuzu1VSEexys1b3iz0bsYM,3848
|
|
20
20
|
simo/core/app_widgets.py,sha256=4Lh9FDzdkfh_mccJMe09dyRTT3Uqf9VXwbkurJ9E9oQ,2115
|
|
21
21
|
simo/core/apps.py,sha256=CL4-BX6lYYGwq6hcXL-ozT7RTvy9hyfuiPCC_RfGIY0,267
|
|
@@ -40,7 +40,7 @@ simo/core/serializers.py,sha256=M3r2P1-Eb5eObOqcI9dttedh4UxgPwWwGYmOfXe3BDk,2030
|
|
|
40
40
|
simo/core/signal_receivers.py,sha256=ZhHg1mLn_Yhin-23Af1WNPfE5hnGYhhVDZDTEjRtO-A,6190
|
|
41
41
|
simo/core/socket_consumers.py,sha256=n7VE2Fvqt4iEAYLTRbTPOcI-7tszMAADu7gimBxB-Fg,9635
|
|
42
42
|
simo/core/storage.py,sha256=YlxmdRs-zhShWtFKgpJ0qp2NDBuIkJGYC1OJzqkbttQ,572
|
|
43
|
-
simo/core/tasks.py,sha256=
|
|
43
|
+
simo/core/tasks.py,sha256=VTr83_8avke6UwFZ9VQ8c2qROpVOqAWqc0RbMxNPd08,14005
|
|
44
44
|
simo/core/todos.py,sha256=eYVXfLGiapkxKK57XuviSNe3WsUYyIWZ0hgQJk7ThKo,665
|
|
45
45
|
simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
|
|
46
46
|
simo/core/views.py,sha256=ze8yX0PBLN-DH8B8jol6NKj0hLOAE4WA1rTXf07G-MU,2129
|
|
@@ -48,7 +48,7 @@ simo/core/widgets.py,sha256=J9e06C6I22F6xKic3VMgG7WeX07glAcl-4bF2Mg180A,2827
|
|
|
48
48
|
simo/core/__pycache__/__init__.cpython-38.pyc,sha256=ZJFM_XN0RmJMULQulgA_wFiOnEtsMoedcOWnXjH-Y8o,208
|
|
49
49
|
simo/core/__pycache__/admin.cpython-38.pyc,sha256=Lqs-wHz-vxGEo7ApOk6nkpNwfxselcFHqAUozotdZU4,13231
|
|
50
50
|
simo/core/__pycache__/api.cpython-38.pyc,sha256=hoCs0HvJFULzhDG4mwhTMMJt3hSDnMXJU_05FPK6dB4,20516
|
|
51
|
-
simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=
|
|
51
|
+
simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=6M9Cl_ha4y_Vf8Rv4GMYL8dcBCmp0KzYi6jn3SQTgys,1712
|
|
52
52
|
simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=Y59fGaKkyo_DJhhcDeRUUguy2OUb6f7_F6RbQRRp0vY,3023
|
|
53
53
|
simo/core/__pycache__/app_widgets.cpython-38.pyc,sha256=vUCEAYqppjgRZYMs6pTuSxWWuZxreLygPuPBGw044dQ,3643
|
|
54
54
|
simo/core/__pycache__/apps.cpython-38.pyc,sha256=S12d7zdc2m_93FeQ4gE6I3l_lh3GAe2Icf1Ra869Kzs,633
|
|
@@ -73,7 +73,7 @@ simo/core/__pycache__/serializers.cpython-38.pyc,sha256=ibatzlaahJ0keKpml7JWuPsr
|
|
|
73
73
|
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=gKwUVUf1vtIo1Ecvm6xGmBSwpEUALHrXai5pkMmjr9I,4895
|
|
74
74
|
simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=NJUr7nRyHFvmAumxxWpsod5wzVVZM99rCEuJs1utHA4,8432
|
|
75
75
|
simo/core/__pycache__/storage.cpython-38.pyc,sha256=BTkYH8QQyjqI0WOtJC8fHNtgu0YA1vjqZclXjC2vCVI,1116
|
|
76
|
-
simo/core/__pycache__/tasks.cpython-38.pyc,sha256=
|
|
76
|
+
simo/core/__pycache__/tasks.cpython-38.pyc,sha256=maImi7pqoVNvKNESi4xY_WdTOJdjDgP11knfXKKuVcI,9902
|
|
77
77
|
simo/core/__pycache__/todos.cpython-38.pyc,sha256=lOqGZ58siHM3isoJV4r7sg8igrfE9fFd-jSfeBa0AQI,253
|
|
78
78
|
simo/core/__pycache__/views.cpython-38.pyc,sha256=ULyoiWRiU_auXTuxzi2RyqYIea9VfaiMuTzkMAWaWOA,2343
|
|
79
79
|
simo/core/__pycache__/widgets.cpython-38.pyc,sha256=sR0ZeHCHrhnNDBJuRrxp3zUsfBp0xrtF0xrK2TkQv1o,3520
|
|
@@ -10186,7 +10186,7 @@ simo/fleet/auto_urls.py,sha256=UX66eR2ykMqFgfIllW-RTdjup5-FieCWl_BVm3CcXKg,702
|
|
|
10186
10186
|
simo/fleet/base_types.py,sha256=wL9RVkHr0gA7HI1wZq0pruGEIgvQqpfnCL4cC3ywsvw,102
|
|
10187
10187
|
simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
|
|
10188
10188
|
simo/fleet/controllers.py,sha256=ounEUw51X6EYA8xDcGNIik1bDbw4JR3DOGr1FKo4hHs,28829
|
|
10189
|
-
simo/fleet/forms.py,sha256=
|
|
10189
|
+
simo/fleet/forms.py,sha256=CbrLN_gMCTo8u6fg0ovztkhdYEjHZmSr_3gzsDRMP84,54425
|
|
10190
10190
|
simo/fleet/gateways.py,sha256=lKEJW0MgaOEiNnijH50DNSVChvaUT3TA3UurcI57P8k,5677
|
|
10191
10191
|
simo/fleet/managers.py,sha256=XOpDOA9L-f_550TNSyXnJbun2EmtGz1TenVTMlUSb8E,807
|
|
10192
10192
|
simo/fleet/models.py,sha256=U4q813VZmYUpgu7Iw4-z80LfHlkZziIqBKqkQzBA9WI,16304
|
|
@@ -10203,7 +10203,7 @@ simo/fleet/__pycache__/auto_urls.cpython-38.pyc,sha256=Tc6a6BCXHjijP8U2jE2ghlJwn
|
|
|
10203
10203
|
simo/fleet/__pycache__/base_types.cpython-38.pyc,sha256=deyPwjpT6xZiFxBGFnj5b7R-lbdOTh2krgpJhrcGVhc,274
|
|
10204
10204
|
simo/fleet/__pycache__/ble.cpython-38.pyc,sha256=Nrof9w7cm4OlpFWHeVnmvvanh2_oF9oQ3TknJiV93-0,1267
|
|
10205
10205
|
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=61dvQDl2nIuB4iaCzdBMwQnly_m0OvI7zteRS6sIm5U,23831
|
|
10206
|
-
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=
|
|
10206
|
+
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=7B6NZnY6yS8qrmv5zlTa07iUYmdv4nW7PTpOVfRn3OY,37436
|
|
10207
10207
|
simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=0RKVn0ndreVKhsrukqeLPSdMnRrsQ_W7yeVeBkRLfIk,5058
|
|
10208
10208
|
simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=8uz-xpUiqbGDgXIZ_XRZtFb-Tju6NGxflGg-Ee4Yo6k,1310
|
|
10209
10209
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=yudhmE7zhXN5t3b63N6TwAtBLC4OXiAZiNBzki3SuHI,13664
|
|
@@ -10337,10 +10337,10 @@ simo/generic/templates/generic/controllers_info/stateselect.md,sha256=T0w3vJg02W
|
|
|
10337
10337
|
simo/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10338
10338
|
simo/management/auto_update.py,sha256=4MDrJHdtC5LxEJM258Y0kc5yI4yloeKhDjh-S2BN-ZQ,2115
|
|
10339
10339
|
simo/management/copy_template.py,sha256=Iehq57FYMzdHNp3LU4ue6rr6AkRiGeOthG7PoGWd88Q,2002
|
|
10340
|
-
simo/management/install.py,sha256=
|
|
10341
|
-
simo/management/on_http_start.py,sha256=
|
|
10340
|
+
simo/management/install.py,sha256=s9GqIRwLpli8g_utu2pZ0QGVSXSHFXbkY12S_R3MnVc,10127
|
|
10341
|
+
simo/management/on_http_start.py,sha256=ZDotfMQaCjksD5FFf3eZYgJS-gd_-7eZhYTHLaD-448,3312
|
|
10342
10342
|
simo/management/__pycache__/__init__.cpython-38.pyc,sha256=ey9k5mPsmvAHRVf5Du6QUqy40LgBCAPN_B5EaR6h9Eg,164
|
|
10343
|
-
simo/management/__pycache__/on_http_start.cpython-38.pyc,sha256=
|
|
10343
|
+
simo/management/__pycache__/on_http_start.cpython-38.pyc,sha256=ERfcMNz3QnqDJTJ4PwbmDfLgPCh5hrEcaedejARFkUQ,2864
|
|
10344
10344
|
simo/management/_hub_template/hub/asgi.py,sha256=ElN_fdeSkf0Ysa7pS9rJVmZ1HmLhFxb8jFaMLqe1220,126
|
|
10345
10345
|
simo/management/_hub_template/hub/celeryc.py,sha256=3ksDXftIZKJ4Cq9WNKJERdZdQlDEnjTQXycweRFmsSQ,27
|
|
10346
10346
|
simo/management/_hub_template/hub/manage.py,sha256=PNNlw3EVeIJDgkG0l-klqoxsKWfTYWG9jzRG0upmAaI,620
|
|
@@ -10494,9 +10494,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10494
10494
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10495
10495
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10496
10496
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10497
|
-
simo-2.1.
|
|
10498
|
-
simo-2.1.
|
|
10499
|
-
simo-2.1.
|
|
10500
|
-
simo-2.1.
|
|
10501
|
-
simo-2.1.
|
|
10502
|
-
simo-2.1.
|
|
10497
|
+
simo-2.1.5.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10498
|
+
simo-2.1.5.dist-info/METADATA,sha256=sV13UwrNRCCV4LImcqM__PHth4pKToD1KXgItU6eMoY,1817
|
|
10499
|
+
simo-2.1.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
10500
|
+
simo-2.1.5.dist-info/entry_points.txt,sha256=SJBxiDpH7noO0STxVI_eRIsGR-nLgdXXeqCDe8cXlbM,65
|
|
10501
|
+
simo-2.1.5.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10502
|
+
simo-2.1.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|