django-microsys 2.2.4__tar.gz → 2.2.6__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 (295) hide show
  1. django_microsys-2.2.6/LICENSE +105 -0
  2. {django_microsys-2.2.4 → django_microsys-2.2.6}/PKG-INFO +4 -3
  3. {django_microsys-2.2.4 → django_microsys-2.2.6}/django_microsys.egg-info/PKG-INFO +4 -3
  4. {django_microsys-2.2.4 → django_microsys-2.2.6}/django_microsys.egg-info/SOURCES.txt +22 -3
  5. {django_microsys-2.2.4 → django_microsys-2.2.6}/django_microsys.egg-info/requires.txt +1 -0
  6. django_microsys-2.2.6/microsys/VERSION +1 -0
  7. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/constants.py +13 -0
  8. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/context_processors.py +25 -8
  9. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/fonts.py +49 -10
  10. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/forms.py +147 -0
  11. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/management/commands/microsys_settings.py +1 -0
  12. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/middleware.py +12 -41
  13. django_microsys-2.2.6/microsys/migrations/0007_systemsettings_prevent_multiple_active_sessions.py +18 -0
  14. django_microsys-2.2.6/microsys/migrations/0008_user_device_presence_history.py +85 -0
  15. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/models.py +92 -0
  16. django_microsys-2.2.6/microsys/session_history.py +319 -0
  17. django_microsys-2.2.6/microsys/static/microsys/fonts/Alexandria-Bold.woff2 +0 -0
  18. django_microsys-2.2.6/microsys/static/microsys/fonts/Alexandria-Medium.woff2 +0 -0
  19. django_microsys-2.2.6/microsys/static/microsys/fonts/Alexandria-Regular.woff2 +0 -0
  20. django_microsys-2.2.6/microsys/static/microsys/fonts/Changa-Bold.woff2 +0 -0
  21. django_microsys-2.2.6/microsys/static/microsys/fonts/Changa-Medium.woff2 +0 -0
  22. django_microsys-2.2.6/microsys/static/microsys/fonts/Changa-Regular.woff2 +0 -0
  23. django_microsys-2.2.6/microsys/static/microsys/fonts/MarkaziText-Bold.woff2 +0 -0
  24. django_microsys-2.2.6/microsys/static/microsys/fonts/MarkaziText-Medium.woff2 +0 -0
  25. django_microsys-2.2.6/microsys/static/microsys/fonts/MarkaziText-Regular.woff2 +0 -0
  26. django_microsys-2.2.6/microsys/static/microsys/fonts/ReadexPro-Bold.woff2 +0 -0
  27. django_microsys-2.2.6/microsys/static/microsys/fonts/ReadexPro-Medium.woff2 +0 -0
  28. django_microsys-2.2.6/microsys/static/microsys/fonts/ReadexPro-Regular.woff2 +0 -0
  29. django_microsys-2.2.6/microsys/static/microsys/helpers/tooltip/css/main.css +87 -0
  30. django_microsys-2.2.6/microsys/static/microsys/helpers/tooltip/js/main.js +265 -0
  31. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/buttons.css +40 -0
  32. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/main.css +19 -18
  33. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/options.css +19 -0
  34. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/system_setup.css +20 -5
  35. django_microsys-2.2.6/microsys/static/microsys/main/css/template_cleanup.css +267 -0
  36. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/titlebar.css +37 -0
  37. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/base_head.js +4 -1
  38. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/options.js +4 -2
  39. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/system_setup.js +25 -2
  40. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/css/main.css +0 -8
  41. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/main.js +7 -13
  42. django_microsys-2.2.6/microsys/static/microsys/themes/css/aether.css +1310 -0
  43. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/dark.css +33 -9
  44. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/gothic.css +23 -0
  45. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/mono.css +3 -0
  46. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/neon.css +26 -0
  47. django_microsys-2.2.6/microsys/static/microsys/themes/css/prism.css +1195 -0
  48. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/retro.css +18 -0
  49. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/tutorial/css/main.css +3 -3
  50. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/tutorial/js/main.js +3 -3
  51. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/css/permissions.css +5 -2
  52. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/css/user_hub.css +0 -45
  53. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/manage_users.js +75 -0
  54. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/profile_2fa.js +46 -3
  55. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/user_hub.js +1 -32
  56. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/tables.py +11 -0
  57. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/base.html +13 -9
  58. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/titlebar.html +2 -0
  59. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/main.html +2 -2
  60. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/users/manage_users.html +1 -1
  61. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/users/profile.html +25 -5
  62. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/users/user_detail_modal.html +8 -0
  63. django_microsys-2.2.6/microsys/templates/microsys/users/user_report_modal.html +202 -0
  64. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/themes.py +14 -0
  65. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/translations.py +178 -0
  66. django_microsys-2.2.6/microsys/trust.py +210 -0
  67. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/urls.py +3 -0
  68. django_microsys-2.2.6/microsys/user_reports.py +282 -0
  69. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/utils.py +37 -2
  70. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/__init__.py +3 -1
  71. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/profile.py +84 -32
  72. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/twofa.py +17 -102
  73. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/users.py +42 -0
  74. {django_microsys-2.2.4 → django_microsys-2.2.6}/pyproject.toml +3 -2
  75. django_microsys-2.2.4/LICENSE +0 -65
  76. django_microsys-2.2.4/microsys/VERSION +0 -1
  77. django_microsys-2.2.4/microsys/static/microsys/fonts/shabwa-bold.woff2 +0 -0
  78. django_microsys-2.2.4/microsys/static/microsys/fonts/shabwa-medium.woff2 +0 -0
  79. django_microsys-2.2.4/microsys/static/microsys/fonts/shabwa-regular.woff2 +0 -0
  80. django_microsys-2.2.4/microsys/static/microsys/main/css/template_cleanup.css +0 -121
  81. {django_microsys-2.2.4 → django_microsys-2.2.6}/MANIFEST.in +0 -0
  82. {django_microsys-2.2.4 → django_microsys-2.2.6}/README.md +0 -0
  83. {django_microsys-2.2.4 → django_microsys-2.2.6}/django_microsys.egg-info/dependency_links.txt +0 -0
  84. {django_microsys-2.2.4 → django_microsys-2.2.6}/django_microsys.egg-info/entry_points.txt +0 -0
  85. {django_microsys-2.2.4 → django_microsys-2.2.6}/django_microsys.egg-info/top_level.txt +0 -0
  86. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/__init__.py +0 -0
  87. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/__main__.py +0 -0
  88. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/admin.py +0 -0
  89. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/api.py +0 -0
  90. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/apps.py +0 -0
  91. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/cli.py +0 -0
  92. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/discovery.py +0 -0
  93. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/fetcher.py +0 -0
  94. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/filters.py +0 -0
  95. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/formats/__init__.py +0 -0
  96. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/formats/ar/__init__.py +0 -0
  97. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/formats/ar/formats.py +0 -0
  98. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/formats/en/__init__.py +0 -0
  99. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/formats/en/formats.py +0 -0
  100. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/guards.py +0 -0
  101. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/management/commands/__init__.py +0 -0
  102. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/management/commands/microsys_check.py +0 -0
  103. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/management/commands/microsys_setup.py +0 -0
  104. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/management/commands/migrator.py +0 -0
  105. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/management/commands/seed_activity_log.py +0 -0
  106. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/managers.py +0 -0
  107. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/0001_initial.py +0 -0
  108. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/0002_public_registration.py +0 -0
  109. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/0003_public_root_split.py +0 -0
  110. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/0004_client_ip_and_trusted_devices.py +0 -0
  111. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/0005_systemsettings_allow_user_font_override_and_more.py +0 -0
  112. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/0006_systemsettings_navbar_config.py +0 -0
  113. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/migrations/__init__.py +0 -0
  114. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/navbar.py +0 -0
  115. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/patches.py +0 -0
  116. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/registration.py +0 -0
  117. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold.py +0 -0
  118. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/README.md.tmpl +0 -0
  119. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/__init__.py.tmpl +0 -0
  120. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/apps.py.tmpl +0 -0
  121. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/filters.py.tmpl +0 -0
  122. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/forms.py.tmpl +0 -0
  123. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/migrations/__init__.py.tmpl +0 -0
  124. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/models.py.tmpl +0 -0
  125. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/tables.py.tmpl +0 -0
  126. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_confirm_delete.html.tmpl +0 -0
  127. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_detail.html.tmpl +0 -0
  128. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_form.html.tmpl +0 -0
  129. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_list.html.tmpl +0 -0
  130. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/tests/__init__.py.tmpl +0 -0
  131. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/tests/test_app.py.tmpl +0 -0
  132. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/translations.py.tmpl +0 -0
  133. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/urls.py.tmpl +0 -0
  134. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/app/views.py.tmpl +0 -0
  135. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/.nginx/nginx.conf.tmpl +0 -0
  136. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/.secrets/.env.tmpl +0 -0
  137. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/Dockerfile.tmpl +0 -0
  138. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/README.md.tmpl +0 -0
  139. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/compose.dev.yml.tmpl +0 -0
  140. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/compose.yml.tmpl +0 -0
  141. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/dockerignore.tmpl +0 -0
  142. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/docs/README.md.tmpl +0 -0
  143. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/entrypoint.sh.tmpl +0 -0
  144. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/gitattributes.tmpl +0 -0
  145. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/gitignore.tmpl +0 -0
  146. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/gunicorn.py.tmpl +0 -0
  147. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/manage.py.tmpl +0 -0
  148. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/__init__.py.tmpl +0 -0
  149. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/asgi.py.tmpl +0 -0
  150. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/celery.py.tmpl +0 -0
  151. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/settings.py.tmpl +0 -0
  152. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/urls.py.tmpl +0 -0
  153. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/wsgi.py.tmpl +0 -0
  154. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/req.txt.tmpl +0 -0
  155. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/start.ps1.tmpl +0 -0
  156. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/start.sh.tmpl +0 -0
  157. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/tests/__init__.py.tmpl +0 -0
  158. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/tests/test_scaffold.py.tmpl +0 -0
  159. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/scaffold_templates/project/tools/smtp_relay.py.tmpl +0 -0
  160. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/signals.py +0 -0
  161. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap-icons.css +0 -0
  162. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap-icons.woff +0 -0
  163. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap-icons.woff2 +0 -0
  164. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.bundle.min.js +0 -0
  165. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
  166. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.min.css +0 -0
  167. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.min.css.map +0 -0
  168. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.rtl.min.css +0 -0
  169. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.rtl.min.css.map +0 -0
  170. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/favicon.ico +0 -0
  171. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/img/base_logo.webp +0 -0
  172. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/img/default_profile.webp +0 -0
  173. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/img/login_logo.webp +0 -0
  174. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/accessibility/css/main.css +0 -0
  175. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/accessibility/js/main.js +0 -0
  176. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/activitylog/js/main.js +0 -0
  177. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/fonts/TwemojiCountryFlags.woff2 +0 -0
  178. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/fonts/cairo-bold.woff2 +0 -0
  179. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/fonts/cairo-medium.woff2 +0 -0
  180. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/fonts/cairo-regular.woff2 +0 -0
  181. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/forms/css/file_field.css +0 -0
  182. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/forms/css/form_actions.css +0 -0
  183. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/forms/css/form_fields.css +0 -0
  184. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/forms/js/file_field.js +0 -0
  185. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/forms/js/filter_form.js +0 -0
  186. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/autofill/js/main.js +0 -0
  187. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/context_menu/css/main.css +0 -0
  188. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/context_menu/js/main.js +0 -0
  189. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/context_menu/js/section_manager.js +0 -0
  190. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/dynamic_modal/js/main.js +0 -0
  191. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/prevent_double_submit.js +0 -0
  192. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/scan_link/js/main.js +0 -0
  193. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/scan_link/js/scan_button.js +0 -0
  194. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/helpers/wizard/js/main.js +0 -0
  195. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/language/css/main.css +0 -0
  196. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/language/js/main.js +0 -0
  197. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/language/js/translations.js +0 -0
  198. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/dropdowns.css +0 -0
  199. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/index_cards.css +0 -0
  200. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/navbar.css +0 -0
  201. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/pagination.css +0 -0
  202. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/selectors.css +0 -0
  203. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/css/tables.css +0 -0
  204. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/base_runtime.js +0 -0
  205. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/navbar.js +0 -0
  206. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/selectors.js +0 -0
  207. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/main/js/tables.js +0 -0
  208. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sections/js/manage_sections.js +0 -0
  209. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/css/reorder.css +0 -0
  210. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/css/theme_picker.css +0 -0
  211. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/preload.js +0 -0
  212. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/reorder.js +0 -0
  213. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/theme_picker.js +0 -0
  214. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/blue.css +0 -0
  215. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/gold.css +0 -0
  216. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/green.css +0 -0
  217. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/light.css +0 -0
  218. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/red.css +0 -0
  219. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/themes/js/main.js +0 -0
  220. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/tutorial/js/driver.js +0 -0
  221. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/css/login.css +0 -0
  222. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/css/profile.css +0 -0
  223. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/login.js +0 -0
  224. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/permissions.js +0 -0
  225. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/profile_image_widget.js +0 -0
  226. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/microsys/users/js/twofa_verify.js +0 -0
  227. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/vanillajs-datepicker/datepicker-bs5.min.css +0 -0
  228. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/static/vanillajs-datepicker/datepicker.min.js +0 -0
  229. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/bootstrap5/layout/field_file.html +0 -0
  230. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/2fa/verify.html +0 -0
  231. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/activitylog/activity_log.html +0 -0
  232. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/activitylog/activity_log_detail_modal.html +0 -0
  233. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/form_base.html +0 -0
  234. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/forms/assets_head.html +0 -0
  235. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/forms/assets_scripts.html +0 -0
  236. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/forms/crispy_file_field.html +0 -0
  237. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/forms/file_input.html +0 -0
  238. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/forms/filter_assets_head.html +0 -0
  239. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/forms/filter_assets_scripts.html +0 -0
  240. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal.html +0 -0
  241. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_combined.html +0 -0
  242. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_detail.html +0 -0
  243. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_form.html +0 -0
  244. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_list.html +0 -0
  245. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/micro_context_menu.html +0 -0
  246. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/font_previews.html +0 -0
  247. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/font_settings_matrix.html +0 -0
  248. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/language_catalog_editor.html +0 -0
  249. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/language_fonts_editor.html +0 -0
  250. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/language_previews.html +0 -0
  251. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/navbar.html +0 -0
  252. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/navbar_builder.html +0 -0
  253. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/navbar_mode_previews.html +0 -0
  254. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/options.html +0 -0
  255. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/sidebar_builder.html +0 -0
  256. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/sidebar_density_previews.html +0 -0
  257. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/sidebar_items.html +0 -0
  258. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/system_names_editor.html +0 -0
  259. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/system_setup.html +0 -0
  260. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/table_density_previews.html +0 -0
  261. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/theme_previews.html +0 -0
  262. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/theme_settings_matrix.html +0 -0
  263. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/translation_matrix_editor.html +0 -0
  264. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/includes/tutorial.html +0 -0
  265. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/list_base.html +0 -0
  266. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/registration/pending.html +0 -0
  267. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/scopes/scope_actions.html +0 -0
  268. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/scopes/scope_form.html +0 -0
  269. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/scopes/scope_manager.html +0 -0
  270. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/sections/manage_sections.html +0 -0
  271. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/sections/subsection_select.html +0 -0
  272. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/auto.html +0 -0
  273. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/extra_groups.html +0 -0
  274. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/tree.html +0 -0
  275. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/tables/table.html +0 -0
  276. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/users/grouped_permissions.html +0 -0
  277. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/users/profile_image_widget.html +0 -0
  278. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/microsys/users/user_hub.html +0 -0
  279. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/registration/email/verify_registration.txt +0 -0
  280. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/registration/login.html +0 -0
  281. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/registration/register.html +0 -0
  282. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/registration/register_sent.html +0 -0
  283. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templates/registration/register_verify.html +0 -0
  284. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templatetags/__init__.py +0 -0
  285. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templatetags/microsys_tags.py +0 -0
  286. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templatetags/microsys_translation.py +0 -0
  287. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/templatetags/sidebar_tags.py +0 -0
  288. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/activitylog.py +0 -0
  289. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/general.py +0 -0
  290. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/registration.py +0 -0
  291. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/scopes.py +0 -0
  292. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/sections.py +0 -0
  293. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/views/sidebar.py +0 -0
  294. {django_microsys-2.2.4 → django_microsys-2.2.6}/microsys/widgets.py +0 -0
  295. {django_microsys-2.2.4 → django_microsys-2.2.6}/setup.cfg +0 -0
@@ -0,0 +1,105 @@
1
+ # MIT License
2
+
3
+ Software: django-microsys
4
+ Repository: https://github.com/debeski/django-microsys
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-microsys`
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 `microsys/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-microsys-sso` and
103
+ `django-microsys-sso-client`. If you distribute those optional packages, keep
104
+ their dependency notices aligned with their own `pyproject.toml` metadata as
105
+ well.
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django_microsys
3
- Version: 2.2.4
3
+ Version: 2.2.6
4
4
  Summary: Django microSYS (System Integration Service) - Multilingual Django Starter Pack, Packed with Features.
5
5
  Author-email: DeBeski <debeski1@gmail.com>
6
- License: NON-COMMERCIAL
6
+ License: MIT
7
7
  Project-URL: Homepage, https://github.com/debeski/django-microsys
8
8
  Keywords: django,microsys,permissions,authentication
9
9
  Classifier: Framework :: Django
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Classifier: Programming Language :: Python :: 3.14
17
- Classifier: License :: Other/Proprietary License
17
+ Classifier: License :: OSI Approved :: MIT License
18
18
  Classifier: Operating System :: OS Independent
19
19
  Requires-Python: >=3.11
20
20
  Description-Content-Type: text/markdown
@@ -30,6 +30,7 @@ Requires-Dist: qrcode>=8.2
30
30
  Requires-Dist: pillow>=11.0
31
31
  Requires-Dist: babel>=2.1
32
32
  Requires-Dist: cryptography>=42.0
33
+ Requires-Dist: openpyxl>=3.1
33
34
  Provides-Extra: sso
34
35
  Requires-Dist: django-microsys-sso>=0.1.0; extra == "sso"
35
36
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-microsys
3
- Version: 2.2.4
3
+ Version: 2.2.6
4
4
  Summary: Django microSYS (System Integration Service) - Multilingual Django Starter Pack, Packed with Features.
5
5
  Author-email: DeBeski <debeski1@gmail.com>
6
- License: NON-COMMERCIAL
6
+ License: MIT
7
7
  Project-URL: Homepage, https://github.com/debeski/django-microsys
8
8
  Keywords: django,microsys,permissions,authentication
9
9
  Classifier: Framework :: Django
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Classifier: Programming Language :: Python :: 3.14
17
- Classifier: License :: Other/Proprietary License
17
+ Classifier: License :: OSI Approved :: MIT License
18
18
  Classifier: Operating System :: OS Independent
19
19
  Requires-Python: >=3.11
20
20
  Description-Content-Type: text/markdown
@@ -30,6 +30,7 @@ Requires-Dist: qrcode>=8.2
30
30
  Requires-Dist: pillow>=11.0
31
31
  Requires-Dist: babel>=2.1
32
32
  Requires-Dist: cryptography>=42.0
33
+ Requires-Dist: openpyxl>=3.1
33
34
  Provides-Extra: sso
34
35
  Requires-Dist: django-microsys-sso>=0.1.0; extra == "sso"
35
36
 
@@ -30,11 +30,14 @@ microsys/navbar.py
30
30
  microsys/patches.py
31
31
  microsys/registration.py
32
32
  microsys/scaffold.py
33
+ microsys/session_history.py
33
34
  microsys/signals.py
34
35
  microsys/tables.py
35
36
  microsys/themes.py
36
37
  microsys/translations.py
38
+ microsys/trust.py
37
39
  microsys/urls.py
40
+ microsys/user_reports.py
38
41
  microsys/utils.py
39
42
  microsys/widgets.py
40
43
  microsys/formats/__init__.py
@@ -54,6 +57,8 @@ microsys/migrations/0003_public_root_split.py
54
57
  microsys/migrations/0004_client_ip_and_trusted_devices.py
55
58
  microsys/migrations/0005_systemsettings_allow_user_font_override_and_more.py
56
59
  microsys/migrations/0006_systemsettings_navbar_config.py
60
+ microsys/migrations/0007_systemsettings_prevent_multiple_active_sessions.py
61
+ microsys/migrations/0008_user_device_presence_history.py
57
62
  microsys/migrations/__init__.py
58
63
  microsys/scaffold_templates/app/README.md.tmpl
59
64
  microsys/scaffold_templates/app/__init__.py.tmpl
@@ -113,13 +118,22 @@ microsys/static/img/login_logo.webp
113
118
  microsys/static/microsys/accessibility/css/main.css
114
119
  microsys/static/microsys/accessibility/js/main.js
115
120
  microsys/static/microsys/activitylog/js/main.js
121
+ microsys/static/microsys/fonts/Alexandria-Bold.woff2
122
+ microsys/static/microsys/fonts/Alexandria-Medium.woff2
123
+ microsys/static/microsys/fonts/Alexandria-Regular.woff2
124
+ microsys/static/microsys/fonts/Changa-Bold.woff2
125
+ microsys/static/microsys/fonts/Changa-Medium.woff2
126
+ microsys/static/microsys/fonts/Changa-Regular.woff2
127
+ microsys/static/microsys/fonts/MarkaziText-Bold.woff2
128
+ microsys/static/microsys/fonts/MarkaziText-Medium.woff2
129
+ microsys/static/microsys/fonts/MarkaziText-Regular.woff2
130
+ microsys/static/microsys/fonts/ReadexPro-Bold.woff2
131
+ microsys/static/microsys/fonts/ReadexPro-Medium.woff2
132
+ microsys/static/microsys/fonts/ReadexPro-Regular.woff2
116
133
  microsys/static/microsys/fonts/TwemojiCountryFlags.woff2
117
134
  microsys/static/microsys/fonts/cairo-bold.woff2
118
135
  microsys/static/microsys/fonts/cairo-medium.woff2
119
136
  microsys/static/microsys/fonts/cairo-regular.woff2
120
- microsys/static/microsys/fonts/shabwa-bold.woff2
121
- microsys/static/microsys/fonts/shabwa-medium.woff2
122
- microsys/static/microsys/fonts/shabwa-regular.woff2
123
137
  microsys/static/microsys/forms/css/file_field.css
124
138
  microsys/static/microsys/forms/css/form_actions.css
125
139
  microsys/static/microsys/forms/css/form_fields.css
@@ -133,6 +147,8 @@ microsys/static/microsys/helpers/context_menu/js/section_manager.js
133
147
  microsys/static/microsys/helpers/dynamic_modal/js/main.js
134
148
  microsys/static/microsys/helpers/scan_link/js/main.js
135
149
  microsys/static/microsys/helpers/scan_link/js/scan_button.js
150
+ microsys/static/microsys/helpers/tooltip/css/main.css
151
+ microsys/static/microsys/helpers/tooltip/js/main.js
136
152
  microsys/static/microsys/helpers/wizard/js/main.js
137
153
  microsys/static/microsys/language/css/main.css
138
154
  microsys/static/microsys/language/js/main.js
@@ -164,6 +180,7 @@ microsys/static/microsys/sidebar/js/main.js
164
180
  microsys/static/microsys/sidebar/js/preload.js
165
181
  microsys/static/microsys/sidebar/js/reorder.js
166
182
  microsys/static/microsys/sidebar/js/theme_picker.js
183
+ microsys/static/microsys/themes/css/aether.css
167
184
  microsys/static/microsys/themes/css/blue.css
168
185
  microsys/static/microsys/themes/css/dark.css
169
186
  microsys/static/microsys/themes/css/gold.css
@@ -172,6 +189,7 @@ microsys/static/microsys/themes/css/green.css
172
189
  microsys/static/microsys/themes/css/light.css
173
190
  microsys/static/microsys/themes/css/mono.css
174
191
  microsys/static/microsys/themes/css/neon.css
192
+ microsys/static/microsys/themes/css/prism.css
175
193
  microsys/static/microsys/themes/css/red.css
176
194
  microsys/static/microsys/themes/css/retro.css
177
195
  microsys/static/microsys/themes/js/main.js
@@ -247,6 +265,7 @@ microsys/templates/microsys/users/profile.html
247
265
  microsys/templates/microsys/users/profile_image_widget.html
248
266
  microsys/templates/microsys/users/user_detail_modal.html
249
267
  microsys/templates/microsys/users/user_hub.html
268
+ microsys/templates/microsys/users/user_report_modal.html
250
269
  microsys/templates/registration/login.html
251
270
  microsys/templates/registration/register.html
252
271
  microsys/templates/registration/register_sent.html
@@ -9,6 +9,7 @@ qrcode>=8.2
9
9
  pillow>=11.0
10
10
  babel>=2.1
11
11
  cryptography>=42.0
12
+ openpyxl>=3.1
12
13
 
13
14
  [sso]
14
15
  django-microsys-sso>=0.1.0
@@ -0,0 +1 @@
1
+ 2.2.6
@@ -56,6 +56,19 @@ TITLEBAR_SURFACE_CHOICES = (
56
56
  ('glass', 'Glass'),
57
57
  )
58
58
  TITLEBAR_SURFACE_VALUES = {value for value, _label in TITLEBAR_SURFACE_CHOICES}
59
+ TITLEBAR_LOGO_TREATMENT_CHOICES = (
60
+ ('none', 'None'),
61
+ ('plate', 'Plate'),
62
+ ('halo', 'Halo'),
63
+ ('contrast', 'Contrast'),
64
+ )
65
+ TITLEBAR_LOGO_TREATMENT_VALUES = {value for value, _label in TITLEBAR_LOGO_TREATMENT_CHOICES}
66
+ TITLEBAR_LOGO_TREATMENT_SHAPE_CHOICES = (
67
+ ('soft', 'Soft'),
68
+ ('pill', 'Pill'),
69
+ ('square', 'Square'),
70
+ )
71
+ TITLEBAR_LOGO_TREATMENT_SHAPE_VALUES = {value for value, _label in TITLEBAR_LOGO_TREATMENT_SHAPE_CHOICES}
59
72
 
60
73
  REGISTRATION_ACTIVATION_AUTO_LOGIN = 'auto_login_after_verify'
61
74
  REGISTRATION_ACTIVATION_PENDING_APPROVAL = 'verified_pending_approval'
@@ -356,10 +356,22 @@ def microsys_context(request):
356
356
  context['titlebar'],
357
357
  )
358
358
  # 8. Font Resolution
359
- from .fonts import generate_font_face_css, get_builtin_fonts
359
+ from .fonts import (
360
+ DEFAULT_FONT_SLUG,
361
+ generate_font_face_css,
362
+ get_builtin_fonts,
363
+ get_default_font_family,
364
+ get_font_by_slug,
365
+ )
366
+ builtin_fonts = get_builtin_fonts()
360
367
  allowed_fonts = normalize_allowed_fonts(final_config.get('allowed_fonts'))
361
368
  context['font_face_css'] = generate_font_face_css(allowed_fonts)
362
- context['option_fonts'] = [font for font in get_builtin_fonts() if font.get('slug') in allowed_fonts]
369
+ context['default_font_family'] = get_default_font_family()
370
+ context['font_families'] = {
371
+ font['slug']: font['family']
372
+ for font in builtin_fonts
373
+ }
374
+ context['option_fonts'] = [font for font in builtin_fonts if font.get('slug') in allowed_fonts]
363
375
 
364
376
  allow_user_font_override = bool(final_config.get('allow_user_font_override', True))
365
377
  default_fonts_by_lang = final_config.get('default_fonts', {})
@@ -372,16 +384,21 @@ def microsys_context(request):
372
384
  active_font = default_fonts_by_lang.get(current_lang)
373
385
 
374
386
  if not active_font or active_font not in allowed_fonts:
375
- # Global fallback based on current language
376
- active_font = 'shabwa' if current_lang == 'ar' else 'cairo'
377
-
378
- # Ensure active_font is valid, else hard fallback to shabwa
387
+ active_font = DEFAULT_FONT_SLUG
388
+
389
+ # Ensure active_font is valid, else hard fallback to cairo
379
390
  if active_font not in allowed_fonts and allowed_fonts:
380
391
  active_font = allowed_fonts[0]
381
392
  elif not active_font:
382
- active_font = 'shabwa'
383
-
393
+ active_font = DEFAULT_FONT_SLUG
394
+
395
+ active_font_config = get_font_by_slug(active_font) if active_font else None
384
396
  context['active_font'] = active_font
397
+ context['active_font_family'] = (
398
+ active_font_config.get('family')
399
+ if active_font_config
400
+ else get_default_font_family()
401
+ )
385
402
  context['font_picker_enabled'] = bool(allow_user_font_override and len(allowed_fonts) > 1)
386
403
 
387
404
  return context
@@ -2,18 +2,11 @@ from functools import lru_cache
2
2
  from django.conf import settings
3
3
  from django.templatetags.static import static
4
4
 
5
+ DEFAULT_FONT_SLUG = 'cairo'
6
+ DEFAULT_FONT_FAMILY = 'Cairo'
7
+
5
8
  # Registry for built-in fonts provided by the package
6
9
  _FONT_REGISTRY = (
7
- {
8
- 'slug': 'shabwa',
9
- 'family': 'Shabwa',
10
- 'label': 'Shabwa',
11
- 'variants': [
12
- {'weight': 400, 'path': 'microsys/fonts/shabwa-regular.woff2'},
13
- {'weight': 600, 'path': 'microsys/fonts/shabwa-medium.woff2'},
14
- {'weight': 800, 'path': 'microsys/fonts/shabwa-bold.woff2'},
15
- ]
16
- },
17
10
  {
18
11
  'slug': 'cairo',
19
12
  'family': 'Cairo',
@@ -24,6 +17,46 @@ _FONT_REGISTRY = (
24
17
  {'weight': 800, 'path': 'microsys/fonts/cairo-bold.woff2'},
25
18
  ]
26
19
  },
20
+ {
21
+ 'slug': 'changa',
22
+ 'family': 'Changa',
23
+ 'label': 'Changa',
24
+ 'variants': [
25
+ {'weight': 400, 'path': 'microsys/fonts/Changa-Regular.woff2'},
26
+ {'weight': 600, 'path': 'microsys/fonts/Changa-Medium.woff2'},
27
+ {'weight': 800, 'path': 'microsys/fonts/Changa-Bold.woff2'},
28
+ ]
29
+ },
30
+ # {
31
+ # 'slug': 'markazi_text',
32
+ # 'family': 'Markazi Text',
33
+ # 'label': 'Markazi Text',
34
+ # 'variants': [
35
+ # {'weight': 400, 'path': 'microsys/fonts/MarkaziText-Regular.woff2'},
36
+ # {'weight': 600, 'path': 'microsys/fonts/MarkaziText-Medium.woff2'},
37
+ # {'weight': 800, 'path': 'microsys/fonts/MarkaziText-Bold.woff2'},
38
+ # ]
39
+ # },
40
+ {
41
+ 'slug': 'readex_pro',
42
+ 'family': 'Readex Pro',
43
+ 'label': 'Readex Pro',
44
+ 'variants': [
45
+ {'weight': 400, 'path': 'microsys/fonts/ReadexPro-Regular.woff2'},
46
+ {'weight': 600, 'path': 'microsys/fonts/ReadexPro-Medium.woff2'},
47
+ {'weight': 800, 'path': 'microsys/fonts/ReadexPro-Bold.woff2'},
48
+ ]
49
+ },
50
+ {
51
+ 'slug': 'alexandria',
52
+ 'family': 'Alexandria',
53
+ 'label': 'Alexandria',
54
+ 'variants': [
55
+ {'weight': 400, 'path': 'microsys/fonts/Alexandria-Regular.woff2'},
56
+ {'weight': 600, 'path': 'microsys/fonts/Alexandria-Medium.woff2'},
57
+ {'weight': 800, 'path': 'microsys/fonts/Alexandria-Bold.woff2'},
58
+ ]
59
+ },
27
60
  )
28
61
 
29
62
  @lru_cache(maxsize=1)
@@ -42,6 +75,12 @@ def get_font_by_slug(slug):
42
75
  return font
43
76
  return None
44
77
 
78
+ def get_default_font_family():
79
+ default_font = get_font_by_slug(DEFAULT_FONT_SLUG)
80
+ if default_font:
81
+ return default_font['family']
82
+ return DEFAULT_FONT_FAMILY
83
+
45
84
  def generate_font_face_css(allowed_fonts=None):
46
85
  """
47
86
  Generates the @font-face CSS block for all allowed fonts.