django-microsys 2.2.1__tar.gz → 2.2.3__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.1 → django_microsys-2.2.3}/PKG-INFO +1 -1
- {django_microsys-2.2.1 → django_microsys-2.2.3}/django_microsys.egg-info/PKG-INFO +1 -1
- django_microsys-2.2.3/microsys/VERSION +1 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/context_processors.py +1 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/forms.py +77 -3
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/system_setup.css +10 -21
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/options.js +3 -1
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/system_setup.js +8 -1
- django_microsys-2.2.3/microsys/templates/microsys/includes/font_previews.html +20 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/options.html +1 -1
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/utils.py +90 -69
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/sections.py +7 -1
- django_microsys-2.2.1/microsys/VERSION +0 -1
- django_microsys-2.2.1/microsys/templates/microsys/includes/font_previews.html +0 -12
- {django_microsys-2.2.1 → django_microsys-2.2.3}/LICENSE +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/MANIFEST.in +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/README.md +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/django_microsys.egg-info/SOURCES.txt +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/django_microsys.egg-info/dependency_links.txt +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/django_microsys.egg-info/entry_points.txt +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/django_microsys.egg-info/requires.txt +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/django_microsys.egg-info/top_level.txt +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/__main__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/admin.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/api.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/apps.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/cli.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/constants.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/discovery.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/fetcher.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/filters.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/fonts.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/formats/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/formats/ar/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/formats/ar/formats.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/formats/en/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/formats/en/formats.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/guards.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/management/commands/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/management/commands/microsys_check.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/management/commands/microsys_setup.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/management/commands/migrator.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/management/commands/seed_activity_log.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/managers.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/middleware.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/migrations/0001_initial.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/migrations/0002_public_registration.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/migrations/0003_public_root_split.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/migrations/0004_client_ip_and_trusted_devices.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/migrations/0005_systemsettings_allow_user_font_override_and_more.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/migrations/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/models.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/patches.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/registration.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/README.md.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/__init__.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/apps.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/filters.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/forms.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/migrations/__init__.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/models.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/tables.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/templates/example_record_confirm_delete.html.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/templates/example_record_detail.html.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/templates/example_record_form.html.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/templates/example_record_list.html.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/tests/__init__.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/tests/test_app.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/translations.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/urls.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/app/views.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/.nginx/nginx.conf.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/.secrets/.env.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/Dockerfile.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/README.md.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/compose.dev.yml.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/compose.yml.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/dockerignore.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/docs/README.md.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/entrypoint.sh.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/gitattributes.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/gitignore.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/gunicorn.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/manage.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/package/__init__.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/package/asgi.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/package/celery.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/package/settings.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/package/urls.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/package/wsgi.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/req.txt.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/start.ps1.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/start.sh.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/tests/__init__.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/tests/test_scaffold.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/scaffold_templates/project/tools/smtp_relay.py.tmpl +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/signals.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap-icons.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap-icons.woff +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap-icons.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap.bundle.min.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap.min.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap.min.css.map +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap.rtl.min.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/bootstrap/bootstrap.rtl.min.css.map +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/favicon.ico +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/img/base_logo.webp +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/img/default_profile.webp +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/img/login_logo.webp +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/accessibility/css/main.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/accessibility/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/activitylog/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/TwemojiCountryFlags.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/cairo-bold.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/cairo-medium.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/cairo-regular.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/shabwa-bold.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/shabwa-medium.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/fonts/shabwa-regular.woff2 +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/forms/css/file_field.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/forms/css/form_actions.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/forms/css/form_fields.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/forms/js/file_field.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/forms/js/filter_form.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/autofill/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/context_menu/css/main.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/context_menu/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/context_menu/js/section_manager.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/dynamic_modal/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/prevent_double_submit.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/scan_link/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/scan_link/js/scan_button.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/helpers/wizard/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/language/css/main.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/language/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/language/js/translations.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/buttons.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/dropdowns.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/index_cards.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/main.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/options.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/pagination.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/selectors.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/tables.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/template_cleanup.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/titlebar.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/base_head.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/base_runtime.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/selectors.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/tables.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sections/js/manage_sections.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/css/main.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/css/reorder.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/css/theme_picker.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/js/preload.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/js/reorder.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/sidebar/js/theme_picker.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/blue.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/dark.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/gold.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/gothic.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/green.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/light.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/mono.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/neon.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/red.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/css/retro.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/themes/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/tutorial/css/main.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/tutorial/js/driver.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/tutorial/js/main.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/css/login.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/css/permissions.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/css/profile.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/css/user_hub.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/login.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/manage_users.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/permissions.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/profile_2fa.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/profile_image_widget.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/twofa_verify.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/users/js/user_hub.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/vanillajs-datepicker/datepicker-bs5.min.css +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/vanillajs-datepicker/datepicker.min.js +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/tables.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/bootstrap5/layout/field_file.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/2fa/verify.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/activitylog/activity_log.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/activitylog/activity_log_detail_modal.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/base.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/form_base.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/forms/assets_head.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/forms/assets_scripts.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/forms/crispy_file_field.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/forms/file_input.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/forms/filter_assets_head.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/forms/filter_assets_scripts.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/helpers/dynamic_modal.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/helpers/dynamic_modal_combined.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/helpers/dynamic_modal_detail.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/helpers/dynamic_modal_form.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/helpers/dynamic_modal_list.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/helpers/micro_context_menu.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/font_settings_matrix.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/language_catalog_editor.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/language_fonts_editor.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/language_previews.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/sidebar_builder.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/sidebar_density_previews.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/sidebar_items.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/system_names_editor.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/system_setup.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/table_density_previews.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/theme_previews.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/theme_settings_matrix.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/titlebar.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/translation_matrix_editor.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/tutorial.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/list_base.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/registration/pending.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/scopes/scope_actions.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/scopes/scope_form.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/scopes/scope_manager.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/sections/manage_sections.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/sections/subsection_select.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/sidebar/auto.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/sidebar/extra_groups.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/sidebar/main.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/sidebar/tree.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/tables/table.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/users/grouped_permissions.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/users/manage_users.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/users/profile.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/users/profile_image_widget.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/users/user_detail_modal.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/users/user_hub.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/registration/email/verify_registration.txt +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/registration/login.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/registration/register.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/registration/register_sent.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/registration/register_verify.html +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templatetags/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templatetags/microsys_tags.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templatetags/microsys_translation.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templatetags/sidebar_tags.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/themes.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/translations.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/urls.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/__init__.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/activitylog.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/general.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/profile.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/registration.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/scopes.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/sidebar.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/twofa.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/views/users.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/widgets.py +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/pyproject.toml +0 -0
- {django_microsys-2.2.1 → django_microsys-2.2.3}/setup.cfg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.2.3
|
|
@@ -346,6 +346,7 @@ def microsys_context(request):
|
|
|
346
346
|
from .fonts import generate_font_face_css, get_builtin_fonts
|
|
347
347
|
allowed_fonts = normalize_allowed_fonts(final_config.get('allowed_fonts'))
|
|
348
348
|
context['font_face_css'] = generate_font_face_css(allowed_fonts)
|
|
349
|
+
context['option_fonts'] = [font for font in get_builtin_fonts() if font.get('slug') in allowed_fonts]
|
|
349
350
|
|
|
350
351
|
allow_user_font_override = bool(final_config.get('allow_user_font_override', True))
|
|
351
352
|
default_fonts_by_lang = final_config.get('default_fonts', {})
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# Imports of the required python modules and libraries
|
|
2
2
|
######################################################
|
|
3
|
+
import os
|
|
3
4
|
import json
|
|
4
5
|
from types import MethodType, SimpleNamespace
|
|
5
6
|
|
|
@@ -1686,6 +1687,12 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
1686
1687
|
if parsed_step in (0, 1, 2, 3, 4, 5):
|
|
1687
1688
|
self.single_step_mode = True
|
|
1688
1689
|
self.single_step_index = parsed_step
|
|
1690
|
+
if self.mode != 'setup' and self.single_step_mode:
|
|
1691
|
+
# Single-step modal posts can legitimately omit values owned by another
|
|
1692
|
+
# wizard step; field-level required validation must not fire before the
|
|
1693
|
+
# step-preservation cleaners get a chance to restore them.
|
|
1694
|
+
self.fields['default_theme'].required = False
|
|
1695
|
+
self.fields['default_table_density'].required = False
|
|
1689
1696
|
|
|
1690
1697
|
from microsys.discovery import discover_sidebar_catalog, sanitize_sidebar_config
|
|
1691
1698
|
from microsys.utils import get_system_config
|
|
@@ -2873,12 +2880,27 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2873
2880
|
return str(self.cleaned_data.get('default_language') or 'en').strip().lower().replace('_', '-')
|
|
2874
2881
|
|
|
2875
2882
|
def clean_allowed_fonts(self):
|
|
2883
|
+
if self.is_bound and self.mode != 'setup' and self.single_step_mode and 'allowed_fonts' not in self.data:
|
|
2884
|
+
preserved = getattr(self.instance, 'allowed_fonts', None)
|
|
2885
|
+
if preserved in (None, ''):
|
|
2886
|
+
preserved = self.initial.get('allowed_fonts')
|
|
2887
|
+
return list(normalize_allowed_fonts(preserved))
|
|
2876
2888
|
data = self.cleaned_data.get('allowed_fonts')
|
|
2877
2889
|
if not data:
|
|
2878
2890
|
return []
|
|
2879
2891
|
return list(data)
|
|
2880
2892
|
|
|
2881
2893
|
def clean_default_fonts(self):
|
|
2894
|
+
if self.is_bound and self.mode != 'setup' and self.single_step_mode and 'default_fonts' not in self.data:
|
|
2895
|
+
preserved = getattr(self.instance, 'default_fonts', None)
|
|
2896
|
+
if preserved in (None, ''):
|
|
2897
|
+
preserved = self.initial.get('default_fonts')
|
|
2898
|
+
if isinstance(preserved, str):
|
|
2899
|
+
try:
|
|
2900
|
+
preserved = json.loads(preserved)
|
|
2901
|
+
except json.JSONDecodeError:
|
|
2902
|
+
preserved = {}
|
|
2903
|
+
return preserved if isinstance(preserved, dict) else {}
|
|
2882
2904
|
data = self.cleaned_data.get('default_fonts')
|
|
2883
2905
|
if not data:
|
|
2884
2906
|
return {}
|
|
@@ -2891,12 +2913,27 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2891
2913
|
return {}
|
|
2892
2914
|
|
|
2893
2915
|
def clean_default_theme(self):
|
|
2894
|
-
|
|
2916
|
+
if self.is_bound and self.mode != 'setup' and self.single_step_mode and 'default_theme' not in self.data:
|
|
2917
|
+
value = (
|
|
2918
|
+
getattr(self.instance, 'default_theme', None)
|
|
2919
|
+
or self.initial.get('default_theme')
|
|
2920
|
+
or 'light'
|
|
2921
|
+
)
|
|
2922
|
+
else:
|
|
2923
|
+
value = self.cleaned_data.get('default_theme') or 'light'
|
|
2895
2924
|
if not is_valid_theme(value):
|
|
2896
2925
|
raise ValidationError("Invalid theme choice.")
|
|
2897
2926
|
return value
|
|
2898
2927
|
|
|
2899
2928
|
def clean_allowed_themes(self):
|
|
2929
|
+
if self.is_bound and self.mode != 'setup' and self.single_step_mode and 'allowed_themes' not in self.data:
|
|
2930
|
+
values = getattr(self.instance, 'allowed_themes', None)
|
|
2931
|
+
if not values:
|
|
2932
|
+
values = self.initial.get('allowed_themes')
|
|
2933
|
+
normalized = list(normalize_allowed_themes(values))
|
|
2934
|
+
if not normalized:
|
|
2935
|
+
raise ValidationError("At least one theme must remain enabled.")
|
|
2936
|
+
return normalized
|
|
2900
2937
|
values = self.cleaned_data.get('allowed_themes') or []
|
|
2901
2938
|
if not values:
|
|
2902
2939
|
raise ValidationError("At least one theme must remain enabled.")
|
|
@@ -2906,7 +2943,14 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2906
2943
|
return normalized
|
|
2907
2944
|
|
|
2908
2945
|
def clean_default_table_density(self):
|
|
2909
|
-
|
|
2946
|
+
if self.is_bound and self.mode != 'setup' and self.single_step_mode and 'default_table_density' not in self.data:
|
|
2947
|
+
value = (
|
|
2948
|
+
getattr(self.instance, 'default_table_density', None)
|
|
2949
|
+
or self.initial.get('default_table_density')
|
|
2950
|
+
or DEFAULT_TABLE_DENSITY
|
|
2951
|
+
)
|
|
2952
|
+
else:
|
|
2953
|
+
value = self.cleaned_data.get('default_table_density') or DEFAULT_TABLE_DENSITY
|
|
2910
2954
|
if value not in TABLE_DENSITY_VALUES:
|
|
2911
2955
|
raise ValidationError("Invalid table density choice.")
|
|
2912
2956
|
return value
|
|
@@ -3246,13 +3290,43 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
3246
3290
|
if cleaned.get('registration_activation_mode') not in REGISTRATION_ACTIVATION_VALUES:
|
|
3247
3291
|
cleaned['registration_activation_mode'] = 'auto_login_after_verify'
|
|
3248
3292
|
email_ready = get_email_service_status().get('available')
|
|
3249
|
-
|
|
3293
|
+
backend = getattr(settings, 'EMAIL_BACKEND', 'django.core.mail.backends.smtp.EmailBackend')
|
|
3294
|
+
local_backends = {
|
|
3295
|
+
'django.core.mail.backends.console.EmailBackend',
|
|
3296
|
+
'django.core.mail.backends.locmem.EmailBackend',
|
|
3297
|
+
'django.core.mail.backends.filebased.EmailBackend',
|
|
3298
|
+
}
|
|
3299
|
+
if backend in local_backends and getattr(settings, 'DEBUG', False):
|
|
3300
|
+
email_ready = True
|
|
3301
|
+
elif email_config.get('transport') == 'relay':
|
|
3302
|
+
relay_host = str(email_config.get('host') or os.getenv('SMTP_RELAY_HOST') or '').strip()
|
|
3303
|
+
relay_port = email_config.get('port')
|
|
3304
|
+
relay_from_email = str(
|
|
3305
|
+
email_config.get('default_from_email')
|
|
3306
|
+
or getattr(settings, 'DEFAULT_FROM_EMAIL', '')
|
|
3307
|
+
or os.getenv('DEFAULT_FROM_EMAIL')
|
|
3308
|
+
or ''
|
|
3309
|
+
).strip()
|
|
3310
|
+
relay_password_ok = True
|
|
3311
|
+
if email_config.get('secret_storage') == 'encrypted_db' and email_config.get('username'):
|
|
3312
|
+
relay_password_ok = bool(email_config.get('encrypted_password'))
|
|
3313
|
+
email_ready = bool(relay_host and relay_port and relay_from_email and relay_password_ok)
|
|
3314
|
+
elif email_config.get('secret_storage') == 'encrypted_db':
|
|
3250
3315
|
email_ready = bool(
|
|
3251
3316
|
email_config.get('host')
|
|
3252
3317
|
and email_config.get('port')
|
|
3253
3318
|
and email_config.get('default_from_email')
|
|
3254
3319
|
and (not email_config.get('username') or email_config.get('encrypted_password'))
|
|
3255
3320
|
)
|
|
3321
|
+
elif backend == 'django.core.mail.backends.smtp.EmailBackend':
|
|
3322
|
+
email_ready = bool(
|
|
3323
|
+
(email_config.get('host') or getattr(settings, 'EMAIL_HOST', ''))
|
|
3324
|
+
and (email_config.get('port') or getattr(settings, 'EMAIL_PORT', None))
|
|
3325
|
+
and (
|
|
3326
|
+
email_config.get('default_from_email')
|
|
3327
|
+
or getattr(settings, 'DEFAULT_FROM_EMAIL', '')
|
|
3328
|
+
)
|
|
3329
|
+
)
|
|
3256
3330
|
if (cleaned.get('public_registration_enabled') or cleaned.get('email_2fa')) and not email_ready:
|
|
3257
3331
|
self.add_error(
|
|
3258
3332
|
'email_config',
|
{django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/css/system_setup.css
RENAMED
|
@@ -683,40 +683,29 @@
|
|
|
683
683
|
}
|
|
684
684
|
|
|
685
685
|
/* Font Previews Support */
|
|
686
|
-
.ms-font-
|
|
687
|
-
|
|
688
|
-
flex-wrap: wrap;
|
|
689
|
-
gap: 1rem;
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
.ms-font-preview-card {
|
|
693
|
-
width: 100px;
|
|
694
|
-
cursor: pointer;
|
|
695
|
-
transition: all 0.2s ease-in-out;
|
|
696
|
-
border-width: 2px !important;
|
|
697
|
-
text-align: center;
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
.ms-font-preview-card.active {
|
|
701
|
-
border-color: var(--primal) !important;
|
|
702
|
-
background-color: rgba(var(--primal-rgb), 0.05);
|
|
686
|
+
.ms-font-option {
|
|
687
|
+
align-items: center;
|
|
703
688
|
}
|
|
704
689
|
|
|
705
|
-
.ms-font-
|
|
706
|
-
|
|
690
|
+
.ms-font-option__icon {
|
|
691
|
+
width: 3.5rem;
|
|
692
|
+
height: 3.5rem;
|
|
693
|
+
border-radius: 1rem;
|
|
707
694
|
}
|
|
708
695
|
|
|
709
696
|
.font-preview-sample {
|
|
710
697
|
font-weight: 500;
|
|
698
|
+
font-size: 1.5rem;
|
|
699
|
+
line-height: 1;
|
|
711
700
|
}
|
|
712
701
|
|
|
713
702
|
/* Specific Font Mapping Rules for Previews */
|
|
714
|
-
.ms-font-
|
|
703
|
+
.ms-font-option[data-font="shabwa"] .font-preview-sample,
|
|
715
704
|
.ms-font-settings-option[data-font-option="shabwa"] .font-preview-sample {
|
|
716
705
|
font-family: 'Shabwa', sans-serif !important;
|
|
717
706
|
}
|
|
718
707
|
|
|
719
|
-
.ms-font-
|
|
708
|
+
.ms-font-option[data-font="cairo"] .font-preview-sample,
|
|
720
709
|
.ms-font-settings-option[data-font-option="cairo"] .font-preview-sample {
|
|
721
710
|
font-family: 'Cairo', sans-serif !important;
|
|
722
711
|
}
|
|
@@ -103,7 +103,9 @@
|
|
|
103
103
|
element.addEventListener('click', function () {
|
|
104
104
|
const font = this.getAttribute('data-font');
|
|
105
105
|
// Update local UI
|
|
106
|
-
document.querySelectorAll('[data-font]').forEach(
|
|
106
|
+
document.querySelectorAll('[data-font]').forEach((option) => {
|
|
107
|
+
option.classList.toggle('is-active', option === this);
|
|
108
|
+
});
|
|
107
109
|
|
|
108
110
|
// Apply immediately
|
|
109
111
|
const familyName = font.charAt(0).toUpperCase() + font.slice(1);
|
{django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/static/microsys/main/js/system_setup.js
RENAMED
|
@@ -2858,13 +2858,15 @@
|
|
|
2858
2858
|
input.value = activeTheme;
|
|
2859
2859
|
allowedCheckboxes.forEach((checkbox) => {
|
|
2860
2860
|
const theme = checkbox.getAttribute('data-setup-theme-allowed');
|
|
2861
|
-
|
|
2861
|
+
const isLocked = checkbox.checked && resolvedAllowedThemes.length === 1;
|
|
2862
|
+
checkbox.setAttribute('aria-disabled', isLocked ? 'true' : 'false');
|
|
2862
2863
|
const container = checkbox.closest('[data-theme-option]');
|
|
2863
2864
|
if (!container) {
|
|
2864
2865
|
return;
|
|
2865
2866
|
}
|
|
2866
2867
|
const isAllowed = resolvedAllowedThemes.includes(theme);
|
|
2867
2868
|
const isDefault = theme === activeTheme;
|
|
2869
|
+
container.classList.toggle('is-locked', isLocked);
|
|
2868
2870
|
container.classList.toggle('opacity-50', !isAllowed);
|
|
2869
2871
|
container.classList.toggle('is-default', isDefault);
|
|
2870
2872
|
const button = container.querySelector('[data-setup-theme-choice]');
|
|
@@ -2897,6 +2899,11 @@
|
|
|
2897
2899
|
});
|
|
2898
2900
|
|
|
2899
2901
|
allowedCheckboxes.forEach((checkbox) => {
|
|
2902
|
+
checkbox.addEventListener('click', (event) => {
|
|
2903
|
+
if (checkbox.checked && getAllowedThemes().length === 1) {
|
|
2904
|
+
event.preventDefault();
|
|
2905
|
+
}
|
|
2906
|
+
});
|
|
2900
2907
|
checkbox.addEventListener('change', () => {
|
|
2901
2908
|
if (!getAllowedThemes().length) {
|
|
2902
2909
|
checkbox.checked = true;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{% load static %}
|
|
2
|
+
<div class="ms-font-picker" id="msFontPreviews">
|
|
3
|
+
<div class="ms-density-options" role="group" aria-label="{{ MS_TRANS.typography }}">
|
|
4
|
+
{% for font in option_fonts %}
|
|
5
|
+
<button
|
|
6
|
+
type="button"
|
|
7
|
+
class="ms-density-option ms-font-option{% if selected_font == font.slug %} is-active{% endif %}"
|
|
8
|
+
data-font="{{ font.slug }}"
|
|
9
|
+
>
|
|
10
|
+
<span class="ms-density-option__icon ms-font-option__icon" aria-hidden="true">
|
|
11
|
+
<span class="font-preview-sample">Aa</span>
|
|
12
|
+
</span>
|
|
13
|
+
<span class="ms-density-option__copy">
|
|
14
|
+
<strong>{{ font.label }}</strong>
|
|
15
|
+
<small>{{ font.slug }}</small>
|
|
16
|
+
</span>
|
|
17
|
+
</button>
|
|
18
|
+
{% endfor %}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
{django_microsys-2.2.1 → django_microsys-2.2.3}/microsys/templates/microsys/includes/options.html
RENAMED
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
<h4 class="mb-3"><i class="bi bi-fonts me-2"></i> {{ MS_TRANS.typography }}</h4>
|
|
305
305
|
<p class="text-muted small mb-4">{{ MS_TRANS.typography_desc }}</p>
|
|
306
306
|
|
|
307
|
-
{% include 'microsys/includes/font_previews.html' with selected_font=active_font
|
|
307
|
+
{% include 'microsys/includes/font_previews.html' with selected_font=active_font option_fonts=option_fonts %}
|
|
308
308
|
</div>
|
|
309
309
|
</div>
|
|
310
310
|
{% endif %}
|