django-microsys 2.1.3__tar.gz → 2.1.4__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.1.3 → django_microsys-2.1.4}/PKG-INFO +1 -1
- {django_microsys-2.1.3 → django_microsys-2.1.4}/django_microsys.egg-info/PKG-INFO +1 -1
- {django_microsys-2.1.3 → django_microsys-2.1.4}/django_microsys.egg-info/SOURCES.txt +0 -1
- django_microsys-2.1.4/microsys/VERSION +1 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/forms.py +70 -37
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/wizard/js/main.js +16 -4
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/options.css +30 -12
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/system_setup.css +50 -4
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/options.js +12 -4
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/tutorial/js/main.js +1 -1
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/base.html +2 -2
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/options.html +11 -11
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/system_setup.html +1 -1
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/utils.py +2733 -2733
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/__init__.py +0 -3
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/users.py +2 -134
- django_microsys-2.1.3/microsys/VERSION +0 -1
- django_microsys-2.1.3/microsys/templates/microsys/users/user_form.html +0 -37
- {django_microsys-2.1.3 → django_microsys-2.1.4}/LICENSE +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/MANIFEST.in +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/README.md +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/django_microsys.egg-info/dependency_links.txt +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/django_microsys.egg-info/entry_points.txt +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/django_microsys.egg-info/requires.txt +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/django_microsys.egg-info/top_level.txt +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/__main__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/admin.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/api.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/apps.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/cli.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/constants.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/context_processors.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/discovery.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/fetcher.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/filters.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/formats/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/formats/ar/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/formats/ar/formats.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/formats/en/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/formats/en/formats.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/guards.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/management/commands/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/management/commands/microsys_check.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/management/commands/microsys_setup.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/management/commands/migrator.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/management/commands/seed_activity_log.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/managers.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/md2docx_v4.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/middleware.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/migrations/0001_initial.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/migrations/0002_public_registration.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/migrations/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/models.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/patches.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/registration.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/README.md.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/__init__.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/apps.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/filters.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/forms.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/migrations/__init__.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/models.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/tables.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/templates/example_record_confirm_delete.html.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/templates/example_record_detail.html.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/templates/example_record_form.html.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/templates/example_record_list.html.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/tests/__init__.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/tests/test_app.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/translations.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/urls.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/app/views.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/.nginx/nginx.conf.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/.secrets/.env.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/Dockerfile.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/README.md.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/compose.dev.yml.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/compose.yml.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/dockerignore.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/docs/README.md.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/entrypoint.sh.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/gitattributes.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/gitignore.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/gunicorn.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/manage.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/package/__init__.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/package/asgi.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/package/celery.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/package/settings.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/package/urls.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/package/wsgi.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/req.txt.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/start.ps1.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/start.sh.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/tests/__init__.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/tests/test_scaffold.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/scaffold_templates/project/tools/smtp_relay.py.tmpl +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/signals.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap-icons.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap-icons.woff +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap-icons.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap.bundle.min.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap.min.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap.min.css.map +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap.rtl.min.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/bootstrap/bootstrap.rtl.min.css.map +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/chart.js/chart.umd.min.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/favicon.ico +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/flatpickr/flatpickr.min.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/flatpickr/flatpickr.min.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/flatpickr/locale/ar.d.ts +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/flatpickr/locale/ar.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/img/base_logo.webp +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/img/default_profile.webp +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/img/login_logo.webp +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/accessibility/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/accessibility/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/activitylog/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/forms/css/file_field.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/forms/css/form_actions.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/forms/css/form_fields.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/forms/js/file_field.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/forms/js/filter_form.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/autofill/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/context_menu/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/context_menu/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/context_menu/js/section_manager.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/dynamic_modal/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/prevent_double_submit.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/scan_link/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/scan_link/js/scan_button.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/language/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/language/fonts/TwemojiCountryFlags.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/language/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/language/js/translations.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/buttons.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/charts.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/doc_detail.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/dropdowns.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/gen_pdf.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/gen_report.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/index_cards.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/navtabs.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/pagination.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/selectors.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/tables.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/template_cleanup.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/titlebar.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Amiri-Bold.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Amiri-BoldItalic.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Amiri-Italic.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Amiri-Regular.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Shabwa-Bold.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Shabwa-Medium.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/fonts/Shabwa.woff2 +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/anime.min.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/base_head.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/base_runtime.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/dashboard.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/selectors.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/system_setup.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/js/tables.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sections/js/manage_sections.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/css/reorder.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/css/theme_picker.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/js/preload.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/js/reorder.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/sidebar/js/theme_picker.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/blue.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/dark.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/gold.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/gothic.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/green.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/light.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/mono.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/neon.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/red.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/css/retro.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/themes/js/main.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/tutorial/css/main.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/tutorial/js/driver.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/css/login.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/css/permissions.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/css/profile.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/css/user_hub.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/js/login.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/js/manage_users.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/js/permissions.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/js/profile_2fa.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/js/twofa_verify.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/users/js/user_hub.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/widgets/js/profile_image_widget.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/vanillajs-datepicker/ar.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/vanillajs-datepicker/datepicker-bs5.min.css +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/vanillajs-datepicker/datepicker.min.js +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/tables.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/bootstrap5/layout/field_file.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/2fa/verify.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/activitylog/activity_log.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/activitylog/activity_log_detail_modal.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/form_base.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/assets_head.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/assets_scripts.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/checkbox_field.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/crispy_file_field.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/file_field.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/file_input.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/filter_assets_head.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/forms/filter_assets_scripts.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/dynamic_modal.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/dynamic_modal_combined.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/dynamic_modal_detail.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/dynamic_modal_form.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/dynamic_modal_list.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/global_list.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/micro_context_menu.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/helpers/scan_link.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/dashboard.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/language_catalog_editor.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/language_previews.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/sidebar_builder.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/sidebar_density_previews.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/sidebar_items.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/system_names_editor.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/table_density_previews.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/theme_previews.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/theme_settings_matrix.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/titlebar.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/translation_matrix_editor.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/tutorial.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/list_base.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/registration/pending.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/scopes/scope_actions.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/scopes/scope_form.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/scopes/scope_manager.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/sections/manage_sections.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/sections/subsection_select.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/sidebar/auto.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/sidebar/extra_groups.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/sidebar/main.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/sidebar/tree.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/tables/table.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/users/grouped_permissions.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/users/manage_users.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/users/profile.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/users/user_detail_modal.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/users/user_hub.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/widgets/profile_image_widget.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/registration/email/verify_registration.txt +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/registration/login.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/registration/register.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/registration/register_sent.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/registration/register_verify.html +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templatetags/__init__.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templatetags/microsys_tags.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templatetags/microsys_translation.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templatetags/sidebar_tags.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/themes.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/translations.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/urls.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/activitylog.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/general.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/profile.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/registration.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/scopes.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/sections.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/sidebar.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/views/twofa.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/widgets.py +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/pyproject.toml +0 -0
- {django_microsys-2.1.3 → django_microsys-2.1.4}/setup.cfg +0 -0
|
@@ -251,7 +251,6 @@ microsys/templates/microsys/users/grouped_permissions.html
|
|
|
251
251
|
microsys/templates/microsys/users/manage_users.html
|
|
252
252
|
microsys/templates/microsys/users/profile.html
|
|
253
253
|
microsys/templates/microsys/users/user_detail_modal.html
|
|
254
|
-
microsys/templates/microsys/users/user_form.html
|
|
255
254
|
microsys/templates/microsys/users/user_hub.html
|
|
256
255
|
microsys/templates/microsys/widgets/profile_image_widget.html
|
|
257
256
|
microsys/templates/registration/login.html
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.4
|
|
@@ -70,6 +70,25 @@ from .widgets import MicrosysChoiceSelectorWidget
|
|
|
70
70
|
User = get_user_model()
|
|
71
71
|
|
|
72
72
|
THEME_CHOICES = get_theme_choices()
|
|
73
|
+
PERMISSION_UI_EXCLUDED_APP_LABELS = [
|
|
74
|
+
'admin',
|
|
75
|
+
'contenttypes',
|
|
76
|
+
'sessions',
|
|
77
|
+
'django_celery_beat',
|
|
78
|
+
'health_check',
|
|
79
|
+
'db',
|
|
80
|
+
'corsheaders',
|
|
81
|
+
'csp',
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def get_assignable_permissions_queryset():
|
|
86
|
+
return Permissions.objects.exclude(
|
|
87
|
+
Q(codename__regex=r'^(delete_)') |
|
|
88
|
+
Q(content_type__app_label__in=PERMISSION_UI_EXCLUDED_APP_LABELS) |
|
|
89
|
+
(Q(content_type__app_label='microsys') & ~Q(codename__in=['manage_staff', 'manage_scopes', 'view_activitylog']) & ~Q(content_type__model='section')) |
|
|
90
|
+
Q(content_type__app_label='auth', content_type__model__in=['group', 'user', 'permission'])
|
|
91
|
+
)
|
|
73
92
|
|
|
74
93
|
|
|
75
94
|
class MicrosysAuthenticationForm(AuthenticationForm):
|
|
@@ -349,8 +368,8 @@ def build_settings_toggle_field(form, field_name, css_class=None, attrs=None):
|
|
|
349
368
|
f"<div class='ms-settings-toggle-field__label fw-semibold'>{label}</div>"
|
|
350
369
|
f"{help_html}"
|
|
351
370
|
f"</div>"
|
|
352
|
-
f"<div class='ms-settings-toggle-field__control form-
|
|
353
|
-
f"<input class='form-check-input' type='checkbox' id='{conditional_escape(bound_field.auto_id)}' "
|
|
371
|
+
f"<div class='ms-settings-toggle-field__control form-switch'>"
|
|
372
|
+
f"<input class='form-check-input ms-settings-toggle-field__input' type='checkbox' id='{conditional_escape(bound_field.auto_id)}' "
|
|
354
373
|
f"name='{conditional_escape(bound_field.html_name)}' aria-label='{label}'{checked_attr}{disabled_attr}>"
|
|
355
374
|
f"</div>"
|
|
356
375
|
f"</div>"
|
|
@@ -359,6 +378,34 @@ def build_settings_toggle_field(form, field_name, css_class=None, attrs=None):
|
|
|
359
378
|
return Div(HTML(wrapper_html), css_class=css_class, **(attrs or {}))
|
|
360
379
|
return HTML(wrapper_html)
|
|
361
380
|
|
|
381
|
+
|
|
382
|
+
def build_email_toggle_field(form, field_name, css_class=None, attrs=None):
|
|
383
|
+
bound_field = form[field_name]
|
|
384
|
+
field = bound_field.field
|
|
385
|
+
label = conditional_escape(field.label or field_name.replace('_', ' ').title())
|
|
386
|
+
help_text = str(field.help_text or '').strip()
|
|
387
|
+
help_html = (
|
|
388
|
+
f"<div class='ms-email-toggle-field__help small text-muted mt-1'>{conditional_escape(help_text)}</div>"
|
|
389
|
+
if help_text else
|
|
390
|
+
""
|
|
391
|
+
)
|
|
392
|
+
checked_attr = ' checked' if _boolean_field_checked(form, field_name) else ''
|
|
393
|
+
disabled_attr = ' disabled' if bool(getattr(field, 'disabled', False)) else ''
|
|
394
|
+
wrapper_html = mark_safe(
|
|
395
|
+
f"<div class='ms-email-toggle-field border rounded bg-light px-3 py-2 h-100' "
|
|
396
|
+
f"data-ms-email-toggle-field='{conditional_escape(field_name)}'>"
|
|
397
|
+
f"<div class='ms-email-toggle-field__row d-flex align-items-center justify-content-between gap-3'>"
|
|
398
|
+
f"<div class='ms-email-toggle-field__label fw-semibold'>{label}</div>"
|
|
399
|
+
f"<input class='form-check-input ms-email-toggle-field__input' type='checkbox' id='{conditional_escape(bound_field.auto_id)}' "
|
|
400
|
+
f"name='{conditional_escape(bound_field.html_name)}' aria-label='{label}'{checked_attr}{disabled_attr}>"
|
|
401
|
+
f"</div>"
|
|
402
|
+
f"{help_html}"
|
|
403
|
+
f"</div>"
|
|
404
|
+
)
|
|
405
|
+
if css_class:
|
|
406
|
+
return Div(HTML(wrapper_html), css_class=css_class, **(attrs or {}))
|
|
407
|
+
return HTML(wrapper_html)
|
|
408
|
+
|
|
362
409
|
class GroupedPermissionWidget(ChoiceWidget):
|
|
363
410
|
template_name = 'microsys/users/grouped_permissions.html'
|
|
364
411
|
allow_multiple_selected = True
|
|
@@ -405,21 +452,25 @@ class GroupedPermissionWidget(ChoiceWidget):
|
|
|
405
452
|
model_name = perm.content_type.model
|
|
406
453
|
codename = perm.codename
|
|
407
454
|
|
|
408
|
-
#
|
|
409
|
-
if app_label == 'microsys' and codename
|
|
455
|
+
# Keep staff-delegation permissions together in the dedicated staff-access UI.
|
|
456
|
+
if app_label == 'microsys' and codename in {'manage_staff', 'manage_scopes'}:
|
|
410
457
|
model_name = 'staff_access'
|
|
411
458
|
# Force model_verbose_name to match what _attach_is_staff_permission uses
|
|
412
459
|
# "perm_staff_access" string usually "Staff Permissions"
|
|
413
460
|
|
|
414
|
-
|
|
461
|
+
model_label_key = None
|
|
462
|
+
model_label_fallback = None
|
|
415
463
|
if app_label == 'microsys' and model_name == 'staff_access':
|
|
416
|
-
|
|
464
|
+
model_label_key = 'perm_staff_access'
|
|
465
|
+
model_label_fallback = "Staff Permissions"
|
|
417
466
|
elif app_label == 'microsys' and model_name == 'profile':
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
# model_verbose_name = "إدارة الأقسام الفرعية"
|
|
421
|
-
# else:
|
|
467
|
+
model_label_key = 'model_user'
|
|
468
|
+
|
|
422
469
|
model_class = perm.content_type.model_class()
|
|
470
|
+
if model_class is None and not (
|
|
471
|
+
app_label == 'microsys' and model_name in {'staff_access', 'profile'}
|
|
472
|
+
):
|
|
473
|
+
continue
|
|
423
474
|
if model_class:
|
|
424
475
|
# prefer plural verbose name if possible, or just verbose name
|
|
425
476
|
# But here we want to use our translation keys if available
|
|
@@ -427,9 +478,11 @@ class GroupedPermissionWidget(ChoiceWidget):
|
|
|
427
478
|
else:
|
|
428
479
|
default_verbose = perm.content_type.name
|
|
429
480
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
481
|
+
if model_label_key:
|
|
482
|
+
model_verbose_name = s.get(model_label_key, model_label_fallback or default_verbose)
|
|
483
|
+
else:
|
|
484
|
+
# Try translation key 'model_modelname' (e.g. model_user)
|
|
485
|
+
model_verbose_name = s.get(f"model_{model_name}", default_verbose)
|
|
433
486
|
|
|
434
487
|
# Fetch verbose app name
|
|
435
488
|
try:
|
|
@@ -552,17 +605,7 @@ class CustomUserCreationForm(UserCreationForm):
|
|
|
552
605
|
scope = forms.ModelChoiceField(queryset=None, required=False, label="Scope")
|
|
553
606
|
|
|
554
607
|
permissions = forms.ModelMultipleChoiceField(
|
|
555
|
-
queryset=
|
|
556
|
-
Q(codename__regex=r'^(delete_)') |
|
|
557
|
-
Q(content_type__app_label__in=[
|
|
558
|
-
'admin',
|
|
559
|
-
'contenttypes',
|
|
560
|
-
'sessions',
|
|
561
|
-
'django_celery_beat',
|
|
562
|
-
]) |
|
|
563
|
-
(Q(content_type__app_label='microsys') & ~Q(codename__in=['manage_staff', 'manage_scopes', 'view_activitylog']) & ~Q(content_type__model='section')) |
|
|
564
|
-
Q(content_type__app_label='auth', content_type__model__in=['group', 'user', 'permission'])
|
|
565
|
-
),
|
|
608
|
+
queryset=get_assignable_permissions_queryset(),
|
|
566
609
|
required=False,
|
|
567
610
|
widget=GroupedPermissionWidget,
|
|
568
611
|
label="Permissions"
|
|
@@ -888,17 +931,7 @@ class CustomUserPermissionsForm(UserChangeForm):
|
|
|
888
931
|
refresh_parent = True
|
|
889
932
|
|
|
890
933
|
permissions = forms.ModelMultipleChoiceField(
|
|
891
|
-
queryset=
|
|
892
|
-
Q(codename__regex=r'^(delete_)') |
|
|
893
|
-
Q(content_type__app_label__in=[
|
|
894
|
-
'admin',
|
|
895
|
-
'contenttypes',
|
|
896
|
-
'sessions',
|
|
897
|
-
'django_celery_beat',
|
|
898
|
-
]) |
|
|
899
|
-
(Q(content_type__app_label='microsys') & ~Q(codename__in=['manage_staff', 'manage_scopes', 'view_activitylog']) & ~Q(content_type__model='section')) |
|
|
900
|
-
Q(content_type__app_label='auth', content_type__model__in=['group', 'user', 'permission'])
|
|
901
|
-
),
|
|
934
|
+
queryset=get_assignable_permissions_queryset(),
|
|
902
935
|
required=False,
|
|
903
936
|
widget=GroupedPermissionWidget,
|
|
904
937
|
label="Permissions"
|
|
@@ -2205,8 +2238,8 @@ class SystemSettingsForm(forms.ModelForm):
|
|
|
2205
2238
|
Row(
|
|
2206
2239
|
Div(Field('email_config_host'), css_class='col-lg-4'),
|
|
2207
2240
|
Div(Field('email_config_port'), css_class='col-lg-2'),
|
|
2208
|
-
|
|
2209
|
-
|
|
2241
|
+
build_email_toggle_field(self, 'email_config_use_tls', css_class='col-lg-2'),
|
|
2242
|
+
build_email_toggle_field(self, 'email_config_use_ssl', css_class='col-lg-2'),
|
|
2210
2243
|
Div(Field('email_config_username'), css_class='col-lg-2'),
|
|
2211
2244
|
),
|
|
2212
2245
|
Row(
|
{django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/helpers/wizard/js/main.js
RENAMED
|
@@ -59,15 +59,27 @@
|
|
|
59
59
|
currentStep = resolvedStep;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
function setButtonVisibility(button, isVisible) {
|
|
63
|
+
if (!button) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
button.classList.toggle('d-none', !isVisible);
|
|
67
|
+
button.style.display = isVisible ? '' : 'none';
|
|
68
|
+
button.setAttribute('aria-hidden', isVisible ? 'false' : 'true');
|
|
69
|
+
}
|
|
70
|
+
|
|
62
71
|
function showStep(index) {
|
|
63
72
|
steps.forEach(function(step, i) {
|
|
64
|
-
|
|
73
|
+
const isActive = i === index;
|
|
74
|
+
step.classList.toggle('d-none', !isActive);
|
|
75
|
+
step.style.display = isActive ? '' : 'none';
|
|
76
|
+
step.setAttribute('aria-hidden', isActive ? 'false' : 'true');
|
|
65
77
|
});
|
|
66
78
|
|
|
67
79
|
// Button visibility
|
|
68
|
-
btnPrev
|
|
69
|
-
btnNext
|
|
70
|
-
btnSubmit
|
|
80
|
+
setButtonVisibility(btnPrev, index !== 0);
|
|
81
|
+
setButtonVisibility(btnNext, index !== steps.length - 1);
|
|
82
|
+
setButtonVisibility(btnSubmit, index === steps.length - 1);
|
|
71
83
|
|
|
72
84
|
currentStep = index;
|
|
73
85
|
}
|
{django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/options.css
RENAMED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
.ms-options-grid {
|
|
2
|
+
--ms-options-grid-gap: 1.35rem;
|
|
2
3
|
display: grid;
|
|
3
4
|
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
|
4
|
-
gap:
|
|
5
|
+
gap: var(--ms-options-grid-gap);
|
|
5
6
|
align-items: stretch;
|
|
6
7
|
grid-auto-flow: row dense;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
.ms-options-card {
|
|
11
|
+
position: relative;
|
|
10
12
|
min-width: 0;
|
|
11
13
|
}
|
|
12
14
|
|
|
@@ -26,7 +28,7 @@
|
|
|
26
28
|
linear-gradient(160deg, rgba(255, 255, 255, 0.94), rgba(var(--primal-rgb), 0.055));
|
|
27
29
|
box-shadow:
|
|
28
30
|
inset 0 1px 0 rgba(255, 255, 255, 0.45),
|
|
29
|
-
0
|
|
31
|
+
0 16px 30px -28px rgba(15, 23, 42, 0.28);
|
|
30
32
|
transition:
|
|
31
33
|
transform 0.2s ease,
|
|
32
34
|
border-color 0.2s ease,
|
|
@@ -123,25 +125,27 @@
|
|
|
123
125
|
box-shadow:
|
|
124
126
|
inset 0 1px 0 rgba(255, 255, 255, 0.45),
|
|
125
127
|
0 0 0 0.16rem rgba(var(--primal-rgb), 0.08),
|
|
126
|
-
0
|
|
128
|
+
0 18px 34px -28px rgba(15, 23, 42, 0.3);
|
|
127
129
|
}
|
|
128
130
|
|
|
129
|
-
.ms-options-card.is-drag-over-before
|
|
130
|
-
.ms-options-card.is-drag-over-after
|
|
131
|
+
.ms-options-card.is-drag-over-before::after,
|
|
132
|
+
.ms-options-card.is-drag-over-after::after {
|
|
131
133
|
content: "";
|
|
132
134
|
position: absolute;
|
|
133
|
-
inset-
|
|
134
|
-
|
|
135
|
+
inset-block: 1rem;
|
|
136
|
+
width: 3px;
|
|
135
137
|
border-radius: 999px;
|
|
136
138
|
background: rgba(var(--primal-rgb), 0.78);
|
|
139
|
+
z-index: 3;
|
|
140
|
+
pointer-events: none;
|
|
137
141
|
}
|
|
138
142
|
|
|
139
|
-
.ms-options-card.is-drag-over-before
|
|
140
|
-
|
|
143
|
+
.ms-options-card.is-drag-over-before::after {
|
|
144
|
+
inset-inline-start: calc((var(--ms-options-grid-gap) / -2) - 1.5px);
|
|
141
145
|
}
|
|
142
146
|
|
|
143
|
-
.ms-options-card.is-drag-over-after
|
|
144
|
-
|
|
147
|
+
.ms-options-card.is-drag-over-after::after {
|
|
148
|
+
inset-inline-end: calc((var(--ms-options-grid-gap) / -2) - 1.5px);
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
.ms-options-switch-list {
|
|
@@ -194,10 +198,24 @@
|
|
|
194
198
|
max-width: 100%;
|
|
195
199
|
}
|
|
196
200
|
|
|
201
|
+
.ms-options-system-info-table .table {
|
|
202
|
+
--bs-table-bg: transparent;
|
|
203
|
+
--bs-table-accent-bg: transparent;
|
|
204
|
+
--bs-table-striped-bg: transparent;
|
|
205
|
+
--bs-table-hover-bg: transparent;
|
|
206
|
+
margin-bottom: 0;
|
|
207
|
+
}
|
|
208
|
+
|
|
197
209
|
.ms-options-system-info-table th,
|
|
198
210
|
.ms-options-system-info-table td {
|
|
199
211
|
overflow-wrap: anywhere;
|
|
200
212
|
word-break: normal;
|
|
213
|
+
background: transparent !important;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.ms-options-system-info-table .progress {
|
|
217
|
+
background: rgba(var(--primal-rgb), 0.1);
|
|
218
|
+
box-shadow: inset 0 0 0 1px rgba(var(--primal-rgb), 0.08);
|
|
201
219
|
}
|
|
202
220
|
|
|
203
221
|
.ms-system-settings-actions .ms-system-settings-action {
|
|
@@ -361,8 +379,8 @@
|
|
|
361
379
|
|
|
362
380
|
@media (max-width: 576px) {
|
|
363
381
|
.ms-options-grid {
|
|
382
|
+
--ms-options-grid-gap: 1rem;
|
|
364
383
|
grid-template-columns: 1fr;
|
|
365
|
-
gap: 1rem;
|
|
366
384
|
}
|
|
367
385
|
|
|
368
386
|
.ms-options-panel {
|
{django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/main/css/system_setup.css
RENAMED
|
@@ -27,17 +27,58 @@
|
|
|
27
27
|
|
|
28
28
|
.ms-settings-toggle-field__label,
|
|
29
29
|
.ms-settings-toggle-field__help {
|
|
30
|
-
overflow-wrap:
|
|
30
|
+
overflow-wrap: break-word;
|
|
31
|
+
word-break: normal;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
.ms-settings-toggle-field__control {
|
|
34
35
|
margin-inline-start: auto;
|
|
35
|
-
padding
|
|
36
|
+
padding: 0;
|
|
37
|
+
min-height: 0;
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: flex-start;
|
|
40
|
+
justify-content: flex-end;
|
|
36
41
|
align-self: flex-start;
|
|
42
|
+
flex: 0 0 auto;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.ms-settings-toggle-field__control.form-switch {
|
|
46
|
+
padding-inline-start: 0;
|
|
37
47
|
}
|
|
38
48
|
|
|
39
|
-
.ms-settings-toggle-
|
|
49
|
+
.ms-settings-toggle-field__input.form-check-input {
|
|
40
50
|
max-width: 100%;
|
|
51
|
+
margin: 0;
|
|
52
|
+
float: none;
|
|
53
|
+
position: static;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ms-email-toggle-field {
|
|
57
|
+
width: 100%;
|
|
58
|
+
min-width: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.ms-email-toggle-field__row {
|
|
62
|
+
min-width: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ms-email-toggle-field__label,
|
|
66
|
+
.ms-email-toggle-field__help {
|
|
67
|
+
overflow-wrap: break-word;
|
|
68
|
+
word-break: normal;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.ms-email-toggle-field__label {
|
|
72
|
+
flex: 1 1 auto;
|
|
73
|
+
min-width: 0;
|
|
74
|
+
line-height: 1.2;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.ms-email-toggle-field__input.form-check-input {
|
|
78
|
+
margin: 0;
|
|
79
|
+
float: none;
|
|
80
|
+
position: static;
|
|
81
|
+
flex: 0 0 auto;
|
|
41
82
|
}
|
|
42
83
|
|
|
43
84
|
@container (max-width: 14rem) {
|
|
@@ -61,13 +102,18 @@
|
|
|
61
102
|
.ms-settings-toggle-field__control {
|
|
62
103
|
width: 100%;
|
|
63
104
|
margin-inline-start: 0;
|
|
64
|
-
padding-inline-start: 0;
|
|
65
105
|
display: flex;
|
|
66
106
|
justify-content: flex-end;
|
|
67
107
|
align-self: stretch;
|
|
68
108
|
}
|
|
69
109
|
}
|
|
70
110
|
|
|
111
|
+
@media (max-width: 991.98px) {
|
|
112
|
+
.ms-email-toggle-field {
|
|
113
|
+
min-height: auto;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
71
117
|
.ms-sidebar-dependent-settings.is-disabled {
|
|
72
118
|
opacity: 0.58;
|
|
73
119
|
}
|
|
@@ -290,13 +290,22 @@
|
|
|
290
290
|
});
|
|
291
291
|
}
|
|
292
292
|
|
|
293
|
+
function shouldInsertBefore(targetCard, event) {
|
|
294
|
+
const rect = targetCard.getBoundingClientRect();
|
|
295
|
+
const direction = window.getComputedStyle(targetCard).direction || document.documentElement.dir || 'ltr';
|
|
296
|
+
const midpoint = rect.left + (rect.width / 2);
|
|
297
|
+
if (direction === 'rtl') {
|
|
298
|
+
return event.clientX > midpoint;
|
|
299
|
+
}
|
|
300
|
+
return event.clientX < midpoint;
|
|
301
|
+
}
|
|
302
|
+
|
|
293
303
|
function placeDraggedCard(targetCard, event) {
|
|
294
304
|
if (!draggedCard || !targetCard || draggedCard === targetCard) {
|
|
295
305
|
return;
|
|
296
306
|
}
|
|
297
307
|
|
|
298
|
-
const
|
|
299
|
-
const insertBefore = event.clientY < rect.top + (rect.height / 2);
|
|
308
|
+
const insertBefore = shouldInsertBefore(targetCard, event);
|
|
300
309
|
targetCard.classList.toggle('is-drag-over-before', insertBefore);
|
|
301
310
|
targetCard.classList.toggle('is-drag-over-after', !insertBefore);
|
|
302
311
|
}
|
|
@@ -355,8 +364,7 @@
|
|
|
355
364
|
}
|
|
356
365
|
event.preventDefault();
|
|
357
366
|
|
|
358
|
-
const
|
|
359
|
-
const insertBefore = event.clientY < rect.top + (rect.height / 2);
|
|
367
|
+
const insertBefore = shouldInsertBefore(card, event);
|
|
360
368
|
if (insertBefore) {
|
|
361
369
|
grid.insertBefore(draggedCard, card);
|
|
362
370
|
} else {
|
{django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/static/microsys/tutorial/js/main.js
RENAMED
|
@@ -43,7 +43,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|
|
43
43
|
steps = [
|
|
44
44
|
sidebarStep,
|
|
45
45
|
{ element: 'input[name="keyword"]', popover: { title: t.search_title || 'Search', description: t.search_desc || 'Search users.', side: "right", align: 'center' }},
|
|
46
|
-
{ element: '
|
|
46
|
+
{ element: '[data-dynamic-modal][data-modal-title]', popover: { title: t.users_add_btn_title || 'Add User', description: t.users_add_btn_desc || 'Add new user.', side: "bottom", align: 'end' }},
|
|
47
47
|
{ element: '#btn-manage-scopes, #toggleScopes', popover: { title: t.users_scopes_title || 'Scopes', description: t.users_scopes_desc || 'Manage scopes.', side: "bottom", align: 'center' }},
|
|
48
48
|
{ element: '.badge', popover: { title: t.users_roles_title || 'User Roles', description: t.users_roles_desc || 'Role indicators.', side: "bottom", align: 'center' }},
|
|
49
49
|
{ element: '.table tbody tr', popover: { title: t.users_row_title || 'User Details', description: t.users_row_desc || 'Double click row.', side: "bottom", align: 'center' }},
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<link rel="stylesheet" href="{% static 'microsys/main/css/template_cleanup.css' %}?v=20260506a">
|
|
28
28
|
|
|
29
29
|
<link rel="stylesheet" href="{% static 'microsys/main/css/pagination.css' %}">
|
|
30
|
-
<link rel="stylesheet" href="{% static 'microsys/main/css/system_setup.css' %}?v=
|
|
30
|
+
<link rel="stylesheet" href="{% static 'microsys/main/css/system_setup.css' %}?v=20260508d">
|
|
31
31
|
{% for theme in MICROSYS_THEMES %}
|
|
32
32
|
<link rel="stylesheet" href="{% static theme.css_path %}?v=20260501b">
|
|
33
33
|
{% endfor %}
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<script src="{% static 'microsys/helpers/autofill/js/main.js' %}" nonce="{{ request.csp_nonce }}" defer></script>
|
|
51
51
|
<script src="{% static 'microsys/helpers/prevent_double_submit.js' %}" nonce="{{ request.csp_nonce }}" defer></script>
|
|
52
52
|
<script src="{% static 'microsys/users/js/user_hub.js' %}" nonce="{{ request.csp_nonce }}" defer></script>
|
|
53
|
-
<script src="{% static 'microsys/helpers/wizard/js/main.js' %}?v=
|
|
53
|
+
<script src="{% static 'microsys/helpers/wizard/js/main.js' %}?v=20260508a" nonce="{{ request.csp_nonce }}" defer></script>
|
|
54
54
|
<script src="{% static 'microsys/main/js/tables.js' %}?v=20260423a" nonce="{{ request.csp_nonce }}" defer></script>
|
|
55
55
|
<script src="{% static 'microsys/main/js/selectors.js' %}?v=20260422a" nonce="{{ request.csp_nonce }}" defer></script>
|
|
56
56
|
<script src="{% static 'microsys/main/js/system_setup.js' %}?v=20260506d" nonce="{{ request.csp_nonce }}" defer></script>
|
{django_microsys-2.1.3 → django_microsys-2.1.4}/microsys/templates/microsys/includes/options.html
RENAMED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
{% block extra_head %}
|
|
7
7
|
{% include "microsys/forms/assets_head.html" %}
|
|
8
|
-
<link rel="stylesheet" href="{% static 'microsys/main/css/options.css' %}?v=
|
|
8
|
+
<link rel="stylesheet" href="{% static 'microsys/main/css/options.css' %}?v=20260508e">
|
|
9
9
|
{% endblock %}
|
|
10
10
|
|
|
11
11
|
{% block content %}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
data-options-card-handle
|
|
23
23
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
24
24
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
25
|
-
<i class="bi bi-
|
|
25
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
26
26
|
</button>
|
|
27
27
|
<h4 class="mb-3"><i class="bi bi-eye me-2"></i> {{ MS_TRANS.accessibility }}</h4>
|
|
28
28
|
<p class="text-muted small mb-4">{{ MS_TRANS.accessibility_desc }}</p>
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
data-options-card-handle
|
|
72
72
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
73
73
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
74
|
-
<i class="bi bi-
|
|
74
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
75
75
|
</button>
|
|
76
76
|
<h4 class="mb-3"><i class="bi bi-info-circle me-2"></i> {{ MS_TRANS.system_info }}</h4>
|
|
77
77
|
<div class="table-responsive ms-options-system-info-table">
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
data-options-card-handle
|
|
218
218
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
219
219
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
220
|
-
<i class="bi bi-
|
|
220
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
221
221
|
</button>
|
|
222
222
|
<h4 class="mb-3"><i class="bi bi-palette me-2"></i> {{ MS_TRANS.themes }}</h4>
|
|
223
223
|
<p class="text-muted small mb-4">{{ MS_TRANS.themes_desc }}</p>
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
data-options-card-handle
|
|
235
235
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
236
236
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
237
|
-
<i class="bi bi-
|
|
237
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
238
238
|
</button>
|
|
239
239
|
<h4 class="mb-3"><i class="bi bi-translate me-2"></i> {{ MS_TRANS.language }}</h4>
|
|
240
240
|
<p class="text-muted small mb-4">{{ MS_TRANS.language_desc }}</p>
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
data-options-card-handle
|
|
256
256
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
257
257
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
258
|
-
<i class="bi bi-
|
|
258
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
259
259
|
</button>
|
|
260
260
|
|
|
261
261
|
{% if config.allow_user_theme_override and MICROSYS_THEMES|length > 1 %}
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
data-options-card-handle
|
|
299
299
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
300
300
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
301
|
-
<i class="bi bi-
|
|
301
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
302
302
|
</button>
|
|
303
303
|
<h4 class="mb-3"><i class="bi bi-table me-2"></i> {{ MS_TRANS.table_density|default:"Table Density" }}</h4>
|
|
304
304
|
<p class="text-muted small mb-4">{{ MS_TRANS.table_density_desc|default:"Control how much vertical space data tables use while you work." }}</p>
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
data-options-card-handle
|
|
316
316
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
317
317
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
318
|
-
<i class="bi bi-
|
|
318
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
319
319
|
</button>
|
|
320
320
|
<h4 class="mb-3"><i class="bi bi-layout-sidebar-inset me-2"></i> {{ MS_TRANS.sidebar_density|default:"Sidebar Density" }}</h4>
|
|
321
321
|
<p class="text-muted small mb-4">{{ MS_TRANS.sidebar_density_desc|default:"Control how much vertical space the sidebar navigation uses while you work." }}</p>
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
data-options-card-handle
|
|
333
333
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
334
334
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
335
|
-
<i class="bi bi-
|
|
335
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
336
336
|
</button>
|
|
337
337
|
<h4 class="mb-3"><i class="bi bi-magic me-2"></i> {{ MS_TRANS.autofill }}</h4>
|
|
338
338
|
<p class="text-muted small mb-4">{{ MS_TRANS.autofill_desc }}</p>
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
data-options-card-handle
|
|
362
362
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
363
363
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
364
|
-
<i class="bi bi-
|
|
364
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
365
365
|
</button>
|
|
366
366
|
<h4 class="mb-3 text-danger"><i class="bi bi-arrow-counterclockwise me-2"></i> {{ MS_TRANS.reset_defaults }}</h4>
|
|
367
367
|
<p class="text-muted small mb-4">{{ MS_TRANS.reset_desc }}</p>
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
data-options-card-handle
|
|
393
393
|
aria-label="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}"
|
|
394
394
|
title="{{ MS_TRANS.sidebar_reorder|default:'Reorder' }}">
|
|
395
|
-
<i class="bi bi-
|
|
395
|
+
<i class="bi bi-arrow-left-right"></i>
|
|
396
396
|
</button>
|
|
397
397
|
<h4 class="mb-3"><i class="bi bi-sliders me-2"></i> {{ MS_TRANS.system_settings_label }}</h4>
|
|
398
398
|
<p class="text-muted small mb-4">{{ MS_TRANS.system_settings_desc }}</p>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
{% block extra_head %}
|
|
8
8
|
{{ block.super }}
|
|
9
|
-
<link rel="stylesheet" href="{% static 'microsys/main/css/system_setup.css' %}?v=
|
|
9
|
+
<link rel="stylesheet" href="{% static 'microsys/main/css/system_setup.css' %}?v=20260508d">
|
|
10
10
|
{% endblock %}
|
|
11
11
|
|
|
12
12
|
{% block layout %}
|