arthexis 0.1.23__py3-none-any.whl → 0.1.25__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arthexis
3
- Version: 0.1.23
3
+ Version: 0.1.25
4
4
  Summary: Power & Energy Infrastructure
5
5
  Author-email: "Rafael J. Guillén-Osorio" <tecnologia@gelectriic.com>
6
6
  License-Expression: GPL-3.0-only
@@ -15,7 +15,7 @@ Requires-Dist: amqp==5.3.1
15
15
  Requires-Dist: annotated-types==0.7.0
16
16
  Requires-Dist: anyio==4.9.0
17
17
  Requires-Dist: asgiref==3.10.0
18
- Requires-Dist: atproto==0.0.62
18
+ Requires-Dist: atproto<0.1.0,>=0.0.63
19
19
  Requires-Dist: attrs==25.3.0
20
20
  Requires-Dist: autobahn==24.4.2
21
21
  Requires-Dist: Automat==25.4.16
@@ -48,6 +48,7 @@ Requires-Dist: django-timezone-field==7.1
48
48
  Requires-Dist: dnspython==2.7.0
49
49
  Requires-Dist: docutils==0.22.2
50
50
  Requires-Dist: gpiozero==2.0.1; sys_platform == "linux"
51
+ Requires-Dist: graphene-django==3.2.2
51
52
  Requires-Dist: graphviz==0.21
52
53
  Requires-Dist: h11==0.16.0
53
54
  Requires-Dist: httpcore==1.0.9
@@ -70,8 +71,8 @@ Requires-Dist: psycopg-binary==3.2.12
70
71
  Requires-Dist: pyasn1==0.6.1
71
72
  Requires-Dist: pyasn1_modules==0.4.2
72
73
  Requires-Dist: pycparser==2.22
73
- Requires-Dist: pydantic==2.11.7
74
- Requires-Dist: pydantic_core==2.33.2
74
+ Requires-Dist: pydantic==2.12.3
75
+ Requires-Dist: pydantic_core==2.41.4
75
76
  Requires-Dist: pyOpenSSL==25.1.0
76
77
  Requires-Dist: pyperclip==1.11.0
77
78
  Requires-Dist: PySocks==1.7.1
@@ -106,7 +107,7 @@ Requires-Dist: vine==5.1.0
106
107
  Requires-Dist: wcwidth==0.2.14
107
108
  Requires-Dist: webencodings==0.5.1
108
109
  Requires-Dist: websocket-client==1.8.0
109
- Requires-Dist: websockets==13.1
110
+ Requires-Dist: websockets==15.0.1
110
111
  Requires-Dist: whitenoise==6.11.0
111
112
  Requires-Dist: plyer==2.1.0; sys_platform == "win32"
112
113
  Requires-Dist: wsproto==1.2.0
