arthexis 0.1.10__py3-none-any.whl → 0.1.11__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 arthexis might be problematic. Click here for more details.
- {arthexis-0.1.10.dist-info → arthexis-0.1.11.dist-info}/METADATA +36 -26
- {arthexis-0.1.10.dist-info → arthexis-0.1.11.dist-info}/RECORD +42 -38
- config/context_processors.py +1 -0
- config/settings.py +24 -3
- config/urls.py +5 -4
- core/admin.py +184 -22
- core/apps.py +27 -2
- core/backends.py +38 -0
- core/environment.py +23 -5
- core/mailer.py +3 -1
- core/models.py +270 -31
- core/reference_utils.py +19 -8
- core/sigil_builder.py +7 -2
- core/sigil_resolver.py +35 -4
- core/system.py +247 -1
- core/temp_passwords.py +181 -0
- core/test_system_info.py +62 -2
- core/tests.py +105 -3
- core/user_data.py +51 -8
- core/views.py +245 -8
- nodes/admin.py +137 -2
- nodes/backends.py +21 -6
- nodes/dns.py +203 -0
- nodes/models.py +293 -7
- nodes/tests.py +312 -2
- nodes/views.py +14 -0
- ocpp/consumers.py +11 -8
- ocpp/models.py +3 -0
- ocpp/reference_utils.py +42 -0
- ocpp/test_rfid.py +169 -7
- ocpp/tests.py +30 -0
- ocpp/views.py +8 -0
- pages/admin.py +9 -1
- pages/context_processors.py +6 -6
- pages/defaults.py +14 -0
- pages/models.py +53 -14
- pages/tests.py +19 -4
- pages/urls.py +3 -0
- pages/views.py +86 -19
- {arthexis-0.1.10.dist-info → arthexis-0.1.11.dist-info}/WHEEL +0 -0
- {arthexis-0.1.10.dist-info → arthexis-0.1.11.dist-info}/licenses/LICENSE +0 -0
- {arthexis-0.1.10.dist-info → arthexis-0.1.11.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arthexis
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.11
|
|
4
4
|
Summary: Django-based MESH system
|
|
5
5
|
Author-email: "Rafael J. Guillén-Osorio" <tecnologia@gelectriic.com>
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -58,6 +58,7 @@ Requires-Dist: incremental==24.7.2
|
|
|
58
58
|
Requires-Dist: kombu==5.5.4
|
|
59
59
|
Requires-Dist: libipld==3.1.1
|
|
60
60
|
Requires-Dist: Markdown==3.8.2
|
|
61
|
+
Requires-Dist: mdx_truly_sane_lists==1.3
|
|
61
62
|
Requires-Dist: mcp==1.14.0
|
|
62
63
|
Requires-Dist: mfrc522==0.0.7; sys_platform == "linux"
|
|
63
64
|
Requires-Dist: outcome==1.3.0.post0
|
|
@@ -114,25 +115,34 @@ Dynamic: license-file
|
|
|
114
115
|
|
|
115
116
|
# Arthexis Constellation
|
|
116
117
|
|
|
117
|
-
[](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml)
|
|
118
|
+
[](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)
|
|
118
119
|
|
|
119
120
|
## Purpose
|
|
120
121
|
|
|
121
122
|
Arthexis Constellation is a [narrative-driven](https://en.wikipedia.org/wiki/Narrative) [Django](https://www.djangoproject.com/)-based [software suite](https://en.wikipedia.org/wiki/Software_suite) that centralizes tools for managing [electric vehicle charging infrastructure](https://en.wikipedia.org/wiki/Charging_station) and orchestrating [energy](https://en.wikipedia.org/wiki/Energy)-related [products](https://en.wikipedia.org/wiki/Product_(business)) and [services](https://en.wikipedia.org/wiki/Service_(economics)).
|
|
122
123
|
|
|
123
|
-
## Features
|
|
124
|
+
## Current Features
|
|
124
125
|
|
|
125
126
|
- Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system, handling:
|
|
126
|
-
- Lifecycle & sessions
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
- Lifecycle & sessions
|
|
128
|
+
- `BootNotification`
|
|
129
|
+
- `Heartbeat`
|
|
130
|
+
- `StatusNotification`
|
|
131
|
+
- `StartTransaction`
|
|
132
|
+
- `StopTransaction`
|
|
133
|
+
- Access & metering
|
|
134
|
+
- `Authorize`
|
|
135
|
+
- `MeterValues`
|
|
136
|
+
- Maintenance & firmware
|
|
137
|
+
- `DiagnosticsStatusNotification`
|
|
138
|
+
- `FirmwareStatusNotification`
|
|
129
139
|
- [API](https://en.wikipedia.org/wiki/API) integration with [Odoo](https://www.odoo.com/), syncing:
|
|
130
140
|
- Employee credentials via `res.users`
|
|
131
141
|
- Product catalog lookups via `product.product`
|
|
132
142
|
- Runs on [Windows 11](https://www.microsoft.com/windows/windows-11) and [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/)
|
|
133
143
|
- Tested for the [Raspberry Pi 4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
|
|
134
144
|
|
|
135
|
-
Project under active development.
|
|
145
|
+
Project under rapid active and open development.
|
|
136
146
|
|
|
137
147
|
## Role Architecture
|
|
138
148
|
|
|
@@ -174,28 +184,28 @@ Arthexis Constellation ships in four node roles tailored to different deployment
|
|
|
174
184
|
### 2. Start and stop
|
|
175
185
|
Terminal nodes can start directly with the scripts below without installing; Control, Satellite, and Constellation roles require installation first. Both approaches listen on [`http://localhost:8000/`](http://localhost:8000/) by default.
|
|
176
186
|
|
|
177
|
-
**[VS Code](https://code.visualstudio.com/)**
|
|
178
|
-
- Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
|
|
179
|
-
- Select the **Run Server** (or **Debug Server**) configuration.
|
|
180
|
-
- Press the green start button. Stop the server with the red square button (`Shift+F5`).
|
|
187
|
+
- **[VS Code](https://code.visualstudio.com/)**
|
|
188
|
+
- Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
|
|
189
|
+
- Select the **Run Server** (or **Debug Server**) configuration.
|
|
190
|
+
- Press the green start button. Stop the server with the red square button (`Shift+F5`).
|
|
181
191
|
|
|
182
|
-
**[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
|
|
183
|
-
- Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
|
|
184
|
-
- Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
|
|
192
|
+
- **[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
|
|
193
|
+
- Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
|
|
194
|
+
- Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
|
|
185
195
|
|
|
186
196
|
### 3. Install and upgrade
|
|
187
|
-
**Linux:**
|
|
188
|
-
-
|
|
189
|
-
- `--
|
|
190
|
-
- `--
|
|
191
|
-
- `--
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
Upgrade with [`./upgrade.sh`](upgrade.sh).
|
|
195
|
-
|
|
196
|
-
**Windows:**
|
|
197
|
-
- Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
|
|
198
|
-
- Installation is not required to start in Terminal mode (the default).
|
|
197
|
+
- **Linux:**
|
|
198
|
+
- Run [`./install.sh`](install.sh) with a node role flag:
|
|
199
|
+
- `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
|
|
200
|
+
- `--control` – prepares the single-device testing appliance.
|
|
201
|
+
- `--satellite` – configures the edge data acquisition node.
|
|
202
|
+
- `--constellation` – enables the multi-user orchestration stack.
|
|
203
|
+
- Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
|
|
204
|
+
- Upgrade with [`./upgrade.sh`](upgrade.sh).
|
|
205
|
+
|
|
206
|
+
- **Windows:**
|
|
207
|
+
- Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
|
|
208
|
+
- Installation is not required to start in Terminal mode (the default).
|
|
199
209
|
|
|
200
210
|
### 4. Administration
|
|
201
211
|
Visit [`http://localhost:8000/admin/`](http://localhost:8000/admin/) for the [Django admin](https://docs.djangoproject.com/en/stable/ref/contrib/admin/) and [`http://localhost:8000/admindocs/`](http://localhost:8000/admindocs/) for the [admindocs](https://docs.djangoproject.com/en/stable/ref/contrib/admin/admindocs/). Use `--port` with the start scripts or installer when you need to expose a different port.
|
|
@@ -1,95 +1,99 @@
|
|
|
1
|
-
arthexis-0.1.
|
|
1
|
+
arthexis-0.1.11.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
|
|
2
2
|
config/__init__.py,sha256=8_b7rx_-Xcuzu3Z7mSR94q3PAhjyYqLFQi3IOEz6hcI,108
|
|
3
3
|
config/active_app.py,sha256=MET_G7oHL7GkoSo3VkkMzymM-PwsSZazMLZxpgjFLTo,388
|
|
4
4
|
config/asgi.py,sha256=n09URedOmQ_59II3UCl3iodGSDWOuN_A8DFyfLjuylA,803
|
|
5
5
|
config/auth_app.py,sha256=2NkC_iYQxnpbv0gYxW4xp5DgQtdkVLpa-JzAF-638ZE,205
|
|
6
6
|
config/celery.py,sha256=qRTHgNYfT2OyIz4cW49YiiKgVgzLs2mSfAEQBgso0M4,743
|
|
7
|
-
config/context_processors.py,sha256=
|
|
7
|
+
config/context_processors.py,sha256=bjLSqbz7Qw6knPosIc4KNFEl5HsJHOe23htoNsul40E,2404
|
|
8
8
|
config/horologia_app.py,sha256=u1hTYcEmIqh82Gt5YNPvR5ta2MnVatELvD9ByFrCH1A,194
|
|
9
9
|
config/loadenv.py,sha256=bhFbHTbRJSkSwrFk3UInKEKQ8ZY-poatOGi7rC57YAI,298
|
|
10
10
|
config/logging.py,sha256=334jADN4dM5GNHaCWlYPOKYa5BhfxbsuejH_QDALG6g,1793
|
|
11
11
|
config/middleware.py,sha256=EvraDumepnKwCDswHGXb1mK7vud_dEEoZ4eh0IQ7fhQ,744
|
|
12
12
|
config/offline.py,sha256=mhQjCUzdOwSzZ6oLgPDJR48xaPIDzOi34ARUEz43seE,1431
|
|
13
|
-
config/settings.py,sha256=
|
|
14
|
-
config/urls.py,sha256
|
|
13
|
+
config/settings.py,sha256=pJzArbxvM6Imyn4gs1YRn1WP3GaZThXFJM8ZxAAmNzg,22548
|
|
14
|
+
config/urls.py,sha256=MmbES50lTHyMZ6risgXAGfevncN7j4HC74jR4PX_5xY,5228
|
|
15
15
|
config/wsgi.py,sha256=Fu-ONO2SgYeU6rhmy909P-uLX-n8ALJQObdm9MHPS-k,450
|
|
16
16
|
core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
core/admin.py,sha256=
|
|
17
|
+
core/admin.py,sha256=MKubxItiTTtEOo2Lh8CqUvQ3KLBa80e5C5Y0gsMqhe4,93074
|
|
18
18
|
core/admin_history.py,sha256=NIDWkosJoHMaucBvUjq8VmmL-0e8ngJ4l4XA89d4jwQ,1833
|
|
19
19
|
core/admindocs.py,sha256=GufdugiNEG87xGSDYVq4CBMhGRubsQCzgz-FqDIqzpM,5367
|
|
20
|
-
core/apps.py,sha256=
|
|
20
|
+
core/apps.py,sha256=qOKq5hB4FSRb85I3Sv3OjZzhVkn7xONix65r1qMg3HM,10312
|
|
21
21
|
core/auto_upgrade.py,sha256=BkoE7rJuYAmwoMux22NqujWZYjYXtN40GBloC0sNMY4,1799
|
|
22
|
-
core/backends.py,sha256=
|
|
22
|
+
core/backends.py,sha256=VsZZwskII6QLnxP6Ff593V7o9lqXXfN2_bIfZXrvjyI,8222
|
|
23
23
|
core/entity.py,sha256=dkPywTVk981fV8bOEoZw-1SMrdh8T0jVAUZnRxg3dDg,4505
|
|
24
|
-
core/environment.py,sha256=
|
|
24
|
+
core/environment.py,sha256=egNX3vP9xRJt0dqxNZFXi25ZMhe3IZH3Vjne1_k7hxo,1645
|
|
25
25
|
core/fields.py,sha256=4nJ_tngso8NHs6HBl8nn5PWvbcOiuAgkoM6hixrFm64,5580
|
|
26
26
|
core/github_helper.py,sha256=k9LmxL0Ec5MzFwZsbMpWMMJ-5tGMe-5yRoI8V0sbFsw,682
|
|
27
27
|
core/github_issues.py,sha256=LKqt-Ilx5TRYnx2LXttc54Nvuh3_1VRP0u_M3whe09c,4963
|
|
28
28
|
core/lcd_screen.py,sha256=mkKtIJjHGDLaV4t80L-JScsZXbLhlYUDknAcvV9Ijr0,2651
|
|
29
29
|
core/liveupdate.py,sha256=kTgbE2gnU3PPIV-88Bw2swSl1aGp6stSdBYqBFbLvx0,716
|
|
30
30
|
core/log_paths.py,sha256=6UXYk6QIUmRO3ecFaFH3dgJ_pf4C_wUN6b0JqUhLVBY,3045
|
|
31
|
-
core/mailer.py,sha256=
|
|
31
|
+
core/mailer.py,sha256=OF3UgrTVs2St60tQG3ORV7_N6AWK6EtuB04KQXDop_Q,2829
|
|
32
32
|
core/middleware.py,sha256=a4XL0pld4YiG-vanHrzYbJNHv64s75lvmG9inoG1ln0,3479
|
|
33
|
-
core/models.py,sha256=
|
|
33
|
+
core/models.py,sha256=ZpovGr3Tnyayu0f9Id2F0uYtnVhHo90flMFH9ixjubQ,90459
|
|
34
34
|
core/notifications.py,sha256=YtNDGxNveZ6t3tlMXJ7wIaZZTWIZfOKy6vN9mXkeYnA,4021
|
|
35
35
|
core/public_wifi.py,sha256=A08IPJqcdgUKSWbktyqsV4ol8C0uxDxZy1s1ECuPdBE,6526
|
|
36
|
-
core/reference_utils.py,sha256=
|
|
36
|
+
core/reference_utils.py,sha256=sRkwL68c16neg8EBMeZTVGjXQvVhB1zQqrd3EIsb4nA,3735
|
|
37
37
|
core/release.py,sha256=thtgbfAnxHlOODM8xUVETgY5aAIbddWan0wW9lKmtQI,11064
|
|
38
|
-
core/sigil_builder.py,sha256=
|
|
38
|
+
core/sigil_builder.py,sha256=63KSTh7AohG0szr_amBov0zoZuTE8bWqmgsEfPsZHCg,4992
|
|
39
39
|
core/sigil_context.py,sha256=8xrGiB2L1dFfSTrVLsFPLKfkhRwCXXZ0-EXvZdPeTMU,459
|
|
40
|
-
core/sigil_resolver.py,sha256=
|
|
41
|
-
core/system.py,sha256=
|
|
40
|
+
core/sigil_resolver.py,sha256=PAGwF3ugsqN85tKyIvT0YCDCM2MU_Mct2mCJz8XY1s4,11413
|
|
41
|
+
core/system.py,sha256=i-35lmzW6JxfwDZSUuDRT0cwPjqbIkWEYR0WVvqfADM,15080
|
|
42
42
|
core/tasks.py,sha256=hwowcVsbwME-75KN90D2r0kX_YPMZEVevOrrxIxpM34,10595
|
|
43
|
-
core/
|
|
44
|
-
core/
|
|
43
|
+
core/temp_passwords.py,sha256=Kp4C-y1Hh4GeV1vSOCw3ZyIjcRMts186lUgtEkd3rxY,5452
|
|
44
|
+
core/test_system_info.py,sha256=sHCuo-qyw0BKacbGXFhTWxkuPgywdMGiQ_6YK022n-E,4803
|
|
45
|
+
core/tests.py,sha256=A_85lR9Qf5TE9xuCHGuM3l0_0SrH8F1qsi6sf-ip8q4,58690
|
|
45
46
|
core/tests_liveupdate.py,sha256=D1o2gPopnK7wDCeDQlJ-tfitWh4umZQFRxSTCFY-puc,527
|
|
46
47
|
core/urls.py,sha256=x-LNCxCgrLINdBsJTUUcAuMS5EK5Sh1ybvsVuUnJfLw,436
|
|
47
|
-
core/user_data.py,sha256=
|
|
48
|
-
core/views.py,sha256=
|
|
48
|
+
core/user_data.py,sha256=kOzcWJcR-d05E7QYoNzKqQSm9bnKJvtG6zq0zRf-tDI,21371
|
|
49
|
+
core/views.py,sha256=xnwgWVv3q6SnpYZ4ItIrILmjtD5bKWAsjtUYQ-5vnd0,44773
|
|
49
50
|
core/widgets.py,sha256=ihah_-NtFJ3oRCS3TdcT6iHCUTlg1tUULJsVCu05C0o,1379
|
|
50
51
|
core/workgroup_urls.py,sha256=2bC8mOMkxIj04WsNis0Td6AmmJFr6z27Ol5epIvhO28,424
|
|
51
52
|
core/workgroup_views.py,sha256=pFJ4PIRN3WWpRyombpWDKKteYQYoI7lu7ddSEKojD7I,2983
|
|
52
53
|
nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
54
|
nodes/actions.py,sha256=HHnwByTBc3guOORvrKOuvUFID-_BpBq6OENE_PDgk9s,2335
|
|
54
|
-
nodes/admin.py,sha256=
|
|
55
|
+
nodes/admin.py,sha256=40YXBolvHjhzZRJM1o4svnIyghMI9KWUDlS-PtKheTc,21483
|
|
55
56
|
nodes/apps.py,sha256=KijGydsQBS-8Q8uBc0ahDZXSSCMzP3tQcYIEigJxdCE,2077
|
|
56
|
-
nodes/backends.py,sha256
|
|
57
|
+
nodes/backends.py,sha256=-g7PIbGtIn_3kGoi2w_mJ6zVjvUKTRRWhHABPnnf29g,6081
|
|
58
|
+
nodes/dns.py,sha256=X8PML9rPR7i6NwCSqqxnlO1qpHHRo8uA-XePDTQZYrY,7251
|
|
57
59
|
nodes/lcd.py,sha256=7MqS3jV_De2ysSmTtXQfYTWaxdfbmm6YfNdb_7qIVZc,5923
|
|
58
|
-
nodes/models.py,sha256=
|
|
60
|
+
nodes/models.py,sha256=D-MPUe672JaF5NUU-ASAes860hJmiHeU5VHUD03Pe-c,46986
|
|
59
61
|
nodes/tasks.py,sha256=jorbN4h0PqWMBRMFdkGgJtvG8GPFwGr5Hxlm5In3EeY,1568
|
|
60
|
-
nodes/tests.py,sha256=
|
|
62
|
+
nodes/tests.py,sha256=4lKlM_uHYKirtLgOne4ygwEDowi2PPl2ZvEtwJzUfhI,86073
|
|
61
63
|
nodes/urls.py,sha256=20yZDZf4DNgIZ9hQWsUzjp8k5Fryg9ukk761_KGQt9k,548
|
|
62
64
|
nodes/utils.py,sha256=B9BD3bKBkwDjIqyp0pyjnKQQlRbGRVQndfoaMEJoNDc,2815
|
|
63
|
-
nodes/views.py,sha256=
|
|
65
|
+
nodes/views.py,sha256=lrT90AsOXeqpvkZnlCPv78mXILGJ8FwJzgsjU-wAZ4Y,15611
|
|
64
66
|
ocpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
67
|
ocpp/admin.py,sha256=Rw0PinweVSaBjIQIcgj_cgfalNRBHcrAh3JInx8Hn7A,17129
|
|
66
68
|
ocpp/apps.py,sha256=mCZ5Z0ei7z7c62luIcIhbEuwL1N4czQFSToOkGvRmms,867
|
|
67
|
-
ocpp/consumers.py,sha256=
|
|
69
|
+
ocpp/consumers.py,sha256=0kLqiDAt0rsC62s8lmS6mW2Oj-LZuzjs0Pz4ci6L4oQ,36577
|
|
68
70
|
ocpp/evcs.py,sha256=O53rCHdxKcgPsj7o57rDiNHTVvEii3DTtQ3djWFTohw,34065
|
|
69
|
-
ocpp/models.py,sha256=
|
|
71
|
+
ocpp/models.py,sha256=46BYGGX4AhbBigXLV3PWLKP043JF96Wolho1q-ZPoa8,23929
|
|
72
|
+
ocpp/reference_utils.py,sha256=sTgbXfmz00f23LBBkpO-sBGoJf1qaEshHeSofLReYCc,1114
|
|
70
73
|
ocpp/routing.py,sha256=g9vPnLw-D1N8L_mW0_oCe-nTDibjC0Et-SFxe8NFAOI,308
|
|
71
74
|
ocpp/simulator.py,sha256=es6SJNzKUwLwrLy-zDdRu__n34V2RZSQRb8SeZHh4Fw,15636
|
|
72
75
|
ocpp/store.py,sha256=FyyZW2YKTWleuNdHTo_RsUO2InZZJhvMYyuZmLgQZe4,14051
|
|
73
76
|
ocpp/tasks.py,sha256=cOcJBshckFKs8GnACvmYZUBG116amtLRAzEP-JNqlZ0,905
|
|
74
77
|
ocpp/test_export_import.py,sha256=TK1__E4K5WrLYPIx-1iJWoIhuRCnOtXc2cYEpGigd3U,4660
|
|
75
|
-
ocpp/test_rfid.py,sha256=
|
|
76
|
-
ocpp/tests.py,sha256
|
|
78
|
+
ocpp/test_rfid.py,sha256=hX8VZ2HRyBGjtQLClZ1gy28dOj25RT2r9eK3l9XkmJg,25877
|
|
79
|
+
ocpp/tests.py,sha256=CcTn-bRDsb78NbK2hbH66TnlUwOno8y7ug0u8bgIz9k,107230
|
|
77
80
|
ocpp/transactions_io.py,sha256=OvRynP3DeC9ZpHD3Ez-0YPNPJXFcdSOSKg0nRrwzBJ0,6507
|
|
78
81
|
ocpp/urls.py,sha256=jl6AQLtmLMvrNXP3dQKgPe9Kvaul4oaYd80DskpzVBc,1750
|
|
79
|
-
ocpp/views.py,sha256=
|
|
82
|
+
ocpp/views.py,sha256=3E6hJ0Tqr-_KRjvB7cunEsjtNI8Y9XzktPDhaAlIM7o,37166
|
|
80
83
|
pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
-
pages/admin.py,sha256=
|
|
84
|
+
pages/admin.py,sha256=JcwBwtQD8E2XKhPpt6bfznW3cU18XZyWvp5B8Zlr0eQ,12772
|
|
82
85
|
pages/apps.py,sha256=mfCxegmnRqKcszyEwpQhZpW9JWOuEYdVereU_w49BXg,298
|
|
83
86
|
pages/checks.py,sha256=an-MlMCIG-FSKmdgOhYV0VOoB_wDQD7dxKD03Hjrzts,1567
|
|
84
|
-
pages/context_processors.py,sha256=
|
|
87
|
+
pages/context_processors.py,sha256=iNSTFYFJsrhj0DjsB3ixVNDZw7nrowlnZAcCDyR4NS4,3697
|
|
88
|
+
pages/defaults.py,sha256=rF_V5oD5JQX1tMxdMs_rCsS21Vn_NZpTESahzLNTPws,595
|
|
85
89
|
pages/forms.py,sha256=NuG7ONP1HYY6O5gRoQaRSwSRchcSonRm3rulsqGSqvY,5081
|
|
86
90
|
pages/middleware.py,sha256=fUdAscLa6h2EqJTFUjhVijfSf82gBfm6XUZTVygWAnk,5227
|
|
87
|
-
pages/models.py,sha256=
|
|
88
|
-
pages/tests.py,sha256=
|
|
89
|
-
pages/urls.py,sha256=
|
|
91
|
+
pages/models.py,sha256=mSlw5JTgh2s_SsFzrNgq48BOhX8uc6mjZFy-kYXUjMo,9955
|
|
92
|
+
pages/tests.py,sha256=6WXtb2p301tqXPT_327Y8Zw5uAsqp5hREh6nF8wWa-o,74552
|
|
93
|
+
pages/urls.py,sha256=hvbdrMDc735CFwCbCU96t80IY9jDpMTpI0zQhoaxL0M,981
|
|
90
94
|
pages/utils.py,sha256=7kik1W0Gk6SFxYGhg6shfI2W9Xdcv1sCpkRCQ883a88,311
|
|
91
|
-
pages/views.py,sha256=
|
|
92
|
-
arthexis-0.1.
|
|
93
|
-
arthexis-0.1.
|
|
94
|
-
arthexis-0.1.
|
|
95
|
-
arthexis-0.1.
|
|
95
|
+
pages/views.py,sha256=X_ZoJH2DEQp8xUZMtZotTxnslABwsmFKQzYfWopktZM,41135
|
|
96
|
+
arthexis-0.1.11.dist-info/METADATA,sha256=uA-HTbP7vjQzwm9FtJjxgl28g8MszSr7ntnxH9MyVlM,10175
|
|
97
|
+
arthexis-0.1.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
98
|
+
arthexis-0.1.11.dist-info/top_level.txt,sha256=J2a2q8_BWrCZ8H2WFUNMBfO2jz8j2gax6zZh-_1QDac,29
|
|
99
|
+
arthexis-0.1.11.dist-info/RECORD,,
|
config/context_processors.py
CHANGED
|
@@ -64,5 +64,6 @@ def site_and_node(request: HttpRequest):
|
|
|
64
64
|
"badge_admin_site_name": site_name or (site.domain if site else ""),
|
|
65
65
|
"badge_site_color": site_color,
|
|
66
66
|
"badge_node_color": node_color,
|
|
67
|
+
"current_site_domain": site.domain if site else host,
|
|
67
68
|
"TIME_ZONE": settings.TIME_ZONE,
|
|
68
69
|
}
|
config/settings.py
CHANGED
|
@@ -122,13 +122,27 @@ SECRET_KEY = _load_secret_key()
|
|
|
122
122
|
|
|
123
123
|
# SECURITY WARNING: don't run with debug turned on in production!
|
|
124
124
|
|
|
125
|
-
#
|
|
125
|
+
# Determine the current node role for role-specific settings while leaving
|
|
126
|
+
# DEBUG control to the environment.
|
|
126
127
|
NODE_ROLE = os.environ.get("NODE_ROLE")
|
|
127
128
|
if NODE_ROLE is None:
|
|
128
129
|
role_lock = BASE_DIR / "locks" / "role.lck"
|
|
129
130
|
NODE_ROLE = role_lock.read_text().strip() if role_lock.exists() else "Terminal"
|
|
130
131
|
|
|
131
|
-
|
|
132
|
+
def _env_bool(name: str, default: bool) -> bool:
|
|
133
|
+
value = os.environ.get(name)
|
|
134
|
+
if value is None:
|
|
135
|
+
return default
|
|
136
|
+
|
|
137
|
+
normalized = value.strip().lower()
|
|
138
|
+
if normalized in {"1", "true", "yes", "on"}:
|
|
139
|
+
return True
|
|
140
|
+
if normalized in {"0", "false", "no", "off"}:
|
|
141
|
+
return False
|
|
142
|
+
return default
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
DEBUG = _env_bool("DEBUG", False)
|
|
132
146
|
|
|
133
147
|
ALLOWED_HOSTS = [
|
|
134
148
|
"localhost",
|
|
@@ -383,7 +397,6 @@ LOCAL_APPS = [
|
|
|
383
397
|
"ocpp",
|
|
384
398
|
"awg",
|
|
385
399
|
"pages",
|
|
386
|
-
"man",
|
|
387
400
|
"teams",
|
|
388
401
|
]
|
|
389
402
|
|
|
@@ -519,6 +532,7 @@ AUTH_USER_MODEL = "core.User"
|
|
|
519
532
|
|
|
520
533
|
# Enable RFID authentication backend and restrict default admin login to localhost
|
|
521
534
|
AUTHENTICATION_BACKENDS = [
|
|
535
|
+
"core.backends.TempPasswordBackend",
|
|
522
536
|
"core.backends.LocalhostAdminBackend",
|
|
523
537
|
"core.backends.TOTPBackend",
|
|
524
538
|
"core.backends.RFIDBackend",
|
|
@@ -624,6 +638,13 @@ USE_TZ = True
|
|
|
624
638
|
STATIC_URL = "/static/"
|
|
625
639
|
STATIC_ROOT = BASE_DIR / "static"
|
|
626
640
|
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
|
|
641
|
+
|
|
642
|
+
# Allow development and freshly-updated environments to serve assets which have
|
|
643
|
+
# not yet been collected into ``STATIC_ROOT``. Without this setting WhiteNoise
|
|
644
|
+
# only looks for files inside ``STATIC_ROOT`` and dashboards like the public
|
|
645
|
+
# traffic chart fail to load their JavaScript dependencies.
|
|
646
|
+
WHITENOISE_USE_FINDERS = True
|
|
647
|
+
WHITENOISE_AUTOREFRESH = DEBUG
|
|
627
648
|
MEDIA_URL = "/media/"
|
|
628
649
|
MEDIA_ROOT = BASE_DIR / "media"
|
|
629
650
|
|
config/urls.py
CHANGED
|
@@ -12,6 +12,7 @@ from pathlib import Path
|
|
|
12
12
|
from django.apps import apps
|
|
13
13
|
from django.conf import settings
|
|
14
14
|
from django.conf.urls.static import static
|
|
15
|
+
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
|
15
16
|
from django.contrib import admin
|
|
16
17
|
from django.urls import include, path
|
|
17
18
|
import teams.admin # noqa: F401
|
|
@@ -25,7 +26,6 @@ from core.admindocs import (
|
|
|
25
26
|
ModelGraphIndexView,
|
|
26
27
|
OrderedModelIndexView,
|
|
27
28
|
)
|
|
28
|
-
from man import views as man_views
|
|
29
29
|
from pages import views as pages_views
|
|
30
30
|
|
|
31
31
|
admin.site.site_header = _("Constellation")
|
|
@@ -72,17 +72,17 @@ def autodiscovered_urlpatterns():
|
|
|
72
72
|
urlpatterns = [
|
|
73
73
|
path(
|
|
74
74
|
"admin/doc/manuals/",
|
|
75
|
-
|
|
75
|
+
pages_views.admin_manual_list,
|
|
76
76
|
name="django-admindocs-manuals",
|
|
77
77
|
),
|
|
78
78
|
path(
|
|
79
79
|
"admin/doc/manuals/<slug:slug>/",
|
|
80
|
-
|
|
80
|
+
pages_views.admin_manual_detail,
|
|
81
81
|
name="django-admindocs-manual-detail",
|
|
82
82
|
),
|
|
83
83
|
path(
|
|
84
84
|
"admin/doc/manuals/<slug:slug>/pdf/",
|
|
85
|
-
|
|
85
|
+
pages_views.manual_pdf,
|
|
86
86
|
name="django-admindocs-manual-pdf",
|
|
87
87
|
),
|
|
88
88
|
path(
|
|
@@ -162,4 +162,5 @@ if settings.DEBUG:
|
|
|
162
162
|
)
|
|
163
163
|
] + urlpatterns
|
|
164
164
|
|
|
165
|
+
urlpatterns += staticfiles_urlpatterns()
|
|
165
166
|
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|