arthexis 0.1.10__tar.gz → 0.1.12__tar.gz

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.

Files changed (212) hide show
  1. {arthexis-0.1.10 → arthexis-0.1.12}/PKG-INFO +36 -26
  2. {arthexis-0.1.10 → arthexis-0.1.12}/README.md +34 -25
  3. {arthexis-0.1.10 → arthexis-0.1.12}/arthexis.egg-info/PKG-INFO +36 -26
  4. {arthexis-0.1.10 → arthexis-0.1.12}/arthexis.egg-info/SOURCES.txt +12 -1
  5. {arthexis-0.1.10 → arthexis-0.1.12}/arthexis.egg-info/requires.txt +1 -0
  6. {arthexis-0.1.10 → arthexis-0.1.12}/config/context_processors.py +1 -0
  7. {arthexis-0.1.10 → arthexis-0.1.12}/config/settings.py +31 -5
  8. {arthexis-0.1.10 → arthexis-0.1.12}/config/urls.py +5 -4
  9. {arthexis-0.1.10 → arthexis-0.1.12}/core/admin.py +430 -90
  10. {arthexis-0.1.10 → arthexis-0.1.12}/core/apps.py +48 -2
  11. {arthexis-0.1.10 → arthexis-0.1.12}/core/backends.py +38 -0
  12. {arthexis-0.1.10 → arthexis-0.1.12}/core/environment.py +23 -5
  13. {arthexis-0.1.10 → arthexis-0.1.12}/core/mailer.py +3 -1
  14. {arthexis-0.1.10 → arthexis-0.1.12}/core/models.py +303 -31
  15. {arthexis-0.1.10 → arthexis-0.1.12}/core/reference_utils.py +20 -9
  16. {arthexis-0.1.10 → arthexis-0.1.12}/core/release.py +4 -0
  17. {arthexis-0.1.10 → arthexis-0.1.12}/core/sigil_builder.py +7 -2
  18. {arthexis-0.1.10 → arthexis-0.1.12}/core/sigil_resolver.py +35 -4
  19. arthexis-0.1.12/core/system.py +493 -0
  20. {arthexis-0.1.10 → arthexis-0.1.12}/core/tasks.py +92 -40
  21. arthexis-0.1.12/core/temp_passwords.py +181 -0
  22. {arthexis-0.1.10 → arthexis-0.1.12}/core/test_system_info.py +62 -2
  23. {arthexis-0.1.10 → arthexis-0.1.12}/core/tests.py +169 -3
  24. {arthexis-0.1.10 → arthexis-0.1.12}/core/user_data.py +51 -8
  25. {arthexis-0.1.10 → arthexis-0.1.12}/core/views.py +371 -20
  26. arthexis-0.1.12/nodes/admin.py +898 -0
  27. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/backends.py +21 -6
  28. arthexis-0.1.12/nodes/dns.py +203 -0
  29. arthexis-0.1.12/nodes/feature_checks.py +133 -0
  30. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/models.py +374 -31
  31. arthexis-0.1.12/nodes/reports.py +411 -0
  32. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/tests.py +677 -38
  33. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/utils.py +32 -0
  34. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/views.py +14 -0
  35. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/admin.py +278 -15
  36. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/consumers.py +517 -16
  37. arthexis-0.1.12/ocpp/evcs_discovery.py +158 -0
  38. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/models.py +237 -4
  39. arthexis-0.1.12/ocpp/reference_utils.py +42 -0
  40. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/simulator.py +321 -22
  41. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/store.py +110 -2
  42. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/test_rfid.py +169 -7
  43. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/tests.py +819 -6
  44. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/transactions_io.py +17 -3
  45. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/views.py +233 -19
  46. {arthexis-0.1.10 → arthexis-0.1.12}/pages/admin.py +144 -4
  47. {arthexis-0.1.10 → arthexis-0.1.12}/pages/context_processors.py +21 -7
  48. arthexis-0.1.12/pages/defaults.py +13 -0
  49. {arthexis-0.1.10 → arthexis-0.1.12}/pages/forms.py +38 -0
  50. {arthexis-0.1.10 → arthexis-0.1.12}/pages/models.py +189 -15
  51. {arthexis-0.1.10 → arthexis-0.1.12}/pages/tests.py +281 -8
  52. {arthexis-0.1.10 → arthexis-0.1.12}/pages/urls.py +4 -0
  53. {arthexis-0.1.10 → arthexis-0.1.12}/pages/views.py +137 -21
  54. {arthexis-0.1.10 → arthexis-0.1.12}/pyproject.toml +2 -2
  55. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_assistant_profile_admin.py +4 -1
  56. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_email_collector.py +30 -1
  57. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_email_inbox.py +14 -0
  58. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_email_inbox_admin.py +29 -0
  59. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_email_inbox_search_action.py +38 -2
  60. arthexis-0.1.12/tests/test_email_outbox_admin.py +124 -0
  61. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_footer_render.py +72 -1
  62. arthexis-0.1.12/tests/test_manage_debug.py +31 -0
  63. arthexis-0.1.12/tests/test_manage_debug_flag.py +103 -0
  64. arthexis-0.1.10/tests/test_man.py → arthexis-0.1.12/tests/test_manuals.py +23 -16
  65. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_mcp_sigil_server.py +40 -1
  66. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_odoo_product.py +93 -3
  67. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_pypi_token.py +16 -10
  68. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_register_site_apps_command.py +6 -0
  69. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_release_manager_admin.py +11 -11
  70. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_release_progress.py +188 -8
  71. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_release_tasks.py +67 -12
  72. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_send_invite_command.py +35 -1
  73. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_show_leads_command.py +7 -1
  74. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_sigil_builder.py +2 -2
  75. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_sigil_resolution.py +74 -6
  76. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_sites_utils.py +42 -0
  77. arthexis-0.1.12/tests/test_temp_passwords.py +182 -0
  78. arthexis-0.1.12/tests/test_totp_admin.py +67 -0
  79. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_user_data_admin.py +43 -0
  80. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_vscode_manage.py +16 -0
  81. arthexis-0.1.10/core/system.py +0 -244
  82. arthexis-0.1.10/nodes/admin.py +0 -453
  83. arthexis-0.1.10/tests/test_email_outbox_admin.py +0 -43
  84. {arthexis-0.1.10 → arthexis-0.1.12}/LICENSE +0 -0
  85. {arthexis-0.1.10 → arthexis-0.1.12}/arthexis.egg-info/dependency_links.txt +0 -0
  86. {arthexis-0.1.10 → arthexis-0.1.12}/arthexis.egg-info/top_level.txt +0 -0
  87. {arthexis-0.1.10 → arthexis-0.1.12}/config/__init__.py +0 -0
  88. {arthexis-0.1.10 → arthexis-0.1.12}/config/active_app.py +0 -0
  89. {arthexis-0.1.10 → arthexis-0.1.12}/config/asgi.py +0 -0
  90. {arthexis-0.1.10 → arthexis-0.1.12}/config/auth_app.py +0 -0
  91. {arthexis-0.1.10 → arthexis-0.1.12}/config/celery.py +0 -0
  92. {arthexis-0.1.10 → arthexis-0.1.12}/config/horologia_app.py +0 -0
  93. {arthexis-0.1.10 → arthexis-0.1.12}/config/loadenv.py +0 -0
  94. {arthexis-0.1.10 → arthexis-0.1.12}/config/logging.py +0 -0
  95. {arthexis-0.1.10 → arthexis-0.1.12}/config/middleware.py +0 -0
  96. {arthexis-0.1.10 → arthexis-0.1.12}/config/offline.py +0 -0
  97. {arthexis-0.1.10 → arthexis-0.1.12}/config/wsgi.py +0 -0
  98. {arthexis-0.1.10 → arthexis-0.1.12}/core/__init__.py +0 -0
  99. {arthexis-0.1.10 → arthexis-0.1.12}/core/admin_history.py +0 -0
  100. {arthexis-0.1.10 → arthexis-0.1.12}/core/admindocs.py +0 -0
  101. {arthexis-0.1.10 → arthexis-0.1.12}/core/auto_upgrade.py +0 -0
  102. {arthexis-0.1.10 → arthexis-0.1.12}/core/entity.py +0 -0
  103. {arthexis-0.1.10 → arthexis-0.1.12}/core/fields.py +0 -0
  104. {arthexis-0.1.10 → arthexis-0.1.12}/core/github_helper.py +0 -0
  105. {arthexis-0.1.10 → arthexis-0.1.12}/core/github_issues.py +0 -0
  106. {arthexis-0.1.10 → arthexis-0.1.12}/core/lcd_screen.py +0 -0
  107. {arthexis-0.1.10 → arthexis-0.1.12}/core/liveupdate.py +0 -0
  108. {arthexis-0.1.10 → arthexis-0.1.12}/core/log_paths.py +0 -0
  109. {arthexis-0.1.10 → arthexis-0.1.12}/core/middleware.py +0 -0
  110. {arthexis-0.1.10 → arthexis-0.1.12}/core/notifications.py +0 -0
  111. {arthexis-0.1.10 → arthexis-0.1.12}/core/public_wifi.py +0 -0
  112. {arthexis-0.1.10 → arthexis-0.1.12}/core/sigil_context.py +0 -0
  113. {arthexis-0.1.10 → arthexis-0.1.12}/core/tests_liveupdate.py +0 -0
  114. {arthexis-0.1.10 → arthexis-0.1.12}/core/urls.py +0 -0
  115. {arthexis-0.1.10 → arthexis-0.1.12}/core/widgets.py +0 -0
  116. {arthexis-0.1.10 → arthexis-0.1.12}/core/workgroup_urls.py +0 -0
  117. {arthexis-0.1.10 → arthexis-0.1.12}/core/workgroup_views.py +0 -0
  118. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/__init__.py +0 -0
  119. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/actions.py +0 -0
  120. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/apps.py +0 -0
  121. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/lcd.py +0 -0
  122. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/tasks.py +0 -0
  123. {arthexis-0.1.10 → arthexis-0.1.12}/nodes/urls.py +0 -0
  124. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/__init__.py +0 -0
  125. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/apps.py +0 -0
  126. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/evcs.py +0 -0
  127. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/routing.py +0 -0
  128. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/tasks.py +0 -0
  129. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/test_export_import.py +0 -0
  130. {arthexis-0.1.10 → arthexis-0.1.12}/ocpp/urls.py +0 -0
  131. {arthexis-0.1.10 → arthexis-0.1.12}/pages/__init__.py +0 -0
  132. {arthexis-0.1.10 → arthexis-0.1.12}/pages/apps.py +0 -0
  133. {arthexis-0.1.10 → arthexis-0.1.12}/pages/checks.py +0 -0
  134. {arthexis-0.1.10 → arthexis-0.1.12}/pages/middleware.py +0 -0
  135. {arthexis-0.1.10 → arthexis-0.1.12}/pages/utils.py +0 -0
  136. {arthexis-0.1.10 → arthexis-0.1.12}/setup.cfg +0 -0
  137. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_acronym_capitalization.py +0 -0
  138. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_client_report.py +0 -0
  139. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_doc_commands.py +0 -0
  140. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_doc_model_groups.py +0 -0
  141. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_history.py +0 -0
  142. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_index_actions.py +0 -0
  143. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_model_graph.py +0 -0
  144. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_object_history.py +0 -0
  145. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_profile_link.py +0 -0
  146. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_admin_system_stop.py +0 -0
  147. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_allowed_hosts_hostname.py +0 -0
  148. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_assistant_data_api.py +0 -0
  149. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_assistant_profile_api.py +0 -0
  150. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_auto_upgrade_scheduler.py +0 -0
  151. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_awg_admin.py +0 -0
  152. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_benchmark_command.py +0 -0
  153. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_birthday_greetings.py +0 -0
  154. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_celery_no_debug.py +0 -0
  155. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_check_migrations_script.py +0 -0
  156. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_client_report_generation.py +0 -0
  157. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_client_report_schedule.py +0 -0
  158. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_csrf_failure.py +0 -0
  159. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_csrf_origin_subnet.py +0 -0
  160. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_dist_cleanup.py +0 -0
  161. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_email_profiles.py +0 -0
  162. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_env_refresh_clean.py +0 -0
  163. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_env_refresh_pip.py +0 -0
  164. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_env_refresh_unlink.py +0 -0
  165. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_experience_admin_group.py +0 -0
  166. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_fixture_presence.py +0 -0
  167. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_footer_no_references.py +0 -0
  168. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_footer_presence.py +0 -0
  169. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_git_checks.py +0 -0
  170. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_github_issue_reporting.py +0 -0
  171. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_install_script.py +0 -0
  172. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_language_switch.py +0 -0
  173. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_lcd_check_command.py +0 -0
  174. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_lcd_smbus2.py +0 -0
  175. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_localhost_admin_backend.py +0 -0
  176. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_login_view_no_site.py +0 -0
  177. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_mcp_process.py +0 -0
  178. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_message_command.py +0 -0
  179. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_migrations.py +0 -0
  180. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_model_verbose_name_capitalization.py +0 -0
  181. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_network_setup_interactive.py +0 -0
  182. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_node_info_view.py +0 -0
  183. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_notifications_fallback.py +0 -0
  184. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_notify_command.py +0 -0
  185. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_ocpp_session_lock.py +0 -0
  186. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_odoo_profile.py +0 -0
  187. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_odoo_profile_admin.py +0 -0
  188. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_offline.py +0 -0
  189. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_package_admin_next_release.py +0 -0
  190. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_power_admin_group.py +0 -0
  191. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_profile_inline_deletion.py +0 -0
  192. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_projects_rfid.py +0 -0
  193. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_readme_language.py +0 -0
  194. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_reference_qr_code.py +0 -0
  195. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_reference_transaction_uuid.py +0 -0
  196. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_release_checklist.py +0 -0
  197. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_release_logs.py +0 -0
  198. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_request_invite.py +0 -0
  199. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_rfid_admin_reference_clear.py +0 -0
  200. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_rfid_admin_scan_csrf.py +0 -0
  201. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_rfid_background_reader.py +0 -0
  202. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_rfid_client_report.py +0 -0
  203. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_role_marker_filtering.py +0 -0
  204. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_seed_data.py +0 -0
  205. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_shell_scripts.py +0 -0
  206. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_staff_login_net_message.py +0 -0
  207. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_switch_role_script.py +0 -0
  208. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_uninstall_script.py +0 -0
  209. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_update_fixtures_command.py +0 -0
  210. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_urls_autodiscover.py +0 -0
  211. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_version_endpoint.py +0 -0
  212. {arthexis-0.1.10 → arthexis-0.1.12}/tests/test_version_file.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arthexis
3
- Version: 0.1.10
3
+ Version: 0.1.12
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
- [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml)
118
+ [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [![OCPP 1.6 Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)](docs/development/ocpp-user-manual.md)
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: BootNotification, Heartbeat, StatusNotification, StartTransaction, StopTransaction
127
- - Access & metering: Authorize, MeterValues
128
- - Maintenance & firmware: DiagnosticsStatusNotification, FirmwareStatusNotification
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:** run [`./install.sh`](install.sh) with a node role flag:
188
- - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
189
- - `--control` – prepares the single-device testing appliance.
190
- - `--satellite` – configures the edge data acquisition node.
191
- - `--constellation` – enables the multi-user orchestration stack.
192
- Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
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,24 +1,33 @@
1
1
  # Arthexis Constellation
2
2
 
3
- [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml)
3
+ [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [![OCPP 1.6 Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)](docs/development/ocpp-user-manual.md)
4
4
 
5
5
  ## Purpose
6
6
 
7
7
  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)).
8
8
 
9
- ## Features
9
+ ## Current Features
10
10
 
11
11
  - Compatible with the [Open Charge Point Protocol (OCPP) 1.6](https://www.openchargealliance.org/protocols/ocpp-16/) central system, handling:
12
- - Lifecycle & sessions: BootNotification, Heartbeat, StatusNotification, StartTransaction, StopTransaction
13
- - Access & metering: Authorize, MeterValues
14
- - Maintenance & firmware: DiagnosticsStatusNotification, FirmwareStatusNotification
12
+ - Lifecycle & sessions
13
+ - `BootNotification`
14
+ - `Heartbeat`
15
+ - `StatusNotification`
16
+ - `StartTransaction`
17
+ - `StopTransaction`
18
+ - Access & metering
19
+ - `Authorize`
20
+ - `MeterValues`
21
+ - Maintenance & firmware
22
+ - `DiagnosticsStatusNotification`
23
+ - `FirmwareStatusNotification`
15
24
  - [API](https://en.wikipedia.org/wiki/API) integration with [Odoo](https://www.odoo.com/), syncing:
16
25
  - Employee credentials via `res.users`
17
26
  - Product catalog lookups via `product.product`
18
27
  - Runs on [Windows 11](https://www.microsoft.com/windows/windows-11) and [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/)
19
28
  - Tested for the [Raspberry Pi 4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
20
29
 
21
- Project under active development.
30
+ Project under rapid active and open development.
22
31
 
23
32
  ## Role Architecture
24
33
 
@@ -60,28 +69,28 @@ Arthexis Constellation ships in four node roles tailored to different deployment
60
69
  ### 2. Start and stop
61
70
  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.
62
71
 
63
- **[VS Code](https://code.visualstudio.com/)**
64
- - Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
65
- - Select the **Run Server** (or **Debug Server**) configuration.
66
- - Press the green start button. Stop the server with the red square button (`Shift+F5`).
72
+ - **[VS Code](https://code.visualstudio.com/)**
73
+ - Open the folder and go to the **Run and Debug** panel (`Ctrl+Shift+D`).
74
+ - Select the **Run Server** (or **Debug Server**) configuration.
75
+ - Press the green start button. Stop the server with the red square button (`Shift+F5`).
67
76
 
68
- **[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
69
- - Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
70
- - Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
77
+ - **[Shell](https://en.wikipedia.org/wiki/Shell_(computing))**
78
+ - Linux: run [`./start.sh`](start.sh) and stop with [`./stop.sh`](stop.sh).
79
+ - Windows: run [`start.bat`](start.bat) and stop with `Ctrl+C`.
71
80
 
72
81
  ### 3. Install and upgrade
73
- **Linux:** run [`./install.sh`](install.sh) with a node role flag:
74
- - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
75
- - `--control` – prepares the single-device testing appliance.
76
- - `--satellite` – configures the edge data acquisition node.
77
- - `--constellation` – enables the multi-user orchestration stack.
78
- Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
79
-
80
- Upgrade with [`./upgrade.sh`](upgrade.sh).
81
-
82
- **Windows:**
83
- - Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
84
- - Installation is not required to start in Terminal mode (the default).
82
+ - **Linux:**
83
+ - Run [`./install.sh`](install.sh) with a node role flag:
84
+ - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
85
+ - `--control` – prepares the single-device testing appliance.
86
+ - `--satellite` – configures the edge data acquisition node.
87
+ - `--constellation` enables the multi-user orchestration stack.
88
+ - Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
89
+ - Upgrade with [`./upgrade.sh`](upgrade.sh).
90
+
91
+ - **Windows:**
92
+ - Run [`install.bat`](install.bat) to install (Terminal role) and [`upgrade.bat`](upgrade.bat) to upgrade.
93
+ - Installation is not required to start in Terminal mode (the default).
85
94
 
86
95
  ### 4. Administration
87
96
  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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arthexis
3
- Version: 0.1.10
3
+ Version: 0.1.12
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
- [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml)
118
+ [![Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/coverage.svg)](https://github.com/arthexis/arthexis/actions/workflows/coverage.yml) [![OCPP 1.6 Coverage](https://raw.githubusercontent.com/arthexis/arthexis/main/ocpp_coverage.svg)](docs/development/ocpp-user-manual.md)
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: BootNotification, Heartbeat, StatusNotification, StartTransaction, StopTransaction
127
- - Access & metering: Authorize, MeterValues
128
- - Maintenance & firmware: DiagnosticsStatusNotification, FirmwareStatusNotification
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:** run [`./install.sh`](install.sh) with a node role flag:
188
- - `--terminal` – default when unspecified and recommended if you're unsure. Terminal nodes can also use the start/stop scripts above without installing.
189
- - `--control` – prepares the single-device testing appliance.
190
- - `--satellite` – configures the edge data acquisition node.
191
- - `--constellation` – enables the multi-user orchestration stack.
192
- Use `./install.sh --help` to list every available flag if you need to customize the node beyond the role defaults.
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.
@@ -47,6 +47,7 @@ core/sigil_context.py
47
47
  core/sigil_resolver.py
48
48
  core/system.py
49
49
  core/tasks.py
50
+ core/temp_passwords.py
50
51
  core/test_system_info.py
51
52
  core/tests.py
52
53
  core/tests_liveupdate.py
@@ -61,8 +62,11 @@ nodes/actions.py
61
62
  nodes/admin.py
62
63
  nodes/apps.py
63
64
  nodes/backends.py
65
+ nodes/dns.py
66
+ nodes/feature_checks.py
64
67
  nodes/lcd.py
65
68
  nodes/models.py
69
+ nodes/reports.py
66
70
  nodes/tasks.py
67
71
  nodes/tests.py
68
72
  nodes/urls.py
@@ -73,7 +77,9 @@ ocpp/admin.py
73
77
  ocpp/apps.py
74
78
  ocpp/consumers.py
75
79
  ocpp/evcs.py
80
+ ocpp/evcs_discovery.py
76
81
  ocpp/models.py
82
+ ocpp/reference_utils.py
77
83
  ocpp/routing.py
78
84
  ocpp/simulator.py
79
85
  ocpp/store.py
@@ -89,6 +95,7 @@ pages/admin.py
89
95
  pages/apps.py
90
96
  pages/checks.py
91
97
  pages/context_processors.py
98
+ pages/defaults.py
92
99
  pages/forms.py
93
100
  pages/middleware.py
94
101
  pages/models.py
@@ -143,7 +150,9 @@ tests/test_lcd_check_command.py
143
150
  tests/test_lcd_smbus2.py
144
151
  tests/test_localhost_admin_backend.py
145
152
  tests/test_login_view_no_site.py
146
- tests/test_man.py
153
+ tests/test_manage_debug.py
154
+ tests/test_manage_debug_flag.py
155
+ tests/test_manuals.py
147
156
  tests/test_mcp_process.py
148
157
  tests/test_mcp_sigil_server.py
149
158
  tests/test_message_command.py
@@ -187,6 +196,8 @@ tests/test_sigil_resolution.py
187
196
  tests/test_sites_utils.py
188
197
  tests/test_staff_login_net_message.py
189
198
  tests/test_switch_role_script.py
199
+ tests/test_temp_passwords.py
200
+ tests/test_totp_admin.py
190
201
  tests/test_uninstall_script.py
191
202
  tests/test_update_fixtures_command.py
192
203
  tests/test_urls_autodiscover.py
@@ -44,6 +44,7 @@ incremental==24.7.2
44
44
  kombu==5.5.4
45
45
  libipld==3.1.1
46
46
  Markdown==3.8.2
47
+ mdx_truly_sane_lists==1.3
47
48
  mcp==1.14.0
48
49
  outcome==1.3.0.post0
49
50
  packaging==25.0
@@ -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
  }
@@ -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
- # Enable DEBUG and related tooling when running in Terminal mode.
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
- DEBUG = NODE_ROLE == "Terminal"
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
 
@@ -664,10 +685,15 @@ LOGGING = {
664
685
  "backupCount": 7,
665
686
  "encoding": "utf-8",
666
687
  "formatter": "standard",
667
- }
688
+ },
689
+ "console": {
690
+ "class": "logging.StreamHandler",
691
+ "level": "ERROR",
692
+ "formatter": "standard",
693
+ },
668
694
  },
669
695
  "root": {
670
- "handlers": ["file"],
696
+ "handlers": ["file", "console"],
671
697
  "level": "DEBUG",
672
698
  },
673
699
  }
@@ -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
- man_views.admin_manual_list,
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
- man_views.admin_manual_detail,
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
- man_views.manual_pdf,
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)