@@ -124,19 +125,39 @@ Arthexis Constellation is a [narrative-driven](https://en.wikipedia.org/wiki/Nar
124
125
 
125
126
  ## Current Features
126
127
 
127
- - Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system, handling:
128
- - Lifecycle & sessions
129
- - `BootNotification`
130
- - `Heartbeat`
131
- - `StatusNotification`
132
- - `StartTransaction`
133
- - `StopTransaction`
134
- - Access & metering
135
- - `Authorize`
136
- - `MeterValues`
137
- - Maintenance & firmware
138
- - `DiagnosticsStatusNotification`
139
- - `FirmwareStatusNotification`
128
+ - Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system. Supported actions are summarized below.
129
+
130
+ **Charge point → CSMS**
131
+
132
+ | Action | What we do |
133
+ | --- | --- |
134
+ | `Authorize` | Validate RFID or token authorization requests before a session starts. |
135
+ | `BootNotification` | Register the charge point and update identity, firmware, and status details. |
136
+ | `DataTransfer` | Accept vendor-specific payloads and record the results. |
137
+ | `DiagnosticsStatusNotification` | Track the progress of diagnostic uploads kicked off from the back office. |
138
+ | `FirmwareStatusNotification` | Track firmware update lifecycle events from charge points. |
139
+ | `Heartbeat` | Keep the websocket session alive and update last-seen timestamps. |
140
+ | `MeterValues` | Persist periodic energy and power readings while a transaction is active. |
141
+ | `StartTransaction` | Create charging sessions with initial meter values and identification data. |
142
+ | `StatusNotification` | Reflect connector availability and fault states in real time. |
143
+ | `StopTransaction` | Close charging sessions, capturing closing meter values and stop reasons. |
144
+
145
+ **CSMS → Charge point**
146
+
147
+ | Action | What we do |
148
+ | --- | --- |
149
+ | `ChangeAvailability` | Switch connectors or the whole station between operative and inoperative states. |
150
+ | `DataTransfer` | Send vendor-specific commands and log the charge point response. |
151
+ | `GetConfiguration` | Poll the device for the current values of tracked configuration keys. |
152
+ | `RemoteStartTransaction` | Initiate a charging session remotely for an identified customer or token. |
153
+ | `RemoteStopTransaction` | Terminate active charging sessions from the control center. |
154
+ | `ReserveNow` | Reserve connectors for upcoming sessions with automatic connector selection and confirmation tracking. |
155
+ | `Reset` | Request a soft or hard reboot to recover from faults. |
156
+ | `TriggerMessage` | Ask the device to send an immediate update (for example status or diagnostics). |
157
+
158
+ **OCPP 1.6 roadmap.** The following catalogue actions are in our backlog: `CancelReservation`, `ChangeConfiguration`, `ClearCache`, `ClearChargingProfile`, `GetCompositeSchedule`, `GetDiagnostics`, `GetLocalListVersion`, `SendLocalList`, `SetChargingProfile`, `UnlockConnector`, `UpdateFirmware`.
159
+
160
+ - Charge point reservations with automated connector assignment, energy account and RFID linkage, and EVCS confirmation tracking.
140
161
  - [API](https://en.wikipedia.org/wiki/API) integration with [Odoo](https://www.odoo.com/), syncing:
141
162
  - Employee credentials via `res.users`
142
163
  - Product catalog lookups via `product.product`
@@ -1,4 +1,4 @@
1
- arthexis-0.1.23.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
1
+ arthexis-0.1.25.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
2
2
  config/__init__.py,sha256=AwpOX7il-DAOmkdJ5dVfVJ3CWWebn1lHyQNmkw1EkDw,103
3
3
  config/active_app.py,sha256=KJqYh-o91nPQjVXPEdbiJHzsI6cN9IZsBZ9O3iZ6Hyc,373
4
4
  config/asgi.py,sha256=Z2HjWrxOxVU9BXcqS7dMEfOGJC48H-WPwFwokRdermY,774
@@ -10,17 +10,17 @@ config/loadenv.py,sha256=CjXx-wBaTt1wixub4GJ5CMSMFqtiK5JURc7cPXpqO7s,287
10
10
  config/logging.py,sha256=1cIbPgRshHuMKnVEEH0jKpRAlJSpewvLFbYDz7sCBG4,2104
11
11
  config/middleware.py,sha256=zF8Cma0n5G8NNdh2LVeNJi7Hgl1G4mF9msRE2eRi1RU,2328
12
12
  config/offline.py,sha256=X-yDcyoI4C44Y27lpkUwszY_09GwwFfazEsthKJpQ70,1382
13
- config/settings.py,sha256=b27y7mmQMJmcIFuceNxrX-9yO_R1GqbIf_wFdZNvTWo,20789
13
+ config/settings.py,sha256=1vKOC0VwPOMXXnpUr4OIDRS1C_l_PXY-yyiDo7jmflM,20970
14
14
  config/settings_helpers.py,sha256=0BdBciUHIkwsWa0vV_RKAd4wDuEzgE7G-42XYiES4YQ,3127
15
- config/urls.py,sha256=979WyL05v7nb-Lz_3Qf6Z2QzGtWpXADbIKZ28Zm12ts,5535
15
+ config/urls.py,sha256=wiSmVWpLhPJgis4BPDoeRtGmuOM5A9TIZApf5iadE5k,5642
16
16
  config/wsgi.py,sha256=zU_mKlya6hejQ21PxKacTui3dUWd4ca_-YJNSYAoMX0,433
17
17
  core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- core/admin.py,sha256=DhDHDYQM2Za6FbgWoJs31wsVi6zUo0GS0CawOgONOPw,149468
18
+ core/admin.py,sha256=Mum2MQsVOnTtUTuRoy8wfC7POJGXODMdoZoDWhcbgoM,145179
19
19
  core/admin_history.py,sha256=XZ4b0ryufIka-xcwboK3DzmOL-INSx5Y2fJO-aJdV70,1783
20
20
  core/admindocs.py,sha256=ycD0bJ_VE6rTGf9ebXTiKdYkD8Y8hD2oQ4HxxoBURCM,6756
21
21
  core/apps.py,sha256=S6fySxtxUzfvz8FI9dii0KI4wSyLhh5API_oeERLIsc,14084
22
22
  core/auto_upgrade.py,sha256=1EffHHFylgydWdZM_id6CppV0QqBtdNw7cwBYVdbNdk,1715
23
- core/backends.py,sha256=okrNW5Z-zDhJB9Al529aTOHGsTLACeQ6v_hMl4cyfnA,10704
23
+ core/backends.py,sha256=O6QzNsX3OXi0QeIO7PCXI57VLz7HoY72ouBGTpzsSPM,10793
24
24
  core/changelog.py,sha256=SRn37i5N-qb-RYV4Gpu9fg7Kv8gu4TH8ZwEmDRgN-Vo,12594
25
25
  core/entity.py,sha256=o4VteOXePGEsIWJFZ3fpq3DZsdWr3hpQ9A6kFbKosSE,4844
26
26
  core/environment.py,sha256=4beGOYE1BC8q9vBmTLZzFo75nj_3tBekzMqhsNEZVbU,1653
@@ -34,7 +34,7 @@ core/liveupdate.py,sha256=22m0ueQ10-6b-9pQJHY0_5WRYA98fysXKEXOWzIr550,691
34
34
  core/log_paths.py,sha256=lxvgXPgJtVNZ-kYrqV8VFle4GFQrSxG-yRTglqvclmU,3318
35
35
  core/mailer.py,sha256=JpW0RnD9uZ4O-wvlqeW7CMw95IFeCSkdvbankJDwHq0,2886
36
36
  core/middleware.py,sha256=j19K9SX-Emkv7BDDtAacR9g6RWsxhKHwCc8w23JFvMM,3388
37
- core/models.py,sha256=A2QOFW6mDp2aDDOkZh9GiAGxGfjzrWD4gdDEaM60fCU,159883
37
+ core/models.py,sha256=4fZTlc1ZaVFljnlNoE9e6QPvVfOrSdTjZaYATJUTSBw,174371
38
38
  core/notifications.py,sha256=jNLSuSCrhb8x5cDu_APeDlkrmbMejufk5eJOhssAC4I,3917
39
39
  core/public_wifi.py,sha256=yydLgxOo9DmJJbM4X_23wGR3gxL3YzHno54v9GssuFA,7213
40
40
  core/reference_utils.py,sha256=tffCoyE1w4_SmYzXVWOsW8aR_ZVVTSPzrGhBq8K2xzA,3631
@@ -43,51 +43,52 @@ core/rfid_import_export.py,sha256=petyhPvL0WUpehc6uGUDUhjYQ9AVvc6O49zuhDs6YFw,35
43
43
  core/sigil_builder.py,sha256=nMuhYlw3j3LosrK85Q0pYsMcfGWCmrmdnv8UG7GTq_o,4856
44
44
  core/sigil_context.py,sha256=GCzjfM6fcVvBtSbVNfmE6sx3HU8QnxnXrCIytnNpQzM,439
45
45
  core/sigil_resolver.py,sha256=rCsypuX-0oWNfKyM1T9ZLWHY0Ezwhtk4VmI0L3krnsE,11098
46
- core/system.py,sha256=6ndxYDPswKkC3ySTwbgXzH0CdQYCZJytfA-99smyv_Q,42249
47
- core/tasks.py,sha256=d0MQP5fmn5pA2VCFGxDMEX0xppDIIh8IAzPfGdnk8J4,12340
46
+ core/system.py,sha256=RVQA66t43Vt-jn5jIZUzYZ63FANs4onk8bXNJRl-rWo,44104
47
+ core/tasks.py,sha256=ptO44VTBAoTwf7Y3pI6TnniIs4lTUgN4MKCgNAUjhm4,13135
48
48
  core/temp_passwords.py,sha256=FieUnIUeQHmA1DoXvfJ5U6-Ayv3oDz-hSln5s_vNbA4,5271
49
49
  core/test_system_info.py,sha256=IMPz21KEs6OC5YbL7YaIBdmJVLjRY6MgPuZpldJB5OI,6935
50
50
  core/tests.py,sha256=PuxoarDS4reHNV4EDIyVRW7xIOFxZJYou1K_LI9ZNHY,105265
51
51
  core/tests_liveupdate.py,sha256=IquU8ztk6zbzC1bQu3Nrr3RzGzuujtPwDkANJHbxg98,510
52
52
  core/urls.py,sha256=YPippON1MAP2KeZZ8jHpcLO6mvbnKn1q7fdMv5Vm9dY,425
53
53
  core/user_data.py,sha256=4pheHB5RqLJtmWMql30CLaCpuVqSyShXb7Sy-crRk_4,22400
54
- core/views.py,sha256=QIYcBDjzn3YQzP53ub99wVR79d8SCNXRfSX_ENW3snE,88310
54
+ core/views.py,sha256=s_a2tu9xwOpVSo7vo0iDDV4RN23jxGZNR-o7JNHs1Wk,88256
55
55
  core/widgets.py,sha256=vlR9PlFfZGlkHm5X2cqNXuEBZSj8gmWaR6MO1mMy6kg,6904
56
56
  nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- nodes/admin.py,sha256=2lkeWBCgKuHQQs0olHeE10MvOqhdS8eO9M82EDWhmFc,73679
57
+ nodes/admin.py,sha256=vTreqm-G0IWHuYagyKj0RXuXFuWbwbsvzNHEIFuwhHA,79511
58
58
  nodes/apps.py,sha256=oi_M2Ya8CAR8N_MoYU68u7_9u-9SlIMelzLOgYM9tDs,3059
59
59
  nodes/backends.py,sha256=dmmbS0X2YIlCDz2KjoDf_L62dy--nuqZF1rEDoi2JHM,5921
60
60
  nodes/dns.py,sha256=D5smXD7Rkh6E4MdL6TBL2WY8GgJg7Rx9z88LZrcMbTw,7048
61
61
  nodes/feature_checks.py,sha256=27e4PCkZ8BGWnJCOwMcY2Bo9z7LoeZWiTZuISWGnrzk,3996
62
62
  nodes/lcd.py,sha256=iKA8Wmq85KZD52aTzAU8ZmS144_gbdGMOXcE8yuECps,5758
63
- nodes/models.py,sha256=zIeEfUGduaRJ6CYsIiHlba55wgT6pCtyhiP_2w2ssGE,72890
63
+ nodes/models.py,sha256=PdvBLFqSsAThD6ZJyrJMzhiwOH42rtwdUpSz6H4KCH8,83726
64
64
  nodes/reports.py,sha256=NRYh3Y0SlZFhx31Zh2K03yO12ZrpxEHEY6T-dODA6WE,12059
65
65
  nodes/rfid_sync.py,sha256=oeblawcp6xeLApdIuhsJS83OAk58Eu7pVVmgpAc0Nt8,6953
66
66
  nodes/signals.py,sha256=PtOKdQfb08mV1LgSZvn7ZAcfOyy2c3Xkq4AOpBQyUdE,622
67
- nodes/tasks.py,sha256=7m9pKO-iI6JDdfPQ-GWRGown4mdyKrcroOnhbiWN7dY,5246
68
- nodes/tests.py,sha256=22fCi_o6lDf-hZmAgQuCNa8i2u4kjZUvN90unCbKi_E,188926
69
- nodes/urls.py,sha256=-o9_pLo6XHerKMQwL0TW80wm6wmtVZqyNWcUhpdq9vk,915
70
- nodes/utils.py,sha256=wt7UuSXGuq79A-g-B6EW3kK49QWJBb7zhhkw4pun4k8,4474
71
- nodes/views.py,sha256=Z-bFzCLaP4w1l2NzqknmwsBMwuLSWRtzsbroNfA2vJU,39794
67
+ nodes/tasks.py,sha256=TKSUE4eILV644iPtn2Xr_UL3ZFYgzjzSAIGUYmhg3Sk,5111
68
+ nodes/tests.py,sha256=0j1vcHoSpkR5e0aYSHffJi-CASFBKTW0qgK3sNStHhI,196800
69
+ nodes/urls.py,sha256=9uMhDq-b-EWZz0u-NvPRVSPXJeXfuS-BAACvsCs6gaE,1267
70
+ nodes/utils.py,sha256=tsVoXAC5QKXcUWrKxhIMLUdRPDtTUXJiG-r2Lmf28lg,4792
71
+ nodes/views.py,sha256=xWTaiUSEh5Paj6TZB780YcT6kU-HOar2QpcOamAKRok,59620
72
72
  ocpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- ocpp/admin.py,sha256=O5dqd_bwK8k612ltr4Tt9xR3rs3VxxJXCTxarx0mW0w,40970
73
+ ocpp/admin.py,sha256=BSfS4bwqxcC0a57xXOyIw9hFRxB0y7bLsF2gP5rRMfg,60175
74
74
  ocpp/apps.py,sha256=i3NqrmIamNEQBT33CIqh7HOSOPmJXCMKrZ-DUd3whqg,842
75
- ocpp/consumers.py,sha256=7PYlOkSlHSlIz2FUcBjui4uLFEIHOBWIHfnYpvITrMY,71719
75
+ ocpp/consumers.py,sha256=XfrtwJR8OLvYzxj0NIIEa_ky36UBjHROUtoEFqFK39I,75577
76
76
  ocpp/evcs.py,sha256=q1mZrCVSZxXTrtYsDqH6lkeEcJ6tfSC7p9YxkDmpSCw,28883
77
77
  ocpp/evcs_discovery.py,sha256=OmrzgaOHwveDRJs8AIhrM3apX8_k2PPXh_oYaYpNW3c,3876
78
- ocpp/models.py,sha256=1m3kVeuyGoJXLeaR__t_DgcVhAK3MHbCdnv3hF0WZMw,37587
78
+ ocpp/models.py,sha256=z5uy3zuTCICkrIg7rvBdnnYJzwHUyFrUP1AE-8LX8mk,47889
79
+ ocpp/network.py,sha256=N3je0wXckSqlHLJNQazpxrBvv0yAR7DdjfAR-hTcWDk,14149
79
80
  ocpp/reference_utils.py,sha256=_UR82GfE93kv4766mHyVIfdhhyYvrT59660r3H6W55M,1072
80
81
  ocpp/routing.py,sha256=3kQya-MdJ00778xDmX0esQLBP05P200V45asg-CGNoo,438
81
82
  ocpp/simulator.py,sha256=vnyd59QffT79AaPhmfM_jipni_nqfG57X5tXyx1rBoc,28016
82
83
  ocpp/status_display.py,sha256=YGFosd5HJETA0DcLdsjvx6EfhZSnI8Aa3cMnHG2WsBE,939
83
84
  ocpp/store.py,sha256=gLCSaP9KKF7li2ALlE3O3RW5eVJtoe-_YHfKhdf0VOM,18943
84
- ocpp/tasks.py,sha256=VSna6Mi1jp3zjYTo4y0c5N-n-4efIq5FRKu3z2y8Oio,8950
85
+ ocpp/tasks.py,sha256=WCN1k4X8BGp8Yc0klhfivBskDCtb04jNxtvNNr7eWHQ,14751
85
86
  ocpp/test_export_import.py,sha256=ouQbTCp4mxfqoK6gondlu3PPcyrT9jSbWAX5gqqgaNk,4561
86
87
  ocpp/test_rfid.py,sha256=IhFSlvsI8A8D3S32sRE298nYfrmqxbv7GfVErtNU3DQ,39137
87
- ocpp/tests.py,sha256=0AsSR7UKZQUhWFPEwCE4FJHH1Ykl2UpooSGlBIPJOeU,207815
88
+ ocpp/tests.py,sha256=pEVega4N2gJctjOiO8CSvMqGKrcrUtZrLSLBNSigRGU,214558
88
89
  ocpp/transactions_io.py,sha256=p2aUsKlCDYnZ4ZBrOM7pxXoW_w3Tbm-tvRFSjnR3x24,7738
89
90
  ocpp/urls.py,sha256=5ZomUtznJe3kfs8E-DtVp12eFva5jUuJdpTEczIsQ5w,1730
90
- ocpp/views.py,sha256=iwm2oEMN_d9mmjaD6Hh9axqBIpqw_qSWpMSzyHICrE4,77091
91
+ ocpp/views.py,sha256=9mywwxlc_-jXBftomOxRYLFiS3DvzmV0KDn_6q8I824,77165
91
92
  pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
93
  pages/admin.py,sha256=VbxkwgjrFx7lXVhwbZuPSvCkS7EC-flBpwOztHejWtE,35834
93
94
  pages/apps.py,sha256=0qcTFKVX9_QgqexJtGeph1sHRqq7khJf4x5ZtkWwblg,1424
@@ -95,16 +96,16 @@ pages/checks.py,sha256=sM8_hUVM_HOIocvtTb2sY3AaSEvbTnOlO46UchGVd-0,1527
95
96
  pages/context_processors.py,sha256=vrgMu4vYCOonZ8eZ27gQvGU74PBpMi47T512Lu1__sA,5297
96
97
  pages/defaults.py,sha256=3tjv3nFPxwpFu6poJ1Ez1MP92Q6ZvyRluftKHlU-zeI,522
97
98
  pages/forms.py,sha256=r3JM5qp3_4RR01-u6XV8WDOaeiRe4OvCN8Y52FcsAwI,7909
98
- pages/middleware.py,sha256=MYd5Nko4AnFg3orY6MuyvvNg_I6GCIf8mDW8znSOgvQ,7042
99
+ pages/middleware.py,sha256=-tXFju1siXvzVsHcgjClfTtryw-5-PwW0171DQQxKu4,7115
99
100
  pages/models.py,sha256=9LdIoIK2Epp3YDUk8LUWyhLW5pJ-NiuYTzO_-xKjg0c,23636
100
101
  pages/module_defaults.py,sha256=rCAY8aTyxYNL0M5zDr393rX-Gi-svXqKtuLXm0rILrQ,5444
101
102
  pages/site_config.py,sha256=f1Me0GFdHeGbIeyMlQNzD2e6hym59YHqbz92U_ppffY,4057
102
103
  pages/tasks.py,sha256=ivcba_3wSQ1-cku0oDplzw6vLeQ9hBq3R4TG-LmR5gs,1913
103
- pages/tests.py,sha256=akLS7p62PeUCaSXTAIsjAfDyv4KWOMJ2MkAGjPuX7AE,154350
104
+ pages/tests.py,sha256=_bVEijMfjVq46hNeGRDZprbQXAAUyS2LhXqZ5_Tkryg,155739
104
105
  pages/urls.py,sha256=Oe88tm67iVHRFcGJLSBidZ0rkRQPRZ_vRt6ahxNqPek,1499
105
- pages/utils.py,sha256=CR4D1debgJLGgXsw9kap2ggpe7fIpSoWS_ivbgMNp2k,564
106
- pages/views.py,sha256=48I-XlW5Dop5ZEZPpm8iZmkRlGM20XP9-wEC4HtC3pg,63633
107
- arthexis-0.1.23.dist-info/METADATA,sha256=riViVTMwAbUo-CDK3doWMDCV_wyznoApGZE_AZJxEhc,11886
108
- arthexis-0.1.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
- arthexis-0.1.23.dist-info/top_level.txt,sha256=J2a2q8_BWrCZ8H2WFUNMBfO2jz8j2gax6zZh-_1QDac,29
110
- arthexis-0.1.23.dist-info/RECORD,,
106
+ pages/utils.py,sha256=vEFrXSzN-3wsK2H687_oVKSwsSOP_NB7DXg1hHwHink,2471
107
+ pages/views.py,sha256=Yd7JRD0OQhhvYsYZLVDUxJz9zjba84jLmyhZ1K1RE0w,65286
108
+ arthexis-0.1.25.dist-info/METADATA,sha256=JNWsyBTUNjpgTb39j2uq8Dcta-N6V0Ntb3TlXglnxak,13987
109
+ arthexis-0.1.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
110
+ arthexis-0.1.25.dist-info/top_level.txt,sha256=J2a2q8_BWrCZ8H2WFUNMBfO2jz8j2gax6zZh-_1QDac,29
111
+ arthexis-0.1.25.dist-info/RECORD,,
config/settings.py CHANGED
@@ -18,6 +18,8 @@ import ipaddress
18
18
  import socket
19
19
  from core.log_paths import select_log_dir
20
20
  from django.utils.translation import gettext_lazy as _
21
+ from datetime import timedelta
22
+
21
23
  from celery.schedules import crontab
22
24
  from django.http import request as http_request
23
25
  from django.http.request import split_domain_port
@@ -333,6 +335,7 @@ CsrfViewMiddleware._check_referer = _check_referer_with_forwarded
333
335
  # Application definition
334
336
 
335
337
  LOCAL_APPS = [
338
+ "api",
336
339
  "nodes",
337
340
  "core",
338
341
  "ocpp",
@@ -666,4 +669,8 @@ CELERY_BEAT_SCHEDULE = {
666
669
  "task": "ocpp.tasks.schedule_daily_charge_point_configuration_checks",
667
670
  "schedule": crontab(minute=0, hour=0),
668
671
  },
672
+ "ocpp_forwarding_push": {
673
+ "task": "ocpp.tasks.push_forwarded_charge_points",
674
+ "schedule": timedelta(seconds=5),
675
+ },
669
676
  }
config/urls.py CHANGED
@@ -20,6 +20,7 @@ from django.views.decorators.csrf import csrf_exempt
20
20
  from django.views.generic import RedirectView
21
21
  from django.views.i18n import set_language
22
22
  from django.utils.translation import gettext_lazy as _
23
+ from api.views import EnergyGraphQLView
23
24
  from core import views as core_views
24
25
  from core.admindocs import (
25
26
  CommandsView,
@@ -119,6 +120,7 @@ urlpatterns = [
119
120
  name="admin-model-graph",
120
121
  ),
121
122
  path("version/", core_views.version_info, name="version-info"),
123
+ path("graphql/", EnergyGraphQLView.as_view(), name="graphql"),
122
124
  path(
123
125
  "admin/core/releases/<int:pk>/<str:action>/",
124
126
  core_views.release_progress,