django-microsys 2.2.5__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.
- django_microsys-2.2.6/LICENSE +105 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/PKG-INFO +4 -3
- {django_microsys-2.2.5 → django_microsys-2.2.6}/django_microsys.egg-info/PKG-INFO +4 -3
- {django_microsys-2.2.5 → django_microsys-2.2.6}/django_microsys.egg-info/SOURCES.txt +20 -3
- {django_microsys-2.2.5 → django_microsys-2.2.6}/django_microsys.egg-info/requires.txt +1 -0
- django_microsys-2.2.6/microsys/VERSION +1 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/constants.py +13 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/context_processors.py +25 -8
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/fonts.py +49 -10
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/forms.py +122 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/middleware.py +12 -41
- django_microsys-2.2.6/microsys/migrations/0008_user_device_presence_history.py +85 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/models.py +89 -0
- django_microsys-2.2.6/microsys/session_history.py +319 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/Alexandria-Bold.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/Alexandria-Medium.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/Alexandria-Regular.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/Changa-Bold.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/Changa-Medium.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/Changa-Regular.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/MarkaziText-Bold.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/MarkaziText-Medium.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/MarkaziText-Regular.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/ReadexPro-Bold.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/ReadexPro-Medium.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/fonts/ReadexPro-Regular.woff2 +0 -0
- django_microsys-2.2.6/microsys/static/microsys/helpers/tooltip/css/main.css +87 -0
- django_microsys-2.2.6/microsys/static/microsys/helpers/tooltip/js/main.js +265 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/buttons.css +40 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/main.css +19 -18
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/options.css +19 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/system_setup.css +20 -5
- django_microsys-2.2.6/microsys/static/microsys/main/css/template_cleanup.css +267 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/titlebar.css +37 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/base_head.js +4 -1
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/options.js +4 -2
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/system_setup.js +24 -1
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/css/main.css +0 -8
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/main.js +7 -13
- django_microsys-2.2.6/microsys/static/microsys/themes/css/aether.css +1310 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/dark.css +33 -9
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/gothic.css +23 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/mono.css +3 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/neon.css +26 -0
- django_microsys-2.2.6/microsys/static/microsys/themes/css/prism.css +1195 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/retro.css +18 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/tutorial/css/main.css +3 -3
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/tutorial/js/main.js +3 -3
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/css/permissions.css +5 -2
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/css/user_hub.css +0 -45
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/manage_users.js +75 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/user_hub.js +1 -32
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/tables.py +11 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/base.html +13 -9
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/titlebar.html +2 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/main.html +2 -2
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/users/manage_users.html +1 -1
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/users/user_detail_modal.html +8 -0
- django_microsys-2.2.6/microsys/templates/microsys/users/user_report_modal.html +202 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/themes.py +14 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/translations.py +158 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/trust.py +13 -30
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/urls.py +2 -0
- django_microsys-2.2.6/microsys/user_reports.py +282 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/utils.py +26 -2
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/__init__.py +2 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/profile.py +30 -22
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/users.py +40 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/pyproject.toml +3 -2
- django_microsys-2.2.5/LICENSE +0 -65
- django_microsys-2.2.5/microsys/VERSION +0 -1
- django_microsys-2.2.5/microsys/static/microsys/fonts/shabwa-bold.woff2 +0 -0
- django_microsys-2.2.5/microsys/static/microsys/fonts/shabwa-medium.woff2 +0 -0
- django_microsys-2.2.5/microsys/static/microsys/fonts/shabwa-regular.woff2 +0 -0
- django_microsys-2.2.5/microsys/static/microsys/main/css/template_cleanup.css +0 -121
- {django_microsys-2.2.5 → django_microsys-2.2.6}/MANIFEST.in +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/README.md +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/django_microsys.egg-info/dependency_links.txt +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/django_microsys.egg-info/entry_points.txt +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/django_microsys.egg-info/top_level.txt +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/__main__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/admin.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/api.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/apps.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/cli.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/discovery.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/fetcher.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/filters.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/formats/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/formats/ar/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/formats/ar/formats.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/formats/en/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/formats/en/formats.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/guards.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/management/commands/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/management/commands/microsys_check.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/management/commands/microsys_settings.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/management/commands/microsys_setup.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/management/commands/migrator.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/management/commands/seed_activity_log.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/managers.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0001_initial.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0002_public_registration.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0003_public_root_split.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0004_client_ip_and_trusted_devices.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0005_systemsettings_allow_user_font_override_and_more.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0006_systemsettings_navbar_config.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/0007_systemsettings_prevent_multiple_active_sessions.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/migrations/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/navbar.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/patches.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/registration.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/README.md.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/__init__.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/apps.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/filters.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/forms.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/migrations/__init__.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/models.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/tables.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_confirm_delete.html.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_detail.html.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_form.html.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/templates/example_record_list.html.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/tests/__init__.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/tests/test_app.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/translations.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/urls.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/app/views.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/.nginx/nginx.conf.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/.secrets/.env.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/Dockerfile.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/README.md.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/compose.dev.yml.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/compose.yml.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/dockerignore.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/docs/README.md.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/entrypoint.sh.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/gitattributes.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/gitignore.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/gunicorn.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/manage.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/__init__.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/asgi.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/celery.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/settings.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/urls.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/package/wsgi.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/req.txt.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/start.ps1.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/start.sh.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/tests/__init__.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/tests/test_scaffold.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/scaffold_templates/project/tools/smtp_relay.py.tmpl +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/signals.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap-icons.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap-icons.woff +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap-icons.woff2 +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.bundle.min.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.min.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.min.css.map +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.rtl.min.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/bootstrap/bootstrap.rtl.min.css.map +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/favicon.ico +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/img/base_logo.webp +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/img/default_profile.webp +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/img/login_logo.webp +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/accessibility/css/main.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/accessibility/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/activitylog/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/fonts/TwemojiCountryFlags.woff2 +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/fonts/cairo-bold.woff2 +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/fonts/cairo-medium.woff2 +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/fonts/cairo-regular.woff2 +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/forms/css/file_field.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/forms/css/form_actions.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/forms/css/form_fields.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/forms/js/file_field.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/forms/js/filter_form.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/autofill/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/context_menu/css/main.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/context_menu/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/context_menu/js/section_manager.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/dynamic_modal/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/prevent_double_submit.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/scan_link/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/scan_link/js/scan_button.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/helpers/wizard/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/language/css/main.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/language/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/language/js/translations.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/dropdowns.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/index_cards.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/navbar.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/pagination.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/selectors.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/css/tables.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/base_runtime.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/navbar.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/selectors.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/main/js/tables.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sections/js/manage_sections.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/css/reorder.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/css/theme_picker.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/preload.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/reorder.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/sidebar/js/theme_picker.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/blue.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/gold.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/green.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/light.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/css/red.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/themes/js/main.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/tutorial/js/driver.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/css/login.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/css/profile.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/login.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/permissions.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/profile_2fa.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/profile_image_widget.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/microsys/users/js/twofa_verify.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/vanillajs-datepicker/datepicker-bs5.min.css +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/static/vanillajs-datepicker/datepicker.min.js +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/bootstrap5/layout/field_file.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/2fa/verify.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/activitylog/activity_log.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/activitylog/activity_log_detail_modal.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/form_base.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/forms/assets_head.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/forms/assets_scripts.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/forms/crispy_file_field.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/forms/file_input.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/forms/filter_assets_head.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/forms/filter_assets_scripts.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_combined.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_detail.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_form.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/dynamic_modal_list.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/helpers/micro_context_menu.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/font_previews.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/font_settings_matrix.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/language_catalog_editor.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/language_fonts_editor.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/language_previews.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/navbar.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/navbar_builder.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/navbar_mode_previews.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/options.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/sidebar_builder.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/sidebar_density_previews.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/sidebar_items.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/system_names_editor.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/system_setup.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/table_density_previews.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/theme_previews.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/theme_settings_matrix.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/translation_matrix_editor.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/includes/tutorial.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/list_base.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/registration/pending.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/scopes/scope_actions.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/scopes/scope_form.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/scopes/scope_manager.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/sections/manage_sections.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/sections/subsection_select.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/auto.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/extra_groups.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/sidebar/tree.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/tables/table.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/users/grouped_permissions.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/users/profile.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/users/profile_image_widget.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/microsys/users/user_hub.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/registration/email/verify_registration.txt +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/registration/login.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/registration/register.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/registration/register_sent.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templates/registration/register_verify.html +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templatetags/__init__.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templatetags/microsys_tags.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templatetags/microsys_translation.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/templatetags/sidebar_tags.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/activitylog.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/general.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/registration.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/scopes.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/sections.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/sidebar.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/views/twofa.py +0 -0
- {django_microsys-2.2.5 → django_microsys-2.2.6}/microsys/widgets.py +0 -0
- {django_microsys-2.2.5 → 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.
|
|
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:
|
|
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 ::
|
|
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.
|
|
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:
|
|
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 ::
|
|
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,12 +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
|
|
37
38
|
microsys/trust.py
|
|
38
39
|
microsys/urls.py
|
|
40
|
+
microsys/user_reports.py
|
|
39
41
|
microsys/utils.py
|
|
40
42
|
microsys/widgets.py
|
|
41
43
|
microsys/formats/__init__.py
|
|
@@ -56,6 +58,7 @@ microsys/migrations/0004_client_ip_and_trusted_devices.py
|
|
|
56
58
|
microsys/migrations/0005_systemsettings_allow_user_font_override_and_more.py
|
|
57
59
|
microsys/migrations/0006_systemsettings_navbar_config.py
|
|
58
60
|
microsys/migrations/0007_systemsettings_prevent_multiple_active_sessions.py
|
|
61
|
+
microsys/migrations/0008_user_device_presence_history.py
|
|
59
62
|
microsys/migrations/__init__.py
|
|
60
63
|
microsys/scaffold_templates/app/README.md.tmpl
|
|
61
64
|
microsys/scaffold_templates/app/__init__.py.tmpl
|
|
@@ -115,13 +118,22 @@ microsys/static/img/login_logo.webp
|
|
|
115
118
|
microsys/static/microsys/accessibility/css/main.css
|
|
116
119
|
microsys/static/microsys/accessibility/js/main.js
|
|
117
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
|
|
118
133
|
microsys/static/microsys/fonts/TwemojiCountryFlags.woff2
|
|
119
134
|
microsys/static/microsys/fonts/cairo-bold.woff2
|
|
120
135
|
microsys/static/microsys/fonts/cairo-medium.woff2
|
|
121
136
|
microsys/static/microsys/fonts/cairo-regular.woff2
|
|
122
|
-
microsys/static/microsys/fonts/shabwa-bold.woff2
|
|
123
|
-
microsys/static/microsys/fonts/shabwa-medium.woff2
|
|
124
|
-
microsys/static/microsys/fonts/shabwa-regular.woff2
|
|
125
137
|
microsys/static/microsys/forms/css/file_field.css
|
|
126
138
|
microsys/static/microsys/forms/css/form_actions.css
|
|
127
139
|
microsys/static/microsys/forms/css/form_fields.css
|
|
@@ -135,6 +147,8 @@ microsys/static/microsys/helpers/context_menu/js/section_manager.js
|
|
|
135
147
|
microsys/static/microsys/helpers/dynamic_modal/js/main.js
|
|
136
148
|
microsys/static/microsys/helpers/scan_link/js/main.js
|
|
137
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
|
|
138
152
|
microsys/static/microsys/helpers/wizard/js/main.js
|
|
139
153
|
microsys/static/microsys/language/css/main.css
|
|
140
154
|
microsys/static/microsys/language/js/main.js
|
|
@@ -166,6 +180,7 @@ microsys/static/microsys/sidebar/js/main.js
|
|
|
166
180
|
microsys/static/microsys/sidebar/js/preload.js
|
|
167
181
|
microsys/static/microsys/sidebar/js/reorder.js
|
|
168
182
|
microsys/static/microsys/sidebar/js/theme_picker.js
|
|
183
|
+
microsys/static/microsys/themes/css/aether.css
|
|
169
184
|
microsys/static/microsys/themes/css/blue.css
|
|
170
185
|
microsys/static/microsys/themes/css/dark.css
|
|
171
186
|
microsys/static/microsys/themes/css/gold.css
|
|
@@ -174,6 +189,7 @@ microsys/static/microsys/themes/css/green.css
|
|
|
174
189
|
microsys/static/microsys/themes/css/light.css
|
|
175
190
|
microsys/static/microsys/themes/css/mono.css
|
|
176
191
|
microsys/static/microsys/themes/css/neon.css
|
|
192
|
+
microsys/static/microsys/themes/css/prism.css
|
|
177
193
|
microsys/static/microsys/themes/css/red.css
|
|
178
194
|
microsys/static/microsys/themes/css/retro.css
|
|
179
195
|
microsys/static/microsys/themes/js/main.js
|
|
@@ -249,6 +265,7 @@ microsys/templates/microsys/users/profile.html
|
|
|
249
265
|
microsys/templates/microsys/users/profile_image_widget.html
|
|
250
266
|
microsys/templates/microsys/users/user_detail_modal.html
|
|
251
267
|
microsys/templates/microsys/users/user_hub.html
|
|
268
|
+
microsys/templates/microsys/users/user_report_modal.html
|
|
252
269
|
microsys/templates/registration/login.html
|
|
253
270
|
microsys/templates/registration/register.html
|
|
254
271
|
microsys/templates/registration/register_sent.html
|
|
@@ -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
|
|
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['
|
|
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
|
-
|
|
376
|
-
|
|
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 =
|
|
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.
|
|
@@ -47,6 +47,10 @@ from .constants import (
|
|
|
47
47
|
TITLEBAR_HEIGHT_VALUES,
|
|
48
48
|
TITLEBAR_HOME_SHAPE_CHOICES,
|
|
49
49
|
TITLEBAR_HOME_SHAPE_VALUES,
|
|
50
|
+
TITLEBAR_LOGO_TREATMENT_CHOICES,
|
|
51
|
+
TITLEBAR_LOGO_TREATMENT_SHAPE_CHOICES,
|
|
52
|
+
TITLEBAR_LOGO_TREATMENT_SHAPE_VALUES,
|
|
53
|
+
TITLEBAR_LOGO_TREATMENT_VALUES,
|
|
50
54
|
TITLEBAR_SIZE_CHOICES,
|
|
51
55
|
TITLEBAR_SIZE_VALUES,
|
|
52
56
|
TITLEBAR_SURFACE_CHOICES,
|
|
@@ -1612,6 +1616,16 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
1612
1616
|
choices=TITLEBAR_SURFACE_CHOICES,
|
|
1613
1617
|
initial='default',
|
|
1614
1618
|
)
|
|
1619
|
+
titlebar_logo_treatment = forms.ChoiceField(
|
|
1620
|
+
required=False,
|
|
1621
|
+
choices=TITLEBAR_LOGO_TREATMENT_CHOICES,
|
|
1622
|
+
initial='none',
|
|
1623
|
+
)
|
|
1624
|
+
titlebar_logo_treatment_shape = forms.ChoiceField(
|
|
1625
|
+
required=False,
|
|
1626
|
+
choices=TITLEBAR_LOGO_TREATMENT_SHAPE_CHOICES,
|
|
1627
|
+
initial='soft',
|
|
1628
|
+
)
|
|
1615
1629
|
email_2fa = forms.BooleanField(
|
|
1616
1630
|
required=False,
|
|
1617
1631
|
initial=False,
|
|
@@ -1914,6 +1928,11 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
1914
1928
|
self.fields['titlebar_title_size'].label = s.get('form_sys_titlebar_title_size', 'Title size')
|
|
1915
1929
|
self.fields['titlebar_height'].label = s.get('form_sys_titlebar_height', 'Titlebar height')
|
|
1916
1930
|
self.fields['titlebar_surface'].label = s.get('form_sys_titlebar_surface', 'Titlebar surface')
|
|
1931
|
+
self.fields['titlebar_logo_treatment'].label = s.get('form_sys_titlebar_logo_treatment', 'Logo treatment')
|
|
1932
|
+
self.fields['titlebar_logo_treatment_shape'].label = s.get(
|
|
1933
|
+
'form_sys_titlebar_logo_treatment_shape',
|
|
1934
|
+
'Logo treatment shape',
|
|
1935
|
+
)
|
|
1917
1936
|
self.fields['titlebar_show_title'].help_text = s.get(
|
|
1918
1937
|
'help_sys_titlebar_show_title',
|
|
1919
1938
|
'Show the system title in the titlebar.',
|
|
@@ -1930,6 +1949,14 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
1930
1949
|
'help_sys_titlebar_hide_on_public_unauthenticated_index',
|
|
1931
1950
|
'Hide the titlebar when an anonymous user opens the public root/home page.',
|
|
1932
1951
|
)
|
|
1952
|
+
self.fields['titlebar_logo_treatment'].help_text = s.get(
|
|
1953
|
+
'help_sys_titlebar_logo_treatment',
|
|
1954
|
+
'Choose how Microsys visually assists the logo on mixed theme surfaces.',
|
|
1955
|
+
)
|
|
1956
|
+
self.fields['titlebar_logo_treatment_shape'].help_text = s.get(
|
|
1957
|
+
'help_sys_titlebar_logo_treatment_shape',
|
|
1958
|
+
'Choose the plate silhouette when the Plate treatment is active.',
|
|
1959
|
+
)
|
|
1933
1960
|
self.fields['titlebar_home_shape'].choices = (
|
|
1934
1961
|
('circle', s.get('titlebar_home_shape_circle', 'Circle')),
|
|
1935
1962
|
('square', s.get('titlebar_home_shape_square', 'Square')),
|
|
@@ -1955,6 +1982,17 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
1955
1982
|
('muted', s.get('titlebar_surface_muted', 'Muted')),
|
|
1956
1983
|
('glass', s.get('titlebar_surface_glass', 'Glass')),
|
|
1957
1984
|
)
|
|
1985
|
+
self.fields['titlebar_logo_treatment'].choices = (
|
|
1986
|
+
('none', s.get('titlebar_logo_treatment_none', 'None')),
|
|
1987
|
+
('plate', s.get('titlebar_logo_treatment_plate', 'Plate')),
|
|
1988
|
+
('halo', s.get('titlebar_logo_treatment_halo', 'Halo')),
|
|
1989
|
+
('contrast', s.get('titlebar_logo_treatment_contrast', 'Contrast')),
|
|
1990
|
+
)
|
|
1991
|
+
self.fields['titlebar_logo_treatment_shape'].choices = (
|
|
1992
|
+
('soft', s.get('titlebar_logo_treatment_shape_soft', 'Soft')),
|
|
1993
|
+
('pill', s.get('titlebar_logo_treatment_shape_pill', 'Pill')),
|
|
1994
|
+
('square', s.get('titlebar_logo_treatment_shape_square', 'Square')),
|
|
1995
|
+
)
|
|
1958
1996
|
self.fields['email_2fa'].label = s.get('form_sys_email_2fa', 'Enable Email 2FA')
|
|
1959
1997
|
self.fields['email_2fa'].help_text = s.get(
|
|
1960
1998
|
'help_sys_email_2fa',
|
|
@@ -2198,6 +2236,50 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2198
2236
|
},
|
|
2199
2237
|
),
|
|
2200
2238
|
)
|
|
2239
|
+
_bind_choice_selector_widget(
|
|
2240
|
+
self.fields['titlebar_logo_treatment'],
|
|
2241
|
+
MicrosysChoiceSelectorWidget(
|
|
2242
|
+
variant='toggle',
|
|
2243
|
+
option_meta={
|
|
2244
|
+
'none': {
|
|
2245
|
+
'icon': 'bi-slash-circle',
|
|
2246
|
+
'description': s.get('titlebar_logo_treatment_none_desc', 'Leave the logo as uploaded.'),
|
|
2247
|
+
},
|
|
2248
|
+
'plate': {
|
|
2249
|
+
'icon': 'bi-badge-ad',
|
|
2250
|
+
'description': s.get('titlebar_logo_treatment_plate_desc', 'Place the logo on an adaptive material plate.'),
|
|
2251
|
+
},
|
|
2252
|
+
'halo': {
|
|
2253
|
+
'icon': 'bi-brightness-high',
|
|
2254
|
+
'description': s.get('titlebar_logo_treatment_halo_desc', 'Add a subtle adaptive glow behind the logo.'),
|
|
2255
|
+
},
|
|
2256
|
+
'contrast': {
|
|
2257
|
+
'icon': 'bi-circle-half',
|
|
2258
|
+
'description': s.get('titlebar_logo_treatment_contrast_desc', 'Apply contrast and shadow assistance for simple logos.'),
|
|
2259
|
+
},
|
|
2260
|
+
},
|
|
2261
|
+
),
|
|
2262
|
+
)
|
|
2263
|
+
_bind_choice_selector_widget(
|
|
2264
|
+
self.fields['titlebar_logo_treatment_shape'],
|
|
2265
|
+
MicrosysChoiceSelectorWidget(
|
|
2266
|
+
variant='toggle',
|
|
2267
|
+
option_meta={
|
|
2268
|
+
'soft': {
|
|
2269
|
+
'icon': 'bi-app',
|
|
2270
|
+
'description': s.get('titlebar_logo_treatment_shape_soft_desc', 'A modern rounded plate.'),
|
|
2271
|
+
},
|
|
2272
|
+
'pill': {
|
|
2273
|
+
'icon': 'bi-capsule',
|
|
2274
|
+
'description': s.get('titlebar_logo_treatment_shape_pill_desc', 'A fully rounded capsule plate.'),
|
|
2275
|
+
},
|
|
2276
|
+
'square': {
|
|
2277
|
+
'icon': 'bi-square',
|
|
2278
|
+
'description': s.get('titlebar_logo_treatment_shape_square_desc', 'A sharper compact plate.'),
|
|
2279
|
+
},
|
|
2280
|
+
},
|
|
2281
|
+
),
|
|
2282
|
+
)
|
|
2201
2283
|
_bind_choice_selector_widget(
|
|
2202
2284
|
self.fields['navbar_default_mode'],
|
|
2203
2285
|
MicrosysChoiceSelectorWidget(
|
|
@@ -2439,6 +2521,8 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2439
2521
|
self.initial['titlebar_title_size'] = initial_titlebar_config.get('title_size', 'md')
|
|
2440
2522
|
self.initial['titlebar_height'] = initial_titlebar_config.get('height', 'balanced')
|
|
2441
2523
|
self.initial['titlebar_surface'] = initial_titlebar_config.get('surface', 'default')
|
|
2524
|
+
self.initial['titlebar_logo_treatment'] = initial_titlebar_config.get('logo_treatment', 'none')
|
|
2525
|
+
self.initial['titlebar_logo_treatment_shape'] = initial_titlebar_config.get('logo_treatment_shape', 'soft')
|
|
2442
2526
|
|
|
2443
2527
|
catalog_lang = self.initial.get('default_language') or self.instance.default_language or config.get('default_language', 'en')
|
|
2444
2528
|
public_sidebar_catalog = discover_sidebar_catalog(lang_code=catalog_lang, include_system_items=False)
|
|
@@ -2908,6 +2992,28 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2908
2992
|
Row(
|
|
2909
2993
|
Div(Field('titlebar_surface'), css_class='col-lg-12'),
|
|
2910
2994
|
),
|
|
2995
|
+
Row(
|
|
2996
|
+
Div(
|
|
2997
|
+
Field('titlebar_logo_treatment'),
|
|
2998
|
+
css_class=(
|
|
2999
|
+
"col-lg-8 ms-titlebar-logo-dependent"
|
|
3000
|
+
f"{' d-none' if not self.initial.get('titlebar_show_logo', True) else ''}"
|
|
3001
|
+
),
|
|
3002
|
+
aria_hidden='false' if self.initial.get('titlebar_show_logo', True) else 'true',
|
|
3003
|
+
),
|
|
3004
|
+
Div(
|
|
3005
|
+
Field('titlebar_logo_treatment_shape'),
|
|
3006
|
+
css_class=(
|
|
3007
|
+
"col-lg-4 ms-titlebar-logo-plate-dependent"
|
|
3008
|
+
f"{' d-none' if not (self.initial.get('titlebar_show_logo', True) and self.initial.get('titlebar_logo_treatment', 'none') == 'plate') else ''}"
|
|
3009
|
+
),
|
|
3010
|
+
aria_hidden='false' if (
|
|
3011
|
+
self.initial.get('titlebar_show_logo', True)
|
|
3012
|
+
and self.initial.get('titlebar_logo_treatment', 'none') == 'plate'
|
|
3013
|
+
) else 'true',
|
|
3014
|
+
),
|
|
3015
|
+
css_class='g-3 mb-3',
|
|
3016
|
+
),
|
|
2911
3017
|
css_class=_step_css_class(5),
|
|
2912
3018
|
),
|
|
2913
3019
|
Div(
|
|
@@ -3136,6 +3242,18 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
3136
3242
|
raise ValidationError("Invalid titlebar surface.")
|
|
3137
3243
|
return value
|
|
3138
3244
|
|
|
3245
|
+
def clean_titlebar_logo_treatment(self):
|
|
3246
|
+
value = self.cleaned_data.get('titlebar_logo_treatment') or 'none'
|
|
3247
|
+
if value not in TITLEBAR_LOGO_TREATMENT_VALUES:
|
|
3248
|
+
raise ValidationError("Invalid titlebar logo treatment.")
|
|
3249
|
+
return value
|
|
3250
|
+
|
|
3251
|
+
def clean_titlebar_logo_treatment_shape(self):
|
|
3252
|
+
value = self.cleaned_data.get('titlebar_logo_treatment_shape') or 'soft'
|
|
3253
|
+
if value not in TITLEBAR_LOGO_TREATMENT_SHAPE_VALUES:
|
|
3254
|
+
raise ValidationError("Invalid titlebar logo treatment shape.")
|
|
3255
|
+
return value
|
|
3256
|
+
|
|
3139
3257
|
def clean_home_url(self):
|
|
3140
3258
|
value = str(self.cleaned_data.get('home_url') or '').strip()
|
|
3141
3259
|
discovered_value = str(self.cleaned_data.get('home_url_discovered') or '').strip()
|
|
@@ -3336,6 +3454,8 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
3336
3454
|
cleaned['titlebar_title_size'] = titlebar.get('title_size', 'md')
|
|
3337
3455
|
cleaned['titlebar_height'] = titlebar.get('height', 'balanced')
|
|
3338
3456
|
cleaned['titlebar_surface'] = titlebar.get('surface', 'default')
|
|
3457
|
+
cleaned['titlebar_logo_treatment'] = titlebar.get('logo_treatment', 'none')
|
|
3458
|
+
cleaned['titlebar_logo_treatment_shape'] = titlebar.get('logo_treatment_shape', 'soft')
|
|
3339
3459
|
|
|
3340
3460
|
def clean(self):
|
|
3341
3461
|
cleaned = super().clean()
|
|
@@ -3453,6 +3573,8 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
3453
3573
|
'title_size': cleaned.get('titlebar_title_size', 'md'),
|
|
3454
3574
|
'height': cleaned.get('titlebar_height', 'balanced'),
|
|
3455
3575
|
'surface': cleaned.get('titlebar_surface', 'default'),
|
|
3576
|
+
'logo_treatment': cleaned.get('titlebar_logo_treatment', 'none'),
|
|
3577
|
+
'logo_treatment_shape': cleaned.get('titlebar_logo_treatment_shape', 'soft'),
|
|
3456
3578
|
})
|
|
3457
3579
|
if cleaned.get('registration_activation_mode') not in REGISTRATION_ACTIVATION_VALUES:
|
|
3458
3580
|
cleaned['registration_activation_mode'] = 'auto_login_after_verify'
|