simo 2.7.3__py3-none-any.whl → 2.7.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__/admin.cpython-38.pyc +0 -0
- simo/core/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/core/__pycache__/forms.cpython-38.pyc +0 -0
- simo/core/__pycache__/models.cpython-38.pyc +0 -0
- simo/core/admin.py +1 -1
- simo/core/controllers.py +17 -0
- simo/core/forms.py +12 -16
- simo/core/migrations/0046_component_value_translation_alter_gateway_type.py +23 -0
- simo/core/migrations/__pycache__/0046_component_value_translation_alter_gateway_type.cpython-38.pyc +0 -0
- simo/core/models.py +7 -0
- simo/core/templates/core/value_translation.py +5 -0
- simo/generic/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/generic/__pycache__/gateways.cpython-38.pyc +0 -0
- simo/generic/controllers.py +1 -1
- simo/generic/gateways.py +5 -6
- {simo-2.7.3.dist-info → simo-2.7.5.dist-info}/METADATA +1 -1
- {simo-2.7.3.dist-info → simo-2.7.5.dist-info}/RECORD +21 -18
- {simo-2.7.3.dist-info → simo-2.7.5.dist-info}/LICENSE.md +0 -0
- {simo-2.7.3.dist-info → simo-2.7.5.dist-info}/WHEEL +0 -0
- {simo-2.7.3.dist-info → simo-2.7.5.dist-info}/entry_points.txt +0 -0
- {simo-2.7.3.dist-info → simo-2.7.5.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/core/admin.py
CHANGED
|
@@ -342,7 +342,7 @@ class ComponentAdmin(EasyObjectsDeleteMixin, admin.ModelAdmin):
|
|
|
342
342
|
|
|
343
343
|
def pop_fields_from_form(form):
|
|
344
344
|
for field_neme in (
|
|
345
|
-
'value_units', '
|
|
345
|
+
'value_units', 'value_translation',
|
|
346
346
|
'alarm_category', 'arm_status'
|
|
347
347
|
):
|
|
348
348
|
if field_neme in form.fields:
|
simo/core/controllers.py
CHANGED
|
@@ -259,6 +259,15 @@ class ControllerBase(ABC):
|
|
|
259
259
|
update_fields=['change_init_by', 'change_init_date']
|
|
260
260
|
)
|
|
261
261
|
value = self._prepare_for_send(value)
|
|
262
|
+
if self.component.value_translation:
|
|
263
|
+
try:
|
|
264
|
+
namespace = {}
|
|
265
|
+
exec(self.component.value_translation, namespace)
|
|
266
|
+
val_translate = namespace['translate']
|
|
267
|
+
value = val_translate(value, BEFORE_SEND)
|
|
268
|
+
except:
|
|
269
|
+
pass
|
|
270
|
+
|
|
262
271
|
GatewayObjectCommand(
|
|
263
272
|
self.component.gateway, self.component, set_val=value
|
|
264
273
|
).publish()
|
|
@@ -267,6 +276,14 @@ class ControllerBase(ABC):
|
|
|
267
276
|
self.component.value = value
|
|
268
277
|
|
|
269
278
|
def set(self, value, actor=None):
|
|
279
|
+
if self.component.value_translation:
|
|
280
|
+
try:
|
|
281
|
+
namespace = {}
|
|
282
|
+
exec(self.component.value_translation, namespace)
|
|
283
|
+
val_translate = namespace['translate']
|
|
284
|
+
value = val_translate(value, BEFORE_SET)
|
|
285
|
+
except:
|
|
286
|
+
pass
|
|
270
287
|
value = self._validate_val(value, BEFORE_SET)
|
|
271
288
|
|
|
272
289
|
if not actor:
|
simo/core/forms.py
CHANGED
|
@@ -14,7 +14,7 @@ from .models import (
|
|
|
14
14
|
Icon, Category, Gateway, Component
|
|
15
15
|
)
|
|
16
16
|
from .form_fields import Select2ModelMultipleChoiceField
|
|
17
|
-
from .widgets import SVGFileWidget, LogOutputWidget
|
|
17
|
+
from .widgets import SVGFileWidget, LogOutputWidget, PythonCode
|
|
18
18
|
from .utils.formsets import FormsetField
|
|
19
19
|
from .utils.validators import validate_slaves
|
|
20
20
|
|
|
@@ -242,6 +242,7 @@ class ComponentAdminForm(forms.ModelForm):
|
|
|
242
242
|
'category': autocomplete.ModelSelect2(
|
|
243
243
|
url='autocomplete-category', attrs={'data-html': True}
|
|
244
244
|
),
|
|
245
|
+
'value_translation': PythonCode()
|
|
245
246
|
}
|
|
246
247
|
|
|
247
248
|
def __init__(self, *args, **kwargs):
|
|
@@ -299,7 +300,6 @@ class ComponentAdminForm(forms.ModelForm):
|
|
|
299
300
|
main_fields = (
|
|
300
301
|
'name', 'icon', 'zone', 'category',
|
|
301
302
|
'show_in_app', 'battery_level',
|
|
302
|
-
#'instance_methods',
|
|
303
303
|
'value_units',
|
|
304
304
|
'alarm_category', 'arm_status',
|
|
305
305
|
'notes'
|
|
@@ -315,12 +315,11 @@ class ComponentAdminForm(forms.ModelForm):
|
|
|
315
315
|
if field_name not in main_fields:
|
|
316
316
|
base_fields.append(field_name)
|
|
317
317
|
|
|
318
|
-
base_fields.append('show_in_app')
|
|
319
318
|
base_fields.append('control')
|
|
320
319
|
base_fields.append('notes')
|
|
321
320
|
|
|
322
321
|
fieldsets = [
|
|
323
|
-
(_("Base settings"), {'fields': base_fields}),
|
|
322
|
+
(_("Base settings"), {'fields': base_fields + ['value_units', 'value_translation']}),
|
|
324
323
|
]
|
|
325
324
|
if cls.has_alarm:
|
|
326
325
|
fieldsets.append(
|
|
@@ -336,7 +335,7 @@ class ComponentAdminForm(forms.ModelForm):
|
|
|
336
335
|
'fields': (
|
|
337
336
|
'alive', 'error_msg', 'battery_level',
|
|
338
337
|
'config', 'meta',
|
|
339
|
-
'value',
|
|
338
|
+
'value',
|
|
340
339
|
'history'
|
|
341
340
|
),
|
|
342
341
|
'classes': ('collapse',),
|
|
@@ -354,22 +353,19 @@ class ComponentAdminForm(forms.ModelForm):
|
|
|
354
353
|
))
|
|
355
354
|
return self.cleaned_data['category']
|
|
356
355
|
|
|
357
|
-
def
|
|
358
|
-
|
|
356
|
+
def clean_value_translation(self):
|
|
357
|
+
if 'value_translation' not in self.cleaned_data:
|
|
358
|
+
return
|
|
359
359
|
try:
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
None, custom_methods
|
|
365
|
-
)
|
|
360
|
+
namespace = {}
|
|
361
|
+
exec(self.cleaned_data['value_translation'], namespace)
|
|
362
|
+
translate = namespace['translate']
|
|
363
|
+
translate(self.instance.controller.default_value, 'before-set')
|
|
366
364
|
except Exception:
|
|
367
365
|
error = traceback.format_exc()
|
|
368
|
-
error = error[error.find('File') + 5:]
|
|
369
|
-
error = error[error.find('File'):]
|
|
370
366
|
error = error.replace('\n', '<br>').replace(' ', ' ')
|
|
371
367
|
raise forms.ValidationError(mark_safe(error))
|
|
372
|
-
return self.cleaned_data['
|
|
368
|
+
return self.cleaned_data['value_translation']
|
|
373
369
|
|
|
374
370
|
|
|
375
371
|
class BaseComponentForm(ConfigFieldsMixin, ComponentAdminForm):
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Generated by Django 4.2.10 on 2024-12-06 16:02
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('core', '0045_alter_instance_device_report_history_days_and_more'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='component',
|
|
15
|
+
name='value_translation',
|
|
16
|
+
field=models.TextField(default="def translate(value, occasion):\n if occasion == 'before-set':\n return value\n else: # 'before-send'\n return value", help_text='Adjust this to make value translations before value isset on to a component and before it is sent to a device from your SIMO.io smart home instance.'),
|
|
17
|
+
),
|
|
18
|
+
migrations.AlterField(
|
|
19
|
+
model_name='gateway',
|
|
20
|
+
name='type',
|
|
21
|
+
field=models.CharField(choices=[('simo.automation.gateways.AutomationsGatewayHandler', 'Automation'), ('simo.generic.gateways.DummyGatewayHandler', 'Dummy'), ('simo.generic.gateways.GenericGatewayHandler', 'Generic'), ('simo_komfovent.gateways.KomfoventGatewayHandler', 'Komfovent'), ('simo.fleet.gateways.FleetGatewayHandler', 'SIMO.io Fleet'), ('simo_zwave.gateways.ZwaveGatewayHandler', 'Zwave')], db_index=True, max_length=200, unique=True),
|
|
22
|
+
),
|
|
23
|
+
]
|
simo/core/migrations/__pycache__/0046_component_value_translation_alter_gateway_type.cpython-38.pyc
ADDED
|
Binary file
|
simo/core/models.py
CHANGED
|
@@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _
|
|
|
8
8
|
from django.db import models
|
|
9
9
|
from django.db.models.signals import post_delete
|
|
10
10
|
from django.dispatch import receiver
|
|
11
|
+
from django.template.loader import render_to_string
|
|
11
12
|
from timezone_utils.choices import ALL_TIMEZONES_CHOICES
|
|
12
13
|
from location_field.models.plain import PlainLocationField
|
|
13
14
|
from model_utils import FieldTracker
|
|
@@ -343,6 +344,12 @@ class Component(DirtyFieldsMixin, models.Model, SimoAdminMixin, OnChangeMixin):
|
|
|
343
344
|
value = models.JSONField(null=True, blank=True)
|
|
344
345
|
value_previous = models.JSONField(null=True, blank=True, editable=False)
|
|
345
346
|
value_units = models.CharField(max_length=100, null=True, blank=True)
|
|
347
|
+
value_translation = models.TextField(
|
|
348
|
+
default=render_to_string('core/value_translation.py'), blank=True,
|
|
349
|
+
help_text="Adjust this to make value translations before value is"
|
|
350
|
+
"set on to a component and before it is sent to a device "
|
|
351
|
+
"from your SIMO.io smart home instance."
|
|
352
|
+
)
|
|
346
353
|
|
|
347
354
|
slaves = models.ManyToManyField(
|
|
348
355
|
'Component', null=True, blank=True, related_name='masters'
|
|
Binary file
|
|
Binary file
|
simo/generic/controllers.py
CHANGED
|
@@ -1131,7 +1131,7 @@ class MainState(StateSelect):
|
|
|
1131
1131
|
|
|
1132
1132
|
|
|
1133
1133
|
def check_is_away(self, last_sensor_action):
|
|
1134
|
-
away_on_no_action =
|
|
1134
|
+
away_on_no_action = self.component.config.get('away_on_no_action')
|
|
1135
1135
|
if not away_on_no_action:
|
|
1136
1136
|
return False
|
|
1137
1137
|
from simo.users.models import InstanceUser
|
simo/generic/gateways.py
CHANGED
|
@@ -334,20 +334,19 @@ class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
|
|
|
334
334
|
state.send(new_state)
|
|
335
335
|
|
|
336
336
|
if state.config.get('away_on_no_action'):
|
|
337
|
+
if i_id not in self.last_sensor_actions:
|
|
338
|
+
self.last_sensor_actions[i_id] = time.time()
|
|
339
|
+
if state.id not in self.sensors_on_watch:
|
|
340
|
+
self.sensors_on_watch[state.id] = {}
|
|
337
341
|
for sensor in Component.objects.filter(
|
|
338
342
|
zone__instance=state.zone.instance,
|
|
339
343
|
base_type='binary-sensor', alarm_category='security'
|
|
340
344
|
):
|
|
341
|
-
if state.id not in self.sensors_on_watch:
|
|
342
|
-
self.sensors_on_watch[state.id] = {}
|
|
343
|
-
|
|
344
345
|
if sensor.id not in self.sensors_on_watch[state.id]:
|
|
345
346
|
self.sensors_on_watch[state.id][sensor.id] = i_id
|
|
346
|
-
self.last_sensor_actions[i_id] = time.time()
|
|
347
347
|
sensor.on_change(self.security_sensor_change)
|
|
348
348
|
|
|
349
|
-
|
|
350
|
-
if state.check_is_away(last_action):
|
|
349
|
+
if state.check_is_away(self.last_sensor_actions.get(i_id, 0)):
|
|
351
350
|
if state.value != 'away':
|
|
352
351
|
print(f"New main state of "
|
|
353
352
|
f"{state.zone.instance} - away")
|
|
@@ -60,7 +60,7 @@ simo/backups/migrations/__pycache__/0003_alter_backuplog_options_alter_backup_si
|
|
|
60
60
|
simo/backups/migrations/__pycache__/0004_alter_backup_options_alter_backuplog_options_and_more.cpython-38.pyc,sha256=f4leTBkOB2kraQYyCkz9B_2pb6aKn7srV2unQA5HV1Q,710
|
|
61
61
|
simo/backups/migrations/__pycache__/__init__.cpython-38.pyc,sha256=Lz1fs6V05h2AoxTOLNye0do9bEMnyuaXB_hHOjG5-HU,172
|
|
62
62
|
simo/core/__init__.py,sha256=_s2TjJfQImsMrTIxqLAx9AZie1Ojmm6sCHASdl3WLGU,50
|
|
63
|
-
simo/core/admin.py,sha256=
|
|
63
|
+
simo/core/admin.py,sha256=j07Dy3IsW7SRRsAJ2XXGzE0MTxmfY87CEEbT22kLlS4,18550
|
|
64
64
|
simo/core/api.py,sha256=eJCV5kScDWfVUa7RprMWvu8PQlGX2T3vCGIhIl4Z6Jw,30306
|
|
65
65
|
simo/core/api_auth.py,sha256=vCxvczA8aWNcW0VyKs5WlC_ytlqeGP_H_hkKUNVkCwM,1247
|
|
66
66
|
simo/core/api_meta.py,sha256=dBIpQNDSMO4yum4Xa6acHkWwEDItooZC4QLV_EZfwIc,5221
|
|
@@ -70,17 +70,17 @@ simo/core/auto_urls.py,sha256=FBDclIeRp5UVWomIUbRzUgY-AoMk-r2qC2htlwKD4Lo,1106
|
|
|
70
70
|
simo/core/autocomplete_views.py,sha256=x3MKOZvXYS3xVQ-V1S7Liv_U5bxr-uc0gePa85wv5nA,4561
|
|
71
71
|
simo/core/base_types.py,sha256=WypW8hTfzveuTQtruGjLYAGQZIuczxTlW-SdRk3iQug,666
|
|
72
72
|
simo/core/context.py,sha256=LKw1I4iIRnlnzoTCuSLLqDX7crHdBnMo3hjqYvVmzFc,1557
|
|
73
|
-
simo/core/controllers.py,sha256=
|
|
73
|
+
simo/core/controllers.py,sha256=gVwQHYkJ6GNTHaKTSjf4H2VVykQbvKh4_fSe_MdAVi4,37412
|
|
74
74
|
simo/core/dynamic_settings.py,sha256=bUs58XEZOCIEhg1TigR3LmYggli13KMryBZ9pC7ugAQ,1872
|
|
75
75
|
simo/core/events.py,sha256=1_KIk5pJqdLPRQlCQ9xSyALst2Cn0b2lAEAJ3QjwIjE,4801
|
|
76
76
|
simo/core/filters.py,sha256=6wbn8C2WvKTTjtfMwwLBp2Fib1V0-DMpS4iqJd6jJQo,2540
|
|
77
77
|
simo/core/form_fields.py,sha256=m3dR31M31q3DQM-7P4jBOXLofm-PiC0ykIfUrpWhOjg,5007
|
|
78
|
-
simo/core/forms.py,sha256=
|
|
78
|
+
simo/core/forms.py,sha256=KZKmc5dWGvEicTEokQdijM5SgA-ZjrdenJPVwcb5R3s,21675
|
|
79
79
|
simo/core/gateways.py,sha256=Y2BME6zSyeUq_e-hzEUF6gErCUCP6nFxedkLZKiLVOo,4141
|
|
80
80
|
simo/core/loggers.py,sha256=EBdq23gTQScVfQVH-xeP90-wII2DQFDjoROAW6ggUP4,1645
|
|
81
81
|
simo/core/managers.py,sha256=n-b3I4uXzfHKTeB1VMjSaMsDUxp8FegFJwnbV1IsWQ4,3019
|
|
82
82
|
simo/core/middleware.py,sha256=eUFf6iP-Snx_0TE3MoXsSwqrd5IjlukqZk2GQGStRCo,3385
|
|
83
|
-
simo/core/models.py,sha256=
|
|
83
|
+
simo/core/models.py,sha256=cJrY7mBnKD-AsM62WzCnrNw21wmGu6bGuxpvBPjQg60,23220
|
|
84
84
|
simo/core/permissions.py,sha256=2YNRot2qoHjHKWPGOpO4PBseecctPbTlUQpepnFkCRs,3027
|
|
85
85
|
simo/core/routing.py,sha256=X1_IHxyA-_Q7hw1udDoviVP4_FSBDl8GYETTC2zWTbY,499
|
|
86
86
|
simo/core/serializers.py,sha256=pa4F5fSvIxgGJWBEcXdzpmemRWl6QbUoUDMqQ_RdA2o,22514
|
|
@@ -93,7 +93,7 @@ simo/core/types.py,sha256=WJEq48mIbFi_5Alt4wxWMGXxNxUTXqfQU5koH7wqHHI,1108
|
|
|
93
93
|
simo/core/views.py,sha256=yx9I0byeVUa-LAOnklpWIYwpNNOf5m9fyjKBvj4YCh4,2475
|
|
94
94
|
simo/core/widgets.py,sha256=J9e06C6I22F6xKic3VMgG7WeX07glAcl-4bF2Mg180A,2827
|
|
95
95
|
simo/core/__pycache__/__init__.cpython-38.pyc,sha256=ZJFM_XN0RmJMULQulgA_wFiOnEtsMoedcOWnXjH-Y8o,208
|
|
96
|
-
simo/core/__pycache__/admin.cpython-38.pyc,sha256=
|
|
96
|
+
simo/core/__pycache__/admin.cpython-38.pyc,sha256=oDG9Kem_VbiRDB6ednmvPS9asBDb3iki7OyLzzNRYCQ,14155
|
|
97
97
|
simo/core/__pycache__/api.cpython-38.pyc,sha256=uSPeR38cxPN2H875ky5tDlF_tkkuInzB92qaK4lQWUA,23249
|
|
98
98
|
simo/core/__pycache__/api_auth.cpython-38.pyc,sha256=mi3mu5qEKio_PvfQEvr3Q6AhdPLAHxzxAxrMbAz_pKU,1712
|
|
99
99
|
simo/core/__pycache__/api_meta.cpython-38.pyc,sha256=0IkX6_e09XSsHuA4NDhmyXtegiXo0bpiAeJvEl8LFoc,3837
|
|
@@ -103,17 +103,17 @@ simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=ib_ns5Ko8ybfrdJJWYVV1jevih
|
|
|
103
103
|
simo/core/__pycache__/autocomplete_views.cpython-38.pyc,sha256=rZzjrxAir0HzN9uKPoXIY753f1CSdFWaSW7QBDen3qc,4448
|
|
104
104
|
simo/core/__pycache__/base_types.cpython-38.pyc,sha256=CX-qlF7CefRi_mCE954wYa9rUFR88mOl6g7fybDRu7g,803
|
|
105
105
|
simo/core/__pycache__/context.cpython-38.pyc,sha256=NlTHt2GvXxA21AhBkeyOLfRFUuXw7wmwqyNhhcDl2cw,1373
|
|
106
|
-
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
106
|
+
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=LtrQQ8egOIOuQbAckeM-z8OfbzS4W8VQ3vBnryAm3iU,32086
|
|
107
107
|
simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=wGpnscX1DxFpRl54MQURhjz2aD3NJohSzw9JCFnzh2Y,2384
|
|
108
108
|
simo/core/__pycache__/events.cpython-38.pyc,sha256=1y8YaZsiDkBOeIWzH7SQz4holmMG_RLlMWi8kuSZcoE,5280
|
|
109
109
|
simo/core/__pycache__/filters.cpython-38.pyc,sha256=WBBDwcDQwOmgbrRhyUxenSN80rU4Eq9jQ6RcrRGCP_o,2440
|
|
110
110
|
simo/core/__pycache__/form_fields.cpython-38.pyc,sha256=BXiHLzmLgex-JrCcTo5k26CyZyKZ_QJv7eoEwyJGE-g,5745
|
|
111
|
-
simo/core/__pycache__/forms.cpython-38.pyc,sha256=
|
|
111
|
+
simo/core/__pycache__/forms.cpython-38.pyc,sha256=GaAOXoLUc8xvu5sqJG1Z6K-xkkPtd2Y6WrGFft7dklw,17658
|
|
112
112
|
simo/core/__pycache__/gateways.cpython-38.pyc,sha256=-_ugqnUOA1Cl6VfMqpV96n7ekVOEwYg_jNvoaZEcx9I,4815
|
|
113
113
|
simo/core/__pycache__/loggers.cpython-38.pyc,sha256=Z-cdQnC6XlIonPV4Sl4E52tP4NMEdPAiHK0cFaIL7I8,1623
|
|
114
114
|
simo/core/__pycache__/managers.cpython-38.pyc,sha256=6RTIxyjOgpQGtAqcUyE2vFPS09w1V5Wmd_vOV7rHRRI,3370
|
|
115
115
|
simo/core/__pycache__/middleware.cpython-38.pyc,sha256=SgTLFNkKxvJ62hevSAVNZHgHdG_u2p7AZBhrj-jfFPs,2649
|
|
116
|
-
simo/core/__pycache__/models.cpython-38.pyc,sha256=
|
|
116
|
+
simo/core/__pycache__/models.cpython-38.pyc,sha256=I6u3Gs4Af0lv6GWDDhlTSTqJWiErhMWSoksNWxSODsg,18865
|
|
117
117
|
simo/core/__pycache__/permissions.cpython-38.pyc,sha256=UdtxCTXPEbe99vgZOfRz9wfKSYvUn9hSRbpIV9CJSyI,2988
|
|
118
118
|
simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
|
|
119
119
|
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=xegjaPbTp71RK9pfle_vgbHiUhr4CQIq34A7RxpvNGg,19817
|
|
@@ -236,6 +236,7 @@ simo/core/migrations/0042_alter_instance_timezone.py,sha256=5fLprOmoV06y37rh3uJW
|
|
|
236
236
|
simo/core/migrations/0043_alter_category_instance_alter_instance_timezone_and_more.py,sha256=TpJRZjwJu1iDYt1cCQr62jLOz14yy7yjrfbyHYgu9pM,23896
|
|
237
237
|
simo/core/migrations/0044_alter_gateway_type.py,sha256=xoQvOSz_JrWHECAAII83518tmhEEfLUHqxpIjoo4oLY,758
|
|
238
238
|
simo/core/migrations/0045_alter_instance_device_report_history_days_and_more.py,sha256=saR7gEbTDfXTcKnT1R193Aboqlg32HvDRI_JAvZ97TY,1360
|
|
239
|
+
simo/core/migrations/0046_component_value_translation_alter_gateway_type.py,sha256=SUybDSLRCGevVS9mCQGvozO8LA43tKze3R5rCf1TQ4E,1282
|
|
239
240
|
simo/core/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
240
241
|
simo/core/migrations/__pycache__/0001_initial.cpython-38.pyc,sha256=w6GiBXVxWj30Bg4Sn_pFVeA041d-pCrkaq8mR3KuF70,5381
|
|
241
242
|
simo/core/migrations/__pycache__/0002_load_icons.cpython-38.pyc,sha256=Nb9RrPjVYo_RpZ5PmzoaEIWGCeVt4kicpmGiKlBrpIw,2123
|
|
@@ -282,6 +283,7 @@ simo/core/migrations/__pycache__/0042_alter_instance_timezone.cpython-38.pyc,sha
|
|
|
282
283
|
simo/core/migrations/__pycache__/0043_alter_category_instance_alter_instance_timezone_and_more.cpython-38.pyc,sha256=97_eFPQ_Iy-M1712Nad1w8t3ITBV4BF0eY1e8N-oOE4,16759
|
|
283
284
|
simo/core/migrations/__pycache__/0044_alter_gateway_type.cpython-38.pyc,sha256=KwqGKoo8C1wH9ZUhagpC3plTwheSMcWtwlCGcSPd5WQ,964
|
|
284
285
|
simo/core/migrations/__pycache__/0045_alter_instance_device_report_history_days_and_more.cpython-38.pyc,sha256=e1_hKjdokggnPndFkoBWrHQ18IkBi2W7WahcSjAbvKo,1278
|
|
286
|
+
simo/core/migrations/__pycache__/0046_component_value_translation_alter_gateway_type.cpython-38.pyc,sha256=0WowsGpjyPX7Z341bhU4bXErZqqFZaL1gtiusabrD0I,1445
|
|
285
287
|
simo/core/migrations/__pycache__/__init__.cpython-38.pyc,sha256=VZmDQ57BTcebuM0KMhjiTOabgWZCBxQmSJzWZos9SO8,169
|
|
286
288
|
simo/core/static/ansi_styles.css,sha256=4ieJGrjZPKyPSago9FdB_gflHoGE1vxCHi8qVn5tY-Y,37352
|
|
287
289
|
simo/core/static/admin/Img/plus.svg,sha256=2NpSFPWqGIjpAQGFI7LDQHPKagEhYkJiJX95ufCoZaI,741
|
|
@@ -10203,6 +10205,7 @@ simo/core/templates/admin/wizard/wizard_add.html,sha256=RPkwKXctu_yxJxjJqcvVEzG4
|
|
|
10203
10205
|
simo/core/templates/core/icon_acutocomplete_select_item.html,sha256=D7aWefAJjrDqyMcwt4vtuwkruklJ1aSjCTi99HLrQUY,768
|
|
10204
10206
|
simo/core/templates/core/object_acutocomplete_select_item.html,sha256=pS8APlv1IdhfttONh3npzQNfrOhj63YC7837tnOfSHk,465
|
|
10205
10207
|
simo/core/templates/core/openvpn_client.conf,sha256=z1838G8v8vmIiQKyfE8URCCMpLsges5jbX3hDJkztF4,249
|
|
10208
|
+
simo/core/templates/core/value_translation.py,sha256=o5FqQsKz2Mn-BVbkLuGuIq-K-_ss0sPxh-cTLlBWGvo,132
|
|
10206
10209
|
simo/core/templates/gis/my-openlayers-osm.html,sha256=ze4Gcl4fjrkKS1lONZHgpD-ybdI_N4zZcWBsBeyL4-A,1790
|
|
10207
10210
|
simo/core/templates/gis/js/OLMapWidget.js,sha256=QOOHCR4CyAljFTtXTP_MNKN5RTplp3lvDKxHJj3J4KY,8813
|
|
10208
10211
|
simo/core/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -10376,18 +10379,18 @@ simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LS
|
|
|
10376
10379
|
simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10377
10380
|
simo/generic/app_widgets.py,sha256=y8W3jR76Hh26O9pPQyg2SophMbYIOtAWD33MPKbB8Mg,856
|
|
10378
10381
|
simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
|
|
10379
|
-
simo/generic/controllers.py,sha256=
|
|
10382
|
+
simo/generic/controllers.py,sha256=ksn_8LvBn3RM-OegI32h4fp7te_Koq-rQy7DtHCiOI4,46063
|
|
10380
10383
|
simo/generic/forms.py,sha256=kQL8NdK_9-PxFcoPK6fMMCmtroY2Nbx_MqERgBoRg6g,22933
|
|
10381
|
-
simo/generic/gateways.py,sha256=
|
|
10384
|
+
simo/generic/gateways.py,sha256=om0KdIPOQVyNbxUQuD7Angf4o0Jg8OblMFsWjOfRGXw,15210
|
|
10382
10385
|
simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
|
|
10383
10386
|
simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
|
|
10384
10387
|
simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-qaQ,1757
|
|
10385
10388
|
simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
|
|
10386
10389
|
simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=D9b13pbMlirgHmjDnQhfLIDGSVINoSouHb4SWOeCRrs,1642
|
|
10387
10390
|
simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
|
|
10388
|
-
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256
|
|
10391
|
+
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=ccYZ7AknZbPK_fTHO5lUO-steSeZeudQIynMkh1Gm7M,30116
|
|
10389
10392
|
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=2rmamwhD9wdrW2zO73oAAbeAMZiJqGKB1lizwTRuGZs,17258
|
|
10390
|
-
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=
|
|
10393
|
+
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=QtQhcRm_UNBEyLyGfb_bxmS6JZ9S0aeOhEVzAAAWXds,11356
|
|
10391
10394
|
simo/generic/__pycache__/models.cpython-38.pyc,sha256=MZpum7syAFxuulf47K7gtUlJJ7xRD-IBUBAwUM1ZRnw,5825
|
|
10392
10395
|
simo/generic/__pycache__/routing.cpython-38.pyc,sha256=xtxTUTBTdivzFyA5Wh7k-hUj1WDO_FiRq6HYXdbr9Ks,382
|
|
10393
10396
|
simo/generic/__pycache__/socket_consumers.cpython-38.pyc,sha256=qJO5kvQLWhsQDOr1AtAtsAybuRWioxSkQei3Pc7rdP0,1737
|
|
@@ -10603,9 +10606,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10603
10606
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10604
10607
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10605
10608
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10606
|
-
simo-2.7.
|
|
10607
|
-
simo-2.7.
|
|
10608
|
-
simo-2.7.
|
|
10609
|
-
simo-2.7.
|
|
10610
|
-
simo-2.7.
|
|
10611
|
-
simo-2.7.
|
|
10609
|
+
simo-2.7.5.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10610
|
+
simo-2.7.5.dist-info/METADATA,sha256=UvkGUGuSL3HwgkzES1Ec_Cy0aqKB3fJMKtw_lc4p_X0,1952
|
|
10611
|
+
simo-2.7.5.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
10612
|
+
simo-2.7.5.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
|
|
10613
|
+
simo-2.7.5.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10614
|
+
simo-2.7.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|