django-lux 1.0.0__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.
Files changed (294) hide show
  1. django_lux-1.0.0/LICENSE +105 -0
  2. django_lux-1.0.0/MANIFEST.in +19 -0
  3. django_lux-1.0.0/PKG-INFO +180 -0
  4. django_lux-1.0.0/README.md +144 -0
  5. django_lux-1.0.0/django_lux.egg-info/PKG-INFO +180 -0
  6. django_lux-1.0.0/django_lux.egg-info/SOURCES.txt +292 -0
  7. django_lux-1.0.0/django_lux.egg-info/dependency_links.txt +1 -0
  8. django_lux-1.0.0/django_lux.egg-info/entry_points.txt +2 -0
  9. django_lux-1.0.0/django_lux.egg-info/requires.txt +15 -0
  10. django_lux-1.0.0/django_lux.egg-info/top_level.txt +1 -0
  11. django_lux-1.0.0/dlux/VERSION +1 -0
  12. django_lux-1.0.0/dlux/__init__.py +11 -0
  13. django_lux-1.0.0/dlux/__main__.py +5 -0
  14. django_lux-1.0.0/dlux/admin.py +46 -0
  15. django_lux-1.0.0/dlux/api.py +332 -0
  16. django_lux-1.0.0/dlux/apps.py +98 -0
  17. django_lux-1.0.0/dlux/backup.py +626 -0
  18. django_lux-1.0.0/dlux/cli.py +58 -0
  19. django_lux-1.0.0/dlux/constants.py +92 -0
  20. django_lux-1.0.0/dlux/context_processors.py +415 -0
  21. django_lux-1.0.0/dlux/discovery.py +1064 -0
  22. django_lux-1.0.0/dlux/fetcher.py +377 -0
  23. django_lux-1.0.0/dlux/filters.py +99 -0
  24. django_lux-1.0.0/dlux/fonts.py +101 -0
  25. django_lux-1.0.0/dlux/formats/__init__.py +0 -0
  26. django_lux-1.0.0/dlux/formats/ar/__init__.py +0 -0
  27. django_lux-1.0.0/dlux/formats/ar/formats.py +17 -0
  28. django_lux-1.0.0/dlux/formats/en/__init__.py +0 -0
  29. django_lux-1.0.0/dlux/formats/en/formats.py +17 -0
  30. django_lux-1.0.0/dlux/forms.py +3926 -0
  31. django_lux-1.0.0/dlux/guards.py +34 -0
  32. django_lux-1.0.0/dlux/management/commands/__init__.py +0 -0
  33. django_lux-1.0.0/dlux/management/commands/dlux_check.py +208 -0
  34. django_lux-1.0.0/dlux/management/commands/dlux_migrate_from_microsys.py +134 -0
  35. django_lux-1.0.0/dlux/management/commands/dlux_settings.py +136 -0
  36. django_lux-1.0.0/dlux/management/commands/dlux_setup.py +108 -0
  37. django_lux-1.0.0/dlux/management/commands/migrator.py +195 -0
  38. django_lux-1.0.0/dlux/management/commands/seed_activity_log.py +162 -0
  39. django_lux-1.0.0/dlux/managers.py +60 -0
  40. django_lux-1.0.0/dlux/middleware.py +269 -0
  41. django_lux-1.0.0/dlux/migrations/0001_initial.py +337 -0
  42. django_lux-1.0.0/dlux/migrations/__init__.py +0 -0
  43. django_lux-1.0.0/dlux/models.py +1008 -0
  44. django_lux-1.0.0/dlux/navbar.py +247 -0
  45. django_lux-1.0.0/dlux/patches.py +831 -0
  46. django_lux-1.0.0/dlux/registration.py +131 -0
  47. django_lux-1.0.0/dlux/reports.py +903 -0
  48. django_lux-1.0.0/dlux/scaffold.py +286 -0
  49. django_lux-1.0.0/dlux/scaffold_templates/app/README.md.tmpl +41 -0
  50. django_lux-1.0.0/dlux/scaffold_templates/app/__init__.py.tmpl +1 -0
  51. django_lux-1.0.0/dlux/scaffold_templates/app/apps.py.tmpl +7 -0
  52. django_lux-1.0.0/dlux/scaffold_templates/app/filters.py.tmpl +19 -0
  53. django_lux-1.0.0/dlux/scaffold_templates/app/forms.py.tmpl +15 -0
  54. django_lux-1.0.0/dlux/scaffold_templates/app/migrations/__init__.py.tmpl +1 -0
  55. django_lux-1.0.0/dlux/scaffold_templates/app/models.py.tmpl +55 -0
  56. django_lux-1.0.0/dlux/scaffold_templates/app/tables.py.tmpl +48 -0
  57. django_lux-1.0.0/dlux/scaffold_templates/app/templates/example_record_confirm_delete.html.tmpl +32 -0
  58. django_lux-1.0.0/dlux/scaffold_templates/app/templates/example_record_detail.html.tmpl +44 -0
  59. django_lux-1.0.0/dlux/scaffold_templates/app/templates/example_record_form.html.tmpl +24 -0
  60. django_lux-1.0.0/dlux/scaffold_templates/app/templates/example_record_list.html.tmpl +28 -0
  61. django_lux-1.0.0/dlux/scaffold_templates/app/tests/__init__.py.tmpl +1 -0
  62. django_lux-1.0.0/dlux/scaffold_templates/app/tests/test_app.py.tmpl +8 -0
  63. django_lux-1.0.0/dlux/scaffold_templates/app/translations.py.tmpl +16 -0
  64. django_lux-1.0.0/dlux/scaffold_templates/app/urls.py.tmpl +20 -0
  65. django_lux-1.0.0/dlux/scaffold_templates/app/views.py.tmpl +110 -0
  66. django_lux-1.0.0/dlux/scaffold_templates/project/.nginx/nginx.conf.tmpl +51 -0
  67. django_lux-1.0.0/dlux/scaffold_templates/project/.secrets/.env.tmpl +12 -0
  68. django_lux-1.0.0/dlux/scaffold_templates/project/Dockerfile.tmpl +40 -0
  69. django_lux-1.0.0/dlux/scaffold_templates/project/README.md.tmpl +71 -0
  70. django_lux-1.0.0/dlux/scaffold_templates/project/compose.dev.yml.tmpl +38 -0
  71. django_lux-1.0.0/dlux/scaffold_templates/project/compose.yml.tmpl +253 -0
  72. django_lux-1.0.0/dlux/scaffold_templates/project/dockerignore.tmpl +49 -0
  73. django_lux-1.0.0/dlux/scaffold_templates/project/docs/README.md.tmpl +28 -0
  74. django_lux-1.0.0/dlux/scaffold_templates/project/entrypoint.sh.tmpl +9 -0
  75. django_lux-1.0.0/dlux/scaffold_templates/project/gitattributes.tmpl +1 -0
  76. django_lux-1.0.0/dlux/scaffold_templates/project/gitignore.tmpl +33 -0
  77. django_lux-1.0.0/dlux/scaffold_templates/project/gunicorn.py.tmpl +34 -0
  78. django_lux-1.0.0/dlux/scaffold_templates/project/manage.py.tmpl +23 -0
  79. django_lux-1.0.0/dlux/scaffold_templates/project/package/__init__.py.tmpl +4 -0
  80. django_lux-1.0.0/dlux/scaffold_templates/project/package/asgi.py.tmpl +13 -0
  81. django_lux-1.0.0/dlux/scaffold_templates/project/package/celery.py.tmpl +16 -0
  82. django_lux-1.0.0/dlux/scaffold_templates/project/package/settings.py.tmpl +193 -0
  83. django_lux-1.0.0/dlux/scaffold_templates/project/package/urls.py.tmpl +14 -0
  84. django_lux-1.0.0/dlux/scaffold_templates/project/package/wsgi.py.tmpl +13 -0
  85. django_lux-1.0.0/dlux/scaffold_templates/project/requirements.txt.tmpl +10 -0
  86. django_lux-1.0.0/dlux/scaffold_templates/project/start.ps1.tmpl +44 -0
  87. django_lux-1.0.0/dlux/scaffold_templates/project/start.sh.tmpl +32 -0
  88. django_lux-1.0.0/dlux/scaffold_templates/project/tests/__init__.py.tmpl +1 -0
  89. django_lux-1.0.0/dlux/scaffold_templates/project/tests/test_scaffold.py.tmpl +21 -0
  90. django_lux-1.0.0/dlux/scaffold_templates/project/tools/smtp_relay.py.tmpl +186 -0
  91. django_lux-1.0.0/dlux/session_history.py +375 -0
  92. django_lux-1.0.0/dlux/signals.py +434 -0
  93. django_lux-1.0.0/dlux/static/bootstrap/bootstrap-icons.css +2106 -0
  94. django_lux-1.0.0/dlux/static/bootstrap/bootstrap-icons.woff +0 -0
  95. django_lux-1.0.0/dlux/static/bootstrap/bootstrap-icons.woff2 +0 -0
  96. django_lux-1.0.0/dlux/static/bootstrap/bootstrap.bundle.min.js +7 -0
  97. django_lux-1.0.0/dlux/static/bootstrap/bootstrap.bundle.min.js.map +1 -0
  98. django_lux-1.0.0/dlux/static/bootstrap/bootstrap.min.css +6 -0
  99. django_lux-1.0.0/dlux/static/bootstrap/bootstrap.min.css.map +1 -0
  100. django_lux-1.0.0/dlux/static/bootstrap/bootstrap.rtl.min.css +6 -0
  101. django_lux-1.0.0/dlux/static/bootstrap/bootstrap.rtl.min.css.map +1 -0
  102. django_lux-1.0.0/dlux/static/chart.js/chart.umd.min.js +14 -0
  103. django_lux-1.0.0/dlux/static/dlux/accessibility/css/main.css +94 -0
  104. django_lux-1.0.0/dlux/static/dlux/accessibility/js/main.js +66 -0
  105. django_lux-1.0.0/dlux/static/dlux/activitylog/js/main.js +59 -0
  106. django_lux-1.0.0/dlux/static/dlux/backup/js/manage.js +94 -0
  107. django_lux-1.0.0/dlux/static/dlux/fonts/Alexandria-Bold.woff2 +0 -0
  108. django_lux-1.0.0/dlux/static/dlux/fonts/Alexandria-Medium.woff2 +0 -0
  109. django_lux-1.0.0/dlux/static/dlux/fonts/Alexandria-Regular.woff2 +0 -0
  110. django_lux-1.0.0/dlux/static/dlux/fonts/Changa-Bold.woff2 +0 -0
  111. django_lux-1.0.0/dlux/static/dlux/fonts/Changa-Medium.woff2 +0 -0
  112. django_lux-1.0.0/dlux/static/dlux/fonts/Changa-Regular.woff2 +0 -0
  113. django_lux-1.0.0/dlux/static/dlux/fonts/ReadexPro-Bold.woff2 +0 -0
  114. django_lux-1.0.0/dlux/static/dlux/fonts/ReadexPro-Medium.woff2 +0 -0
  115. django_lux-1.0.0/dlux/static/dlux/fonts/ReadexPro-Regular.woff2 +0 -0
  116. django_lux-1.0.0/dlux/static/dlux/fonts/TwemojiCountryFlags.woff2 +0 -0
  117. django_lux-1.0.0/dlux/static/dlux/fonts/cairo-bold.woff2 +0 -0
  118. django_lux-1.0.0/dlux/static/dlux/fonts/cairo-medium.woff2 +0 -0
  119. django_lux-1.0.0/dlux/static/dlux/fonts/cairo-regular.woff2 +0 -0
  120. django_lux-1.0.0/dlux/static/dlux/forms/css/file_field.css +154 -0
  121. django_lux-1.0.0/dlux/static/dlux/forms/css/form_actions.css +324 -0
  122. django_lux-1.0.0/dlux/static/dlux/forms/css/form_fields.css +210 -0
  123. django_lux-1.0.0/dlux/static/dlux/forms/js/file_field.js +191 -0
  124. django_lux-1.0.0/dlux/static/dlux/forms/js/filter_form.js +16 -0
  125. django_lux-1.0.0/dlux/static/dlux/helpers/autofill/js/main.js +310 -0
  126. django_lux-1.0.0/dlux/static/dlux/helpers/context_menu/css/main.css +88 -0
  127. django_lux-1.0.0/dlux/static/dlux/helpers/context_menu/js/main.js +729 -0
  128. django_lux-1.0.0/dlux/static/dlux/helpers/context_menu/js/section_manager.js +233 -0
  129. django_lux-1.0.0/dlux/static/dlux/helpers/dynamic_modal/js/main.js +536 -0
  130. django_lux-1.0.0/dlux/static/dlux/helpers/prevent_double_submit.js +31 -0
  131. django_lux-1.0.0/dlux/static/dlux/helpers/scan_link/js/main.js +295 -0
  132. django_lux-1.0.0/dlux/static/dlux/helpers/scan_link/js/scan_button.js +255 -0
  133. django_lux-1.0.0/dlux/static/dlux/helpers/tooltip/css/main.css +87 -0
  134. django_lux-1.0.0/dlux/static/dlux/helpers/tooltip/js/main.js +260 -0
  135. django_lux-1.0.0/dlux/static/dlux/helpers/wizard/js/main.js +181 -0
  136. django_lux-1.0.0/dlux/static/dlux/language/css/main.css +83 -0
  137. django_lux-1.0.0/dlux/static/dlux/language/js/main.js +113 -0
  138. django_lux-1.0.0/dlux/static/dlux/language/js/translations.js +24 -0
  139. django_lux-1.0.0/dlux/static/dlux/main/css/buttons.css +170 -0
  140. django_lux-1.0.0/dlux/static/dlux/main/css/dropdowns.css +53 -0
  141. django_lux-1.0.0/dlux/static/dlux/main/css/index_cards.css +168 -0
  142. django_lux-1.0.0/dlux/static/dlux/main/css/main.css +539 -0
  143. django_lux-1.0.0/dlux/static/dlux/main/css/navbar.css +106 -0
  144. django_lux-1.0.0/dlux/static/dlux/main/css/options.css +616 -0
  145. django_lux-1.0.0/dlux/static/dlux/main/css/pagination.css +35 -0
  146. django_lux-1.0.0/dlux/static/dlux/main/css/selectors.css +374 -0
  147. django_lux-1.0.0/dlux/static/dlux/main/css/system_setup.css +1066 -0
  148. django_lux-1.0.0/dlux/static/dlux/main/css/tables.css +686 -0
  149. django_lux-1.0.0/dlux/static/dlux/main/css/template_cleanup.css +316 -0
  150. django_lux-1.0.0/dlux/static/dlux/main/css/titlebar.css +331 -0
  151. django_lux-1.0.0/dlux/static/dlux/main/js/base_head.js +74 -0
  152. django_lux-1.0.0/dlux/static/dlux/main/js/base_runtime.js +73 -0
  153. django_lux-1.0.0/dlux/static/dlux/main/js/navbar.js +163 -0
  154. django_lux-1.0.0/dlux/static/dlux/main/js/options.js +462 -0
  155. django_lux-1.0.0/dlux/static/dlux/main/js/selectors.js +117 -0
  156. django_lux-1.0.0/dlux/static/dlux/main/js/system_setup.js +4548 -0
  157. django_lux-1.0.0/dlux/static/dlux/main/js/tables.js +85 -0
  158. django_lux-1.0.0/dlux/static/dlux/main/js/titlebar.js +77 -0
  159. django_lux-1.0.0/dlux/static/dlux/sections/js/manage_sections.js +30 -0
  160. django_lux-1.0.0/dlux/static/dlux/sidebar/css/main.css +738 -0
  161. django_lux-1.0.0/dlux/static/dlux/sidebar/css/reorder.css +111 -0
  162. django_lux-1.0.0/dlux/static/dlux/sidebar/css/theme_picker.css +137 -0
  163. django_lux-1.0.0/dlux/static/dlux/sidebar/js/main.js +255 -0
  164. django_lux-1.0.0/dlux/static/dlux/sidebar/js/preload.js +5 -0
  165. django_lux-1.0.0/dlux/static/dlux/sidebar/js/reorder.js +323 -0
  166. django_lux-1.0.0/dlux/static/dlux/sidebar/js/theme_picker.js +82 -0
  167. django_lux-1.0.0/dlux/static/dlux/themes/css/aether.css +1378 -0
  168. django_lux-1.0.0/dlux/static/dlux/themes/css/blue.css +70 -0
  169. django_lux-1.0.0/dlux/static/dlux/themes/css/dark.css +1639 -0
  170. django_lux-1.0.0/dlux/static/dlux/themes/css/gold.css +65 -0
  171. django_lux-1.0.0/dlux/static/dlux/themes/css/gothic.css +1347 -0
  172. django_lux-1.0.0/dlux/static/dlux/themes/css/green.css +77 -0
  173. django_lux-1.0.0/dlux/static/dlux/themes/css/light.css +70 -0
  174. django_lux-1.0.0/dlux/static/dlux/themes/css/mono.css +1103 -0
  175. django_lux-1.0.0/dlux/static/dlux/themes/css/neon.css +2345 -0
  176. django_lux-1.0.0/dlux/static/dlux/themes/css/prism.css +1259 -0
  177. django_lux-1.0.0/dlux/static/dlux/themes/css/red.css +68 -0
  178. django_lux-1.0.0/dlux/static/dlux/themes/css/retro.css +1358 -0
  179. django_lux-1.0.0/dlux/static/dlux/themes/js/main.js +159 -0
  180. django_lux-1.0.0/dlux/static/dlux/tutorial/css/main.css +147 -0
  181. django_lux-1.0.0/dlux/static/dlux/tutorial/js/driver.js +2 -0
  182. django_lux-1.0.0/dlux/static/dlux/tutorial/js/main.js +368 -0
  183. django_lux-1.0.0/dlux/static/dlux/users/css/login.css +1034 -0
  184. django_lux-1.0.0/dlux/static/dlux/users/css/permissions.css +288 -0
  185. django_lux-1.0.0/dlux/static/dlux/users/css/profile.css +442 -0
  186. django_lux-1.0.0/dlux/static/dlux/users/css/user_hub.css +297 -0
  187. django_lux-1.0.0/dlux/static/dlux/users/js/login.js +131 -0
  188. django_lux-1.0.0/dlux/static/dlux/users/js/manage_users.js +287 -0
  189. django_lux-1.0.0/dlux/static/dlux/users/js/permissions.js +215 -0
  190. django_lux-1.0.0/dlux/static/dlux/users/js/profile_2fa.js +697 -0
  191. django_lux-1.0.0/dlux/static/dlux/users/js/profile_image_widget.js +34 -0
  192. django_lux-1.0.0/dlux/static/dlux/users/js/twofa_verify.js +243 -0
  193. django_lux-1.0.0/dlux/static/dlux/users/js/user_hub.js +44 -0
  194. django_lux-1.0.0/dlux/static/dlux/users/js/user_report.js +91 -0
  195. django_lux-1.0.0/dlux/static/favicon.ico +0 -0
  196. django_lux-1.0.0/dlux/static/img/base_logo.webp +0 -0
  197. django_lux-1.0.0/dlux/static/img/default_profile.webp +0 -0
  198. django_lux-1.0.0/dlux/static/img/login_logo.webp +0 -0
  199. django_lux-1.0.0/dlux/static/vanillajs-datepicker/datepicker-bs5.min.css +1 -0
  200. django_lux-1.0.0/dlux/static/vanillajs-datepicker/datepicker.min.js +1 -0
  201. django_lux-1.0.0/dlux/tables.py +326 -0
  202. django_lux-1.0.0/dlux/tasks.py +37 -0
  203. django_lux-1.0.0/dlux/templates/bootstrap5/layout/field_file.html +1 -0
  204. django_lux-1.0.0/dlux/templates/dlux/2fa/verify.html +169 -0
  205. django_lux-1.0.0/dlux/templates/dlux/activitylog/activity_log.html +48 -0
  206. django_lux-1.0.0/dlux/templates/dlux/activitylog/activity_log_detail_modal.html +66 -0
  207. django_lux-1.0.0/dlux/templates/dlux/backup/manage.html +215 -0
  208. django_lux-1.0.0/dlux/templates/dlux/base.html +134 -0
  209. django_lux-1.0.0/dlux/templates/dlux/form_base.html +11 -0
  210. django_lux-1.0.0/dlux/templates/dlux/forms/assets_head.html +4 -0
  211. django_lux-1.0.0/dlux/templates/dlux/forms/assets_scripts.html +4 -0
  212. django_lux-1.0.0/dlux/templates/dlux/forms/crispy_file_field.html +33 -0
  213. django_lux-1.0.0/dlux/templates/dlux/forms/file_input.html +118 -0
  214. django_lux-1.0.0/dlux/templates/dlux/forms/filter_assets_head.html +3 -0
  215. django_lux-1.0.0/dlux/templates/dlux/forms/filter_assets_scripts.html +2 -0
  216. django_lux-1.0.0/dlux/templates/dlux/helpers/dynamic_modal.html +26 -0
  217. django_lux-1.0.0/dlux/templates/dlux/helpers/dynamic_modal_combined.html +43 -0
  218. django_lux-1.0.0/dlux/templates/dlux/helpers/dynamic_modal_detail.html +42 -0
  219. django_lux-1.0.0/dlux/templates/dlux/helpers/dynamic_modal_form.html +29 -0
  220. django_lux-1.0.0/dlux/templates/dlux/helpers/dynamic_modal_list.html +3 -0
  221. django_lux-1.0.0/dlux/templates/dlux/helpers/micro_context_menu.html +11 -0
  222. django_lux-1.0.0/dlux/templates/dlux/includes/font_previews.html +20 -0
  223. django_lux-1.0.0/dlux/templates/dlux/includes/font_settings_matrix.html +46 -0
  224. django_lux-1.0.0/dlux/templates/dlux/includes/language_catalog_editor.html +58 -0
  225. django_lux-1.0.0/dlux/templates/dlux/includes/language_fonts_editor.html +36 -0
  226. django_lux-1.0.0/dlux/templates/dlux/includes/language_previews.html +30 -0
  227. django_lux-1.0.0/dlux/templates/dlux/includes/navbar.html +22 -0
  228. django_lux-1.0.0/dlux/templates/dlux/includes/navbar_builder.html +55 -0
  229. django_lux-1.0.0/dlux/templates/dlux/includes/navbar_mode_previews.html +30 -0
  230. django_lux-1.0.0/dlux/templates/dlux/includes/options.html +583 -0
  231. django_lux-1.0.0/dlux/templates/dlux/includes/sidebar_builder.html +121 -0
  232. django_lux-1.0.0/dlux/templates/dlux/includes/sidebar_density_previews.html +51 -0
  233. django_lux-1.0.0/dlux/templates/dlux/includes/sidebar_items.html +5 -0
  234. django_lux-1.0.0/dlux/templates/dlux/includes/system_names_editor.html +21 -0
  235. django_lux-1.0.0/dlux/templates/dlux/includes/system_setup.html +85 -0
  236. django_lux-1.0.0/dlux/templates/dlux/includes/table_density_previews.html +51 -0
  237. django_lux-1.0.0/dlux/templates/dlux/includes/theme_previews.html +17 -0
  238. django_lux-1.0.0/dlux/templates/dlux/includes/theme_settings_matrix.html +56 -0
  239. django_lux-1.0.0/dlux/templates/dlux/includes/titlebar.html +64 -0
  240. django_lux-1.0.0/dlux/templates/dlux/includes/translation_matrix_editor.html +66 -0
  241. django_lux-1.0.0/dlux/templates/dlux/includes/tutorial.html +7 -0
  242. django_lux-1.0.0/dlux/templates/dlux/list_base.html +11 -0
  243. django_lux-1.0.0/dlux/templates/dlux/registration/pending.html +43 -0
  244. django_lux-1.0.0/dlux/templates/dlux/reports/overview.html +310 -0
  245. django_lux-1.0.0/dlux/templates/dlux/scopes/scope_actions.html +9 -0
  246. django_lux-1.0.0/dlux/templates/dlux/scopes/scope_form.html +19 -0
  247. django_lux-1.0.0/dlux/templates/dlux/scopes/scope_manager.html +10 -0
  248. django_lux-1.0.0/dlux/templates/dlux/sections/manage_sections.html +180 -0
  249. django_lux-1.0.0/dlux/templates/dlux/sections/subsection_select.html +75 -0
  250. django_lux-1.0.0/dlux/templates/dlux/session_ended.html +30 -0
  251. django_lux-1.0.0/dlux/templates/dlux/sidebar/auto.html +16 -0
  252. django_lux-1.0.0/dlux/templates/dlux/sidebar/extra_groups.html +37 -0
  253. django_lux-1.0.0/dlux/templates/dlux/sidebar/main.html +90 -0
  254. django_lux-1.0.0/dlux/templates/dlux/sidebar/tree.html +56 -0
  255. django_lux-1.0.0/dlux/templates/dlux/tables/table.html +197 -0
  256. django_lux-1.0.0/dlux/templates/dlux/users/_user_report_window.html +28 -0
  257. django_lux-1.0.0/dlux/templates/dlux/users/grouped_permissions.html +97 -0
  258. django_lux-1.0.0/dlux/templates/dlux/users/manage_users.html +176 -0
  259. django_lux-1.0.0/dlux/templates/dlux/users/profile.html +662 -0
  260. django_lux-1.0.0/dlux/templates/dlux/users/profile_image_widget.html +18 -0
  261. django_lux-1.0.0/dlux/templates/dlux/users/user_detail_modal.html +140 -0
  262. django_lux-1.0.0/dlux/templates/dlux/users/user_hub.html +59 -0
  263. django_lux-1.0.0/dlux/templates/dlux/users/user_report_modal.html +208 -0
  264. django_lux-1.0.0/dlux/templates/registration/email/verify_registration.txt +5 -0
  265. django_lux-1.0.0/dlux/templates/registration/login.html +105 -0
  266. django_lux-1.0.0/dlux/templates/registration/public_auth_base.html +66 -0
  267. django_lux-1.0.0/dlux/templates/registration/register.html +96 -0
  268. django_lux-1.0.0/dlux/templates/registration/register_sent.html +14 -0
  269. django_lux-1.0.0/dlux/templates/registration/register_verify.html +29 -0
  270. django_lux-1.0.0/dlux/templatetags/__init__.py +1 -0
  271. django_lux-1.0.0/dlux/templatetags/dlux_tags.py +155 -0
  272. django_lux-1.0.0/dlux/templatetags/dlux_translation.py +236 -0
  273. django_lux-1.0.0/dlux/templatetags/sidebar_tags.py +89 -0
  274. django_lux-1.0.0/dlux/themes.py +144 -0
  275. django_lux-1.0.0/dlux/translations.py +2633 -0
  276. django_lux-1.0.0/dlux/trust.py +213 -0
  277. django_lux-1.0.0/dlux/urls.py +116 -0
  278. django_lux-1.0.0/dlux/user_reports.py +324 -0
  279. django_lux-1.0.0/dlux/utils.py +4231 -0
  280. django_lux-1.0.0/dlux/views/__init__.py +100 -0
  281. django_lux-1.0.0/dlux/views/activitylog.py +142 -0
  282. django_lux-1.0.0/dlux/views/backup.py +253 -0
  283. django_lux-1.0.0/dlux/views/general.py +552 -0
  284. django_lux-1.0.0/dlux/views/profile.py +433 -0
  285. django_lux-1.0.0/dlux/views/registration.py +171 -0
  286. django_lux-1.0.0/dlux/views/reports.py +175 -0
  287. django_lux-1.0.0/dlux/views/scopes.py +152 -0
  288. django_lux-1.0.0/dlux/views/sections.py +1147 -0
  289. django_lux-1.0.0/dlux/views/sidebar.py +0 -0
  290. django_lux-1.0.0/dlux/views/twofa.py +811 -0
  291. django_lux-1.0.0/dlux/views/users.py +443 -0
  292. django_lux-1.0.0/dlux/widgets.py +271 -0
  293. django_lux-1.0.0/pyproject.toml +81 -0
  294. django_lux-1.0.0/setup.cfg +4 -0
@@ -0,0 +1,105 @@
1
+ # MIT License
2
+
3
+ Software: django-lux
4
+ Repository: https://github.com/debeski/django-lux
5
+ Author: DeBeski (micro)
6
+ Website: https://github.com/debeski
7
+ Copyright (c) 2026
8
+
9
+ ---
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ ---
30
+
31
+ # THIRD-PARTY NOTICES
32
+
33
+ This Software utilizes the following open-source packages. By using this Software,
34
+ you agree to the terms of their respective licenses:
35
+
36
+ ## Python Runtime Dependencies
37
+ The following Python dependencies are declared by the main `django-lux`
38
+ package and should retain their upstream license notices.
39
+
40
+ - Python (3.9+) - Python Software Foundation License (PSFL)
41
+ https://docs.python.org/3/license.html
42
+ - Django (5.1+) - BSD-3-Clause License
43
+ https://github.com/django/django/blob/main/LICENSE
44
+ - django-crispy-forms - MIT License
45
+ https://github.com/django-crispy-forms/django-crispy-forms/blob/main/LICENSE.txt
46
+ - crispy-bootstrap5 - MIT License
47
+ https://github.com/django-crispy-forms/crispy-bootstrap5/blob/main/LICENSE
48
+ - django-tables2 - BSD-2-Clause License
49
+ https://github.com/jieter/django-tables2/blob/master/LICENSE
50
+ - django-filter - BSD-3-Clause License
51
+ https://github.com/carltongibson/django-filter/blob/main/LICENSE
52
+ - psutil - BSD-3-Clause License
53
+ https://github.com/giampaolo/psutil/blob/master/LICENSE
54
+ - pyotp - MIT License
55
+ https://github.com/pyauth/pyotp/blob/main/LICENSE
56
+ - qrcode - BSD-3-Clause License
57
+ https://github.com/lincolnloop/python-qrcode/blob/main/LICENSE
58
+ - Pillow - HPND (Pillow License)
59
+ https://github.com/python-pillow/Pillow/blob/main/LICENSE
60
+ - Babel - BSD-3-Clause License
61
+ https://github.com/python-babel/babel/blob/master/LICENSE
62
+ - cryptography - Apache-2.0 OR BSD-3-Clause
63
+ https://github.com/pyca/cryptography/blob/main/LICENSE
64
+ - openpyxl - MIT License
65
+ https://foss.heptapod.net/openpyxl/openpyxl/-/blob/branch/default/LICENCE.rst
66
+
67
+ ## Bundled Frontend Assets
68
+ The following third-party frontend assets are bundled under `dlux/static/`
69
+ and should also retain their upstream license notices.
70
+
71
+ - Bootstrap - MIT License
72
+ https://github.com/twbs/bootstrap/blob/main/LICENSE
73
+ - Bootstrap Icons - MIT License
74
+ https://github.com/twbs/icons/blob/main/LICENSE
75
+ - vanillajs-datepicker - MIT License
76
+ https://github.com/mymth/vanillajs-datepicker/blob/master/LICENSE
77
+ - Driver.js - MIT License
78
+ https://github.com/nilbuild/driver.js/blob/master/license
79
+
80
+ ## Bundled Font Assets
81
+ The following bundled font assets should also retain their upstream license
82
+ notices and attribution where applicable.
83
+
84
+ - Cairo - SIL Open Font License 1.1
85
+ https://github.com/Gue3bara/Cairo/blob/main/OFL.txt
86
+ - Alexandria - SIL Open Font License 1.1
87
+ https://github.com/Gue3bara/Alexandria/blob/master/OFL.txt
88
+ - Changa - SIL Open Font License 1.1
89
+ https://github.com/google/fonts/blob/main/ofl/changa/OFL.txt
90
+ - Markazi Text - SIL Open Font License 1.1
91
+ https://github.com/google/fonts/blob/main/ofl/markazitext/OFL.txt
92
+ - Readex Pro - SIL Open Font License 1.1
93
+ https://github.com/google/fonts/blob/main/ofl/readexpro/OFL.txt
94
+ - Twemoji Country Flags / Twemoji Mozilla derived asset
95
+ Upstream references:
96
+ https://github.com/PasteBar/country-flags-emoji-polyfill-builder
97
+ https://github.com/mozilla/twemoji-colr/blob/master/LICENSE.md
98
+ https://github.com/twitter/twemoji/blob/master/LICENSE-GRAPHICS
99
+
100
+ ## Optional Package Note
101
+ This repository also includes optional packages under `optional_packages/`
102
+ with their own dependency trees, such as `django-lux-sso` and
103
+ `django-lux-sso-client`. If you distribute those optional packages, keep
104
+ their dependency notices aligned with their own `pyproject.toml` metadata as
105
+ well.
@@ -0,0 +1,19 @@
1
+ # Include the README so PyPI shows your long description
2
+ include README.md
3
+
4
+ # Include the license
5
+ include LICENSE
6
+
7
+ # Include all files inside the users package
8
+ recursive-include dlux *
9
+
10
+ # If you have templates inside the users app
11
+ recursive-include dlux/templates *
12
+
13
+ # If you have static files
14
+ recursive-include dlux/static *
15
+
16
+ # Keep test code and cache artifacts out of source distributions
17
+ prune dlux/tests
18
+ global-exclude __pycache__
19
+ global-exclude *.py[cod]
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.1
2
+ Name: django_lux
3
+ Version: 1.0.0
4
+ Summary: DjangoLux (System Integration Service) - Multilingual Django Starter Pack, Packed with Features.
5
+ Author-email: DeBeski <debeski1@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/debeski/django-lux
8
+ Keywords: django,dlux,permissions,authentication
9
+ Classifier: Framework :: Django
10
+ Classifier: Framework :: Django :: 5
11
+ Classifier: Framework :: Django :: 6
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Requires-Python: >=3.11
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: Django>=5.1
23
+ Requires-Dist: django-crispy-forms>=2.4
24
+ Requires-Dist: django-tables2>=2.7
25
+ Requires-Dist: django-filter>=24.3
26
+ Requires-Dist: crispy-bootstrap5>=2025.6
27
+ Requires-Dist: psutil>=7.0.0
28
+ Requires-Dist: pyotp>=2.9
29
+ Requires-Dist: qrcode>=8.2
30
+ Requires-Dist: pillow>=11.0
31
+ Requires-Dist: babel>=2.1
32
+ Requires-Dist: cryptography>=42.0
33
+ Requires-Dist: openpyxl>=3.1
34
+ Provides-Extra: sso
35
+ Requires-Dist: django-lux-sso>=0.1.0; extra == "sso"
36
+
37
+ # DjangoLux - System Integration Service
38
+
39
+ [![PyPI version](https://badge.fury.io/py/django-lux.svg)](https://pypi.org/project/django-lux/)
40
+
41
+ <p align="center">
42
+ <img src="https://raw.githubusercontent.com/debeski/django-lux/main/dlux/static/img/login_logo.webp" alt="DjangoLux Logo" width="450"/>
43
+ </p>
44
+
45
+ <p align="center">
46
+ <a href="https://chatgpt.com/g/g-6a14ac8cbb0c8191aad3b3619e5bef21-dlux-agent"><strong>Open DjangoLux Agent on ChatGPT</strong></a><br/>
47
+ <sub>Specialized custom GPT for django-lux integration, configuration, extension, and troubleshooting.</sub>
48
+ </p>
49
+
50
+ DjangoLux is a multilingual Django app that gives a project-level system layer for user management, branding, translations, scopes, navigation, activity logging, guided onboarding, data export, and dynamic CRUD tooling. It is not just a themed admin shell: it is a fairly large internal-systems toolkit that bundles runtime configuration, user operations, auditability, UI infrastructure, and zero-boilerplate management patterns into one package. The package keeps the landing README short, You can view the long-form operating and integration guidance at [`docs/`](docs/README.md).
51
+
52
+ ## What DjangoLux gives you
53
+
54
+ - A first-launch setup wizard at `/sys/setup/` for identity, explicit language catalog management, translation-matrix overrides, access/security toggles, UI-first Dlux email delivery, themes, default table density, global home URL, and sidebar structure, including full sidebar disable, runtime sidebar-toolbar, and user-reordering controls.
55
+ - A runtime system UI for users and superusers, including Options, user management, profiles, 2FA, activity logs, scopes, and system settings.
56
+ - A disabled-by-default public registration playground for email-first local signup with mandatory email verification, Dlux email readiness checks, public-account provenance badges, throttles, and optional approval.
57
+ - A database-backed `SystemSettings` singleton layered over `DLUX_CONFIG`, so projects can seed defaults in code and refine them in the UI later.
58
+ - A framework-owned `django_tables2` platform that auto-adopts stock tables, ships built-in pagination and per-page controls, exposes a public `DluxTable` base class, and supports per-table `dlux_table`, `dlux_density`, `dlux_per_page`, and `dlux_actions` overrides.
59
+ - A `ScopedModel` base with audit fields, soft-delete behavior, actor tracking, filtered managers, and automatic scope handling.
60
+ - Zero-boilerplate sections and dynamic modal CRUD flows for auxiliary models, plus a reusable context-menu/event model for richer interactions.
61
+ - A built-in audit trail with signal-based logging, merged User/Profile updates, diff capture, masked sensitive fields, and download/export log entries.
62
+ - Universal data helpers such as `fetch_file`, `fetch_excel`, sticky-form autofill, tutorial overlays, and persistent UI preferences.
63
+
64
+ ## Requirements
65
+ `note: all the requirements will be installed automatically when you install django-lux.`
66
+
67
+ - Python 3.11+
68
+ - Django 5.1+
69
+ - `django-crispy-forms`
70
+ - `crispy-bootstrap5`
71
+ - `django-tables2`
72
+ - `django-filter`
73
+ - `pillow` "for image handling"
74
+ - `babel` "for translations"
75
+ - `psutil` "for system monitoring"
76
+ - `pyotp` "for TOTP 2FA"
77
+ - `qrcode` "for TOTP 2FA QR codes"
78
+ - `cryptography` "for encrypted TOTP and SMTP secret storage"
79
+
80
+ ## Installation
81
+
82
+ ```bash
83
+ pip install django-lux
84
+ # OR
85
+ pip install git+https://github.com/debeski/django-lux.git
86
+ ```
87
+
88
+ ## Scaffold a New Project or App
89
+
90
+ ```bash
91
+ python -m dlux startproject myproject
92
+ cd myproject
93
+ python -m dlux startapp billing --register
94
+ ```
95
+
96
+ `python -m dlux startproject` creates a new Django project already wired for DjangoLux. `python -m dlux startapp` creates a DjangoLux-native app skeleton with models, forms, filters, tables, translations, templates, tests, and optional project registration.
97
+
98
+ Generated projects also include a baseline Docker stack with `compose.yml`, `compose.dev.yml`, a `config/celery.py` worker entrypoint, and a `/health/` endpoint via `django-health-check`.
99
+ They also generate `.secrets/.env` with the bootstrap secrets used by the standard decrypter/startup flow.
100
+ The scaffolded settings baseline now also includes `django-cors-headers` and `django-csp` with their apps, middleware, and starter CORS/CSP policy settings.
101
+
102
+ ## Minimal Quick Start
103
+
104
+ 1. Add the DjangoLux helper at the end of your project `settings.py`.
105
+
106
+ ```python
107
+ from dlux.utils import dlux_settings
108
+
109
+ dlux_settings(globals())
110
+ ```
111
+
112
+ That helper prepends the required apps, inserts `django.middleware.locale.LocaleMiddleware` and `dlux.middleware.DluxMiddleware` in the supported order, adds the Dlux context processor, sets the Crispy Bootstrap 5 defaults, adds a Bootstrap-friendly `MESSAGE_TAGS` error mapping, and seeds the standard DjangoLux runtime defaults for language, timezone, i18n/tz flags, `FORMAT_MODULE_PATH`, and charset unless your project already defines them.
113
+
114
+ __Proceed to [Getting Started](docs/getting-started.md) if you prefer to wire everything manually.__
115
+
116
+ Public registration is documented separately at [Public Registration Playground](docs/registration.md). It is disabled by default and is not part of the optional SSO packages.
117
+
118
+
119
+ 2. Mount `dlux.urls` at project root so the bundled auth and system routes stay at `/accounts/...` and `/sys/...`.
120
+
121
+ ```python
122
+ from django.urls import include, path
123
+
124
+ urlpatterns = [
125
+ path("", include("dlux.urls")),
126
+ ]
127
+ ```
128
+
129
+ With that root include in place, dlux provides `/accounts/...` and `/sys/...`. If your project does not define its own `/` view, dlux falls back from an unresolved `/` request into its login/setup flow instead of leaving a 404. On a fresh and unconfigured install, Dlux also guards ordinary anonymous requests so a public root page cannot bypass first-time setup; once setup is complete, your existing root view continues to behave normally.
130
+
131
+ 3. Run the setup command.
132
+
133
+ ```bash
134
+ python manage.py dlux_setup
135
+ ```
136
+
137
+ 4. Sign in as a superuser and complete the first-launch wizard at `/sys/setup/`. On a fresh install, an anonymous request may be sent through `/sys/setup/` and then to login before the wizard can be completed. After setup, the main runtime UI lives under `user_hub`.
138
+
139
+ For a fuller setup path, prefix-mount guidance, and first-launch expectations, use the [Getting Started guide](docs/getting-started.md).
140
+
141
+
142
+ ## Key Capabilities
143
+
144
+ - Onboarding and runtime configuration:
145
+ first-launch setup wizard, Options view, runtime System Settings modal, source-tabbed translation overrides, setup import/export, language/theme defaults, and a global Home destination.
146
+ - User and security operations:
147
+ interactive user wizard, grouped translated permissions, four-tier staff authorization (superuser, Global Staff, Central Staff, Scoped Staff), permission-based sidebar visibility, profile management, multiple 2FA flows (App, Email, Backup), trusted device tracking for 30 days, and runtime preference persistence.
148
+ - Generic CRUD infrastructure:
149
+ dynamic sections, AJAX-driven modal CRUD, automatic form/table/filter discovery, context-menu actions, and reusable event dispatch.
150
+ - Navigation and UI infrastructure:
151
+ resolver-driven sidebar builder with permission-based visibility, runtime tree rendering, optional user-level reordering, configurable sidebar toolbar visibility, a shared theme registry, tutorial overlays, theme-aware system surfaces, and template injection hooks.
152
+ - Data movement and productivity helpers:
153
+ universal file download, Excel export, smart autofill, sticky-form cloning, and generic list/filter helpers.
154
+ - Audit and governance:
155
+ signal-based activity logging with configurable IP resolution (direct/proxy/header), diff capture, masked sensitive fields, deduplicated entries, download/export logging, and scoped visibility.
156
+ - Optional SSO:
157
+ `django-lux-sso` and `django-lux-sso-client` live as separate optional packages for OIDC provider/client deployments without changing core Dlux runtime behavior.
158
+ - Standalone backup viewer:
159
+ `tools/dlb-viewer/` is a dependency-free, cross-platform binary for inspecting encrypted `.dlb` system backups offline — browse models, rows, and stored files without a running instance. Prebuilt binaries ship with each release.
160
+ - Framework-level automation:
161
+ translation patches, scoped-model auto-injection, actor tracking, soft-delete, and config layering across defaults, project settings, and runtime UI.
162
+
163
+ ## Documentation
164
+
165
+ - [Documentation Hub](docs/README.md)
166
+ - [Security Policy](SECURITY.md)
167
+ - [Contributing Guide](CONTRIBUTING.md)
168
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
169
+ - [Getting Started](docs/getting-started.md)
170
+ - [Admin Guide](docs/admin-guide.md)
171
+ - [Developer Guide](docs/developer-guide.md)
172
+ - [Customization Guide](docs/customization-guide.md)
173
+ - [Reference](docs/reference.md)
174
+ - [MSRP-1 Security Standard](docs/security-msrp-1.md)
175
+ - [Optional SSO Packages](docs/sso.md)
176
+ - [Standalone .dlb Backup Viewer](tools/dlb-viewer/README.md)
177
+ - [Releasing](docs/RELEASING.md) — tag-driven PyPI + GitHub release flow
178
+ - [Migrating from django-microsys](docs/migrating-from-microsys.md) — in-place upgrade for existing deployments
179
+ - [Features](docs/FEATURES.md) — complete feature inventory
180
+ - [Changelog](CHANGELOG.md)
@@ -0,0 +1,144 @@
1
+ # DjangoLux - System Integration Service
2
+
3
+ [![PyPI version](https://badge.fury.io/py/django-lux.svg)](https://pypi.org/project/django-lux/)
4
+
5
+ <p align="center">
6
+ <img src="https://raw.githubusercontent.com/debeski/django-lux/main/dlux/static/img/login_logo.webp" alt="DjangoLux Logo" width="450"/>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://chatgpt.com/g/g-6a14ac8cbb0c8191aad3b3619e5bef21-dlux-agent"><strong>Open DjangoLux Agent on ChatGPT</strong></a><br/>
11
+ <sub>Specialized custom GPT for django-lux integration, configuration, extension, and troubleshooting.</sub>
12
+ </p>
13
+
14
+ DjangoLux is a multilingual Django app that gives a project-level system layer for user management, branding, translations, scopes, navigation, activity logging, guided onboarding, data export, and dynamic CRUD tooling. It is not just a themed admin shell: it is a fairly large internal-systems toolkit that bundles runtime configuration, user operations, auditability, UI infrastructure, and zero-boilerplate management patterns into one package. The package keeps the landing README short, You can view the long-form operating and integration guidance at [`docs/`](docs/README.md).
15
+
16
+ ## What DjangoLux gives you
17
+
18
+ - A first-launch setup wizard at `/sys/setup/` for identity, explicit language catalog management, translation-matrix overrides, access/security toggles, UI-first Dlux email delivery, themes, default table density, global home URL, and sidebar structure, including full sidebar disable, runtime sidebar-toolbar, and user-reordering controls.
19
+ - A runtime system UI for users and superusers, including Options, user management, profiles, 2FA, activity logs, scopes, and system settings.
20
+ - A disabled-by-default public registration playground for email-first local signup with mandatory email verification, Dlux email readiness checks, public-account provenance badges, throttles, and optional approval.
21
+ - A database-backed `SystemSettings` singleton layered over `DLUX_CONFIG`, so projects can seed defaults in code and refine them in the UI later.
22
+ - A framework-owned `django_tables2` platform that auto-adopts stock tables, ships built-in pagination and per-page controls, exposes a public `DluxTable` base class, and supports per-table `dlux_table`, `dlux_density`, `dlux_per_page`, and `dlux_actions` overrides.
23
+ - A `ScopedModel` base with audit fields, soft-delete behavior, actor tracking, filtered managers, and automatic scope handling.
24
+ - Zero-boilerplate sections and dynamic modal CRUD flows for auxiliary models, plus a reusable context-menu/event model for richer interactions.
25
+ - A built-in audit trail with signal-based logging, merged User/Profile updates, diff capture, masked sensitive fields, and download/export log entries.
26
+ - Universal data helpers such as `fetch_file`, `fetch_excel`, sticky-form autofill, tutorial overlays, and persistent UI preferences.
27
+
28
+ ## Requirements
29
+ `note: all the requirements will be installed automatically when you install django-lux.`
30
+
31
+ - Python 3.11+
32
+ - Django 5.1+
33
+ - `django-crispy-forms`
34
+ - `crispy-bootstrap5`
35
+ - `django-tables2`
36
+ - `django-filter`
37
+ - `pillow` "for image handling"
38
+ - `babel` "for translations"
39
+ - `psutil` "for system monitoring"
40
+ - `pyotp` "for TOTP 2FA"
41
+ - `qrcode` "for TOTP 2FA QR codes"
42
+ - `cryptography` "for encrypted TOTP and SMTP secret storage"
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ pip install django-lux
48
+ # OR
49
+ pip install git+https://github.com/debeski/django-lux.git
50
+ ```
51
+
52
+ ## Scaffold a New Project or App
53
+
54
+ ```bash
55
+ python -m dlux startproject myproject
56
+ cd myproject
57
+ python -m dlux startapp billing --register
58
+ ```
59
+
60
+ `python -m dlux startproject` creates a new Django project already wired for DjangoLux. `python -m dlux startapp` creates a DjangoLux-native app skeleton with models, forms, filters, tables, translations, templates, tests, and optional project registration.
61
+
62
+ Generated projects also include a baseline Docker stack with `compose.yml`, `compose.dev.yml`, a `config/celery.py` worker entrypoint, and a `/health/` endpoint via `django-health-check`.
63
+ They also generate `.secrets/.env` with the bootstrap secrets used by the standard decrypter/startup flow.
64
+ The scaffolded settings baseline now also includes `django-cors-headers` and `django-csp` with their apps, middleware, and starter CORS/CSP policy settings.
65
+
66
+ ## Minimal Quick Start
67
+
68
+ 1. Add the DjangoLux helper at the end of your project `settings.py`.
69
+
70
+ ```python
71
+ from dlux.utils import dlux_settings
72
+
73
+ dlux_settings(globals())
74
+ ```
75
+
76
+ That helper prepends the required apps, inserts `django.middleware.locale.LocaleMiddleware` and `dlux.middleware.DluxMiddleware` in the supported order, adds the Dlux context processor, sets the Crispy Bootstrap 5 defaults, adds a Bootstrap-friendly `MESSAGE_TAGS` error mapping, and seeds the standard DjangoLux runtime defaults for language, timezone, i18n/tz flags, `FORMAT_MODULE_PATH`, and charset unless your project already defines them.
77
+
78
+ __Proceed to [Getting Started](docs/getting-started.md) if you prefer to wire everything manually.__
79
+
80
+ Public registration is documented separately at [Public Registration Playground](docs/registration.md). It is disabled by default and is not part of the optional SSO packages.
81
+
82
+
83
+ 2. Mount `dlux.urls` at project root so the bundled auth and system routes stay at `/accounts/...` and `/sys/...`.
84
+
85
+ ```python
86
+ from django.urls import include, path
87
+
88
+ urlpatterns = [
89
+ path("", include("dlux.urls")),
90
+ ]
91
+ ```
92
+
93
+ With that root include in place, dlux provides `/accounts/...` and `/sys/...`. If your project does not define its own `/` view, dlux falls back from an unresolved `/` request into its login/setup flow instead of leaving a 404. On a fresh and unconfigured install, Dlux also guards ordinary anonymous requests so a public root page cannot bypass first-time setup; once setup is complete, your existing root view continues to behave normally.
94
+
95
+ 3. Run the setup command.
96
+
97
+ ```bash
98
+ python manage.py dlux_setup
99
+ ```
100
+
101
+ 4. Sign in as a superuser and complete the first-launch wizard at `/sys/setup/`. On a fresh install, an anonymous request may be sent through `/sys/setup/` and then to login before the wizard can be completed. After setup, the main runtime UI lives under `user_hub`.
102
+
103
+ For a fuller setup path, prefix-mount guidance, and first-launch expectations, use the [Getting Started guide](docs/getting-started.md).
104
+
105
+
106
+ ## Key Capabilities
107
+
108
+ - Onboarding and runtime configuration:
109
+ first-launch setup wizard, Options view, runtime System Settings modal, source-tabbed translation overrides, setup import/export, language/theme defaults, and a global Home destination.
110
+ - User and security operations:
111
+ interactive user wizard, grouped translated permissions, four-tier staff authorization (superuser, Global Staff, Central Staff, Scoped Staff), permission-based sidebar visibility, profile management, multiple 2FA flows (App, Email, Backup), trusted device tracking for 30 days, and runtime preference persistence.
112
+ - Generic CRUD infrastructure:
113
+ dynamic sections, AJAX-driven modal CRUD, automatic form/table/filter discovery, context-menu actions, and reusable event dispatch.
114
+ - Navigation and UI infrastructure:
115
+ resolver-driven sidebar builder with permission-based visibility, runtime tree rendering, optional user-level reordering, configurable sidebar toolbar visibility, a shared theme registry, tutorial overlays, theme-aware system surfaces, and template injection hooks.
116
+ - Data movement and productivity helpers:
117
+ universal file download, Excel export, smart autofill, sticky-form cloning, and generic list/filter helpers.
118
+ - Audit and governance:
119
+ signal-based activity logging with configurable IP resolution (direct/proxy/header), diff capture, masked sensitive fields, deduplicated entries, download/export logging, and scoped visibility.
120
+ - Optional SSO:
121
+ `django-lux-sso` and `django-lux-sso-client` live as separate optional packages for OIDC provider/client deployments without changing core Dlux runtime behavior.
122
+ - Standalone backup viewer:
123
+ `tools/dlb-viewer/` is a dependency-free, cross-platform binary for inspecting encrypted `.dlb` system backups offline — browse models, rows, and stored files without a running instance. Prebuilt binaries ship with each release.
124
+ - Framework-level automation:
125
+ translation patches, scoped-model auto-injection, actor tracking, soft-delete, and config layering across defaults, project settings, and runtime UI.
126
+
127
+ ## Documentation
128
+
129
+ - [Documentation Hub](docs/README.md)
130
+ - [Security Policy](SECURITY.md)
131
+ - [Contributing Guide](CONTRIBUTING.md)
132
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
133
+ - [Getting Started](docs/getting-started.md)
134
+ - [Admin Guide](docs/admin-guide.md)
135
+ - [Developer Guide](docs/developer-guide.md)
136
+ - [Customization Guide](docs/customization-guide.md)
137
+ - [Reference](docs/reference.md)
138
+ - [MSRP-1 Security Standard](docs/security-msrp-1.md)
139
+ - [Optional SSO Packages](docs/sso.md)
140
+ - [Standalone .dlb Backup Viewer](tools/dlb-viewer/README.md)
141
+ - [Releasing](docs/RELEASING.md) — tag-driven PyPI + GitHub release flow
142
+ - [Migrating from django-microsys](docs/migrating-from-microsys.md) — in-place upgrade for existing deployments
143
+ - [Features](docs/FEATURES.md) — complete feature inventory
144
+ - [Changelog](CHANGELOG.md)
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.1
2
+ Name: django-lux
3
+ Version: 1.0.0
4
+ Summary: DjangoLux (System Integration Service) - Multilingual Django Starter Pack, Packed with Features.
5
+ Author-email: DeBeski <debeski1@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/debeski/django-lux
8
+ Keywords: django,dlux,permissions,authentication
9
+ Classifier: Framework :: Django
10
+ Classifier: Framework :: Django :: 5
11
+ Classifier: Framework :: Django :: 6
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Requires-Python: >=3.11
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: Django>=5.1
23
+ Requires-Dist: django-crispy-forms>=2.4
24
+ Requires-Dist: django-tables2>=2.7
25
+ Requires-Dist: django-filter>=24.3
26
+ Requires-Dist: crispy-bootstrap5>=2025.6
27
+ Requires-Dist: psutil>=7.0.0
28
+ Requires-Dist: pyotp>=2.9
29
+ Requires-Dist: qrcode>=8.2
30
+ Requires-Dist: pillow>=11.0
31
+ Requires-Dist: babel>=2.1
32
+ Requires-Dist: cryptography>=42.0
33
+ Requires-Dist: openpyxl>=3.1
34
+ Provides-Extra: sso
35
+ Requires-Dist: django-lux-sso>=0.1.0; extra == "sso"
36
+
37
+ # DjangoLux - System Integration Service
38
+
39
+ [![PyPI version](https://badge.fury.io/py/django-lux.svg)](https://pypi.org/project/django-lux/)
40
+
41
+ <p align="center">
42
+ <img src="https://raw.githubusercontent.com/debeski/django-lux/main/dlux/static/img/login_logo.webp" alt="DjangoLux Logo" width="450"/>
43
+ </p>
44
+
45
+ <p align="center">
46
+ <a href="https://chatgpt.com/g/g-6a14ac8cbb0c8191aad3b3619e5bef21-dlux-agent"><strong>Open DjangoLux Agent on ChatGPT</strong></a><br/>
47
+ <sub>Specialized custom GPT for django-lux integration, configuration, extension, and troubleshooting.</sub>
48
+ </p>
49
+
50
+ DjangoLux is a multilingual Django app that gives a project-level system layer for user management, branding, translations, scopes, navigation, activity logging, guided onboarding, data export, and dynamic CRUD tooling. It is not just a themed admin shell: it is a fairly large internal-systems toolkit that bundles runtime configuration, user operations, auditability, UI infrastructure, and zero-boilerplate management patterns into one package. The package keeps the landing README short, You can view the long-form operating and integration guidance at [`docs/`](docs/README.md).
51
+
52
+ ## What DjangoLux gives you
53
+
54
+ - A first-launch setup wizard at `/sys/setup/` for identity, explicit language catalog management, translation-matrix overrides, access/security toggles, UI-first Dlux email delivery, themes, default table density, global home URL, and sidebar structure, including full sidebar disable, runtime sidebar-toolbar, and user-reordering controls.
55
+ - A runtime system UI for users and superusers, including Options, user management, profiles, 2FA, activity logs, scopes, and system settings.
56
+ - A disabled-by-default public registration playground for email-first local signup with mandatory email verification, Dlux email readiness checks, public-account provenance badges, throttles, and optional approval.
57
+ - A database-backed `SystemSettings` singleton layered over `DLUX_CONFIG`, so projects can seed defaults in code and refine them in the UI later.
58
+ - A framework-owned `django_tables2` platform that auto-adopts stock tables, ships built-in pagination and per-page controls, exposes a public `DluxTable` base class, and supports per-table `dlux_table`, `dlux_density`, `dlux_per_page`, and `dlux_actions` overrides.
59
+ - A `ScopedModel` base with audit fields, soft-delete behavior, actor tracking, filtered managers, and automatic scope handling.
60
+ - Zero-boilerplate sections and dynamic modal CRUD flows for auxiliary models, plus a reusable context-menu/event model for richer interactions.
61
+ - A built-in audit trail with signal-based logging, merged User/Profile updates, diff capture, masked sensitive fields, and download/export log entries.
62
+ - Universal data helpers such as `fetch_file`, `fetch_excel`, sticky-form autofill, tutorial overlays, and persistent UI preferences.
63
+
64
+ ## Requirements
65
+ `note: all the requirements will be installed automatically when you install django-lux.`
66
+
67
+ - Python 3.11+
68
+ - Django 5.1+
69
+ - `django-crispy-forms`
70
+ - `crispy-bootstrap5`
71
+ - `django-tables2`
72
+ - `django-filter`
73
+ - `pillow` "for image handling"
74
+ - `babel` "for translations"
75
+ - `psutil` "for system monitoring"
76
+ - `pyotp` "for TOTP 2FA"
77
+ - `qrcode` "for TOTP 2FA QR codes"
78
+ - `cryptography` "for encrypted TOTP and SMTP secret storage"
79
+
80
+ ## Installation
81
+
82
+ ```bash
83
+ pip install django-lux
84
+ # OR
85
+ pip install git+https://github.com/debeski/django-lux.git
86
+ ```
87
+
88
+ ## Scaffold a New Project or App
89
+
90
+ ```bash
91
+ python -m dlux startproject myproject
92
+ cd myproject
93
+ python -m dlux startapp billing --register
94
+ ```
95
+
96
+ `python -m dlux startproject` creates a new Django project already wired for DjangoLux. `python -m dlux startapp` creates a DjangoLux-native app skeleton with models, forms, filters, tables, translations, templates, tests, and optional project registration.
97
+
98
+ Generated projects also include a baseline Docker stack with `compose.yml`, `compose.dev.yml`, a `config/celery.py` worker entrypoint, and a `/health/` endpoint via `django-health-check`.
99
+ They also generate `.secrets/.env` with the bootstrap secrets used by the standard decrypter/startup flow.
100
+ The scaffolded settings baseline now also includes `django-cors-headers` and `django-csp` with their apps, middleware, and starter CORS/CSP policy settings.
101
+
102
+ ## Minimal Quick Start
103
+
104
+ 1. Add the DjangoLux helper at the end of your project `settings.py`.
105
+
106
+ ```python
107
+ from dlux.utils import dlux_settings
108
+
109
+ dlux_settings(globals())
110
+ ```
111
+
112
+ That helper prepends the required apps, inserts `django.middleware.locale.LocaleMiddleware` and `dlux.middleware.DluxMiddleware` in the supported order, adds the Dlux context processor, sets the Crispy Bootstrap 5 defaults, adds a Bootstrap-friendly `MESSAGE_TAGS` error mapping, and seeds the standard DjangoLux runtime defaults for language, timezone, i18n/tz flags, `FORMAT_MODULE_PATH`, and charset unless your project already defines them.
113
+
114
+ __Proceed to [Getting Started](docs/getting-started.md) if you prefer to wire everything manually.__
115
+
116
+ Public registration is documented separately at [Public Registration Playground](docs/registration.md). It is disabled by default and is not part of the optional SSO packages.
117
+
118
+
119
+ 2. Mount `dlux.urls` at project root so the bundled auth and system routes stay at `/accounts/...` and `/sys/...`.
120
+
121
+ ```python
122
+ from django.urls import include, path
123
+
124
+ urlpatterns = [
125
+ path("", include("dlux.urls")),
126
+ ]
127
+ ```
128
+
129
+ With that root include in place, dlux provides `/accounts/...` and `/sys/...`. If your project does not define its own `/` view, dlux falls back from an unresolved `/` request into its login/setup flow instead of leaving a 404. On a fresh and unconfigured install, Dlux also guards ordinary anonymous requests so a public root page cannot bypass first-time setup; once setup is complete, your existing root view continues to behave normally.
130
+
131
+ 3. Run the setup command.
132
+
133
+ ```bash
134
+ python manage.py dlux_setup
135
+ ```
136
+
137
+ 4. Sign in as a superuser and complete the first-launch wizard at `/sys/setup/`. On a fresh install, an anonymous request may be sent through `/sys/setup/` and then to login before the wizard can be completed. After setup, the main runtime UI lives under `user_hub`.
138
+
139
+ For a fuller setup path, prefix-mount guidance, and first-launch expectations, use the [Getting Started guide](docs/getting-started.md).
140
+
141
+
142
+ ## Key Capabilities
143
+
144
+ - Onboarding and runtime configuration:
145
+ first-launch setup wizard, Options view, runtime System Settings modal, source-tabbed translation overrides, setup import/export, language/theme defaults, and a global Home destination.
146
+ - User and security operations:
147
+ interactive user wizard, grouped translated permissions, four-tier staff authorization (superuser, Global Staff, Central Staff, Scoped Staff), permission-based sidebar visibility, profile management, multiple 2FA flows (App, Email, Backup), trusted device tracking for 30 days, and runtime preference persistence.
148
+ - Generic CRUD infrastructure:
149
+ dynamic sections, AJAX-driven modal CRUD, automatic form/table/filter discovery, context-menu actions, and reusable event dispatch.
150
+ - Navigation and UI infrastructure:
151
+ resolver-driven sidebar builder with permission-based visibility, runtime tree rendering, optional user-level reordering, configurable sidebar toolbar visibility, a shared theme registry, tutorial overlays, theme-aware system surfaces, and template injection hooks.
152
+ - Data movement and productivity helpers:
153
+ universal file download, Excel export, smart autofill, sticky-form cloning, and generic list/filter helpers.
154
+ - Audit and governance:
155
+ signal-based activity logging with configurable IP resolution (direct/proxy/header), diff capture, masked sensitive fields, deduplicated entries, download/export logging, and scoped visibility.
156
+ - Optional SSO:
157
+ `django-lux-sso` and `django-lux-sso-client` live as separate optional packages for OIDC provider/client deployments without changing core Dlux runtime behavior.
158
+ - Standalone backup viewer:
159
+ `tools/dlb-viewer/` is a dependency-free, cross-platform binary for inspecting encrypted `.dlb` system backups offline — browse models, rows, and stored files without a running instance. Prebuilt binaries ship with each release.
160
+ - Framework-level automation:
161
+ translation patches, scoped-model auto-injection, actor tracking, soft-delete, and config layering across defaults, project settings, and runtime UI.
162
+
163
+ ## Documentation
164
+
165
+ - [Documentation Hub](docs/README.md)
166
+ - [Security Policy](SECURITY.md)
167
+ - [Contributing Guide](CONTRIBUTING.md)
168
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
169
+ - [Getting Started](docs/getting-started.md)
170
+ - [Admin Guide](docs/admin-guide.md)
171
+ - [Developer Guide](docs/developer-guide.md)
172
+ - [Customization Guide](docs/customization-guide.md)
173
+ - [Reference](docs/reference.md)
174
+ - [MSRP-1 Security Standard](docs/security-msrp-1.md)
175
+ - [Optional SSO Packages](docs/sso.md)
176
+ - [Standalone .dlb Backup Viewer](tools/dlb-viewer/README.md)
177
+ - [Releasing](docs/RELEASING.md) — tag-driven PyPI + GitHub release flow
178
+ - [Migrating from django-microsys](docs/migrating-from-microsys.md) — in-place upgrade for existing deployments
179
+ - [Features](docs/FEATURES.md) — complete feature inventory
180
+ - [Changelog](CHANGELOG.md)