accrete 0.0.146__tar.gz → 0.0.148__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.
- {accrete-0.0.146 → accrete-0.0.148}/PKG-INFO +1 -1
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/response.py +152 -69
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/css/accrete.css +1 -5
- accrete-0.0.148/accrete/contrib/ui/static/css/accrete.css.map +7 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/css/accrete.scss +1 -5
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/layout.html +6 -3
- accrete-0.0.148/accrete/contrib/ui/templates/ui/list.html +42 -0
- accrete-0.0.148/accrete/contrib/ui/templates/ui/table.html +75 -0
- accrete-0.0.148/accrete/contrib/ui/templates/ui/table_row_update.html +14 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/templatetags/field.html +9 -1
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html +1 -1
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templatetags/ui.py +7 -3
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/templates/user/change_email.html +2 -2
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/templates/user/change_password.html +3 -3
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/templates/user/user_preferences.html +6 -6
- {accrete-0.0.146 → accrete-0.0.148}/pyproject.toml +1 -1
- accrete-0.0.146/accrete/contrib/ui/static/css/accrete.css.map +0 -7
- accrete-0.0.146/accrete/contrib/ui/templates/ui/list.html +0 -45
- accrete-0.0.146/accrete/contrib/ui/templates/ui/table.html +0 -77
- accrete-0.0.146/accrete/contrib/ui/templates/ui/table_row_update.html +0 -14
- {accrete-0.0.146 → accrete-0.0.148}/.gitignore +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/LICENSE +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/README.md +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/config.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/context_processors.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/migrations/0002_auto_20250219_1759.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/migrations/0003_alter_country_options.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/country/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/config.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/helper.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/migrations/0002_log_user_alter_log_new_value_type_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/migrations/0003_alter_log_tenant.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/migrations/0004_logconfig_logconfigfield.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/migrations/0005_logconfig_exclude_fields_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/queries.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/signals.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/log/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/forms.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/migrations/0002_alter_sequence_name.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/migrations/0003_alter_sequence_tenant.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/queries.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/sequence/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/forms.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/tasks.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/system_mail/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/filter.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/middleware.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/LICENSE +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/README.md +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/bulma.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/bulma.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/bulma.css.map +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/bulma.min.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-dark-mode.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-dark-mode.css.map +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-dark-mode.min.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers-prefixed.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers-prefixed.css.map +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers-prefixed.min.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers.css.map +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-no-helpers.min.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-prefixed.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-prefixed.css.map +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/css/versions/bulma-prefixed.min.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/package.json +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/base/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/base/animations.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/base/generic.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/base/minireset.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/base/skeleton.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/breadcrumb.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/card.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/dropdown.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/menu.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/message.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/modal.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/navbar.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/pagination.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/panel.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/components/tabs.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/block.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/box.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/button.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/content.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/delete.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/icon.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/image.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/loader.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/notification.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/progress.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/table.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/tag.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/elements/title.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/checkbox-radio.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/file.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/input-textarea.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/select.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/shared.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/form/tools.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/grid/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/grid/columns.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/grid/grid.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/aspect-ratio.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/border.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/color.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/flexbox.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/float.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/gap.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/other.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/overflow.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/position.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/spacing.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/typography.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/helpers/visibility.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/container.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/footer.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/hero.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/level.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/media.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/layout/section.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/themes/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/themes/dark.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/themes/light.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/themes/setup.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/_index.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/controls.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/css-variables.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/derived-variables.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/extends.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/functions.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/initial-variables.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/sass/utilities/mixins.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/versions/bulma-no-dark-mode.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/versions/bulma-no-helpers-prefixed.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/versions/bulma-no-helpers.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/bulma/versions/bulma-prefixed.scss +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/css/fa.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/css/icons.css +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/icons/Logo.svg +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/icons/accrete.svg +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/js/alpine-3.14.9.js +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/js/alpine-focus-3.14.9.js +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/js/alpine-sort-3.14.9.js +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/js/filter.js +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/js/htmx.min.js +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-brands-400.ttf +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-brands-400.woff2 +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-regular-400.ttf +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-regular-400.woff2 +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-solid-900.ttf +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-solid-900.woff2 +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-v4compatibility.ttf +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/static/webfonts/fa-v4compatibility.woff2 +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/attrs.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/date.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/email.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/file.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/input.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/select.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/text.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/django/forms/widgets/textarea.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/content.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/content_right.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/detail.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/favicon.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/filter/filter.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/filter/query_input.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/filter/query_operator.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/filter/query_params.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/filter/query_tags.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/form_error.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/list_update.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/message.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/modal.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/oob.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/widgets/model_search_select.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templates/ui/widgets/model_search_select_options.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/templatetags/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/urls.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/widgets/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/ui/widgets/search_select.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/auth_backends.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/forms.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/locale/de/LC_MESSAGES/django.mo +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/locale/de/LC_MESSAGES/django.po +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/middleware.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0002_user_theme.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0003_alter_user_email.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0004_user_login_alter_user_email_user_email_or_login_set.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0005_remove_user_email_or_login_set_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0006_remove_user_email_or_login_set_user_is_managed_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0007_user_managed_login.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/0008_remove_user_no_email_for_managed_user_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/templates/user/login.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/templates/user/password_forgotten.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/urls.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/admin.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/apps.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/config.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/forms.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/templates/user_registration/mail_templates/confirmation_mail.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/templates/user_registration/registration.html +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/urls.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/contrib/user_registration/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/fields.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/forms.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/managers.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/middleware.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0001_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0002_initial.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0003_remove_member_name.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0004_rename_accessgroupmember_memberaccessgrouprel_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0005_accessgroup_apply_on_alter_member_access_groups_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0006_alter_member_user.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0007_accessgroup_description.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/0008_alter_member_access_groups_and_more.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/migrations/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/storage.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/tenant.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/tests.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/urls.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/utils/__init__.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/utils/dates.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/utils/forms.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/utils/log.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/utils/models.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/utils/views.py +0 -0
- {accrete-0.0.146 → accrete-0.0.148}/accrete/views.py +0 -0
@@ -21,9 +21,12 @@ class Response:
|
|
21
21
|
def add_trigger(response):
|
22
22
|
pass
|
23
23
|
|
24
|
+
def get_context(self):
|
25
|
+
return self.context
|
26
|
+
|
24
27
|
def render(self, request) -> str:
|
25
28
|
return render_to_string(
|
26
|
-
template_name=self.template, context=self.
|
29
|
+
template_name=self.template, context=self.get_context(), request=request
|
27
30
|
)
|
28
31
|
|
29
32
|
def response(self, request, extra_content: str = None, replace_body: bool = False) -> HttpResponse:
|
@@ -47,11 +50,18 @@ class OobResponse(Response):
|
|
47
50
|
|
48
51
|
def __init__(self, *, template: str, context: dict, swap: str, tag: str = 'div'):
|
49
52
|
super().__init__(template=self.oob_template, context=context)
|
50
|
-
self.
|
51
|
-
|
52
|
-
|
53
|
-
|
53
|
+
self.include_template = template
|
54
|
+
self.swap = swap
|
55
|
+
self.tag = tag
|
56
|
+
|
57
|
+
def get_context(self):
|
58
|
+
context = super().get_context()
|
59
|
+
context.update({'oob': {
|
60
|
+
'template': self.include_template,
|
61
|
+
'swap': self.swap,
|
62
|
+
'tag': self.tag
|
54
63
|
}})
|
64
|
+
return context
|
55
65
|
|
56
66
|
|
57
67
|
class WindowResponse(Response):
|
@@ -68,20 +78,29 @@ class WindowResponse(Response):
|
|
68
78
|
is_centered: bool = False
|
69
79
|
):
|
70
80
|
super().__init__(template=self.base_template, context=context)
|
81
|
+
self.title = title
|
82
|
+
self.overview_template = overview_template
|
83
|
+
self.header_template = header_template
|
71
84
|
self.panel_template = panel_template
|
72
|
-
|
73
|
-
|
74
|
-
self.context.update({
|
75
|
-
'title': title,
|
76
|
-
'overview_template': overview_template,
|
77
|
-
'header_template': header_template,
|
78
|
-
'panel_template': panel_template,
|
79
|
-
'is_centered': is_centered
|
80
|
-
})
|
85
|
+
self.panel_template = panel_template
|
86
|
+
self.is_centered = is_centered
|
81
87
|
|
82
88
|
def _has_panel(self):
|
83
89
|
return bool(self.panel_template)
|
84
90
|
|
91
|
+
def get_context(self):
|
92
|
+
context = super().get_context()
|
93
|
+
if 'has_panel' not in context.keys():
|
94
|
+
context.update(has_panel=self._has_panel())
|
95
|
+
context.update({
|
96
|
+
'title': self.title,
|
97
|
+
'overview_template': self.overview_template,
|
98
|
+
'header_template': self.header_template,
|
99
|
+
'panel_template': self.panel_template,
|
100
|
+
'is_centered': self.is_centered
|
101
|
+
})
|
102
|
+
return context
|
103
|
+
|
85
104
|
def response(self, request, extra_content: str = None, replace_body: bool = True) -> HttpResponse:
|
86
105
|
return super().response(request, extra_content, replace_body)
|
87
106
|
|
@@ -100,34 +119,50 @@ class ListResponse(WindowResponse):
|
|
100
119
|
panel_template: str = None,
|
101
120
|
column_count: int = 1,
|
102
121
|
column_height: str = '150px',
|
103
|
-
overview_template: str = 'ui/list.html'
|
122
|
+
overview_template: str = 'ui/list.html',
|
123
|
+
detail_header_template: str = None,
|
124
|
+
detail_data_template: str = None
|
104
125
|
):
|
105
126
|
assert page is not None or ui_filter is not None, _(
|
106
127
|
'Argument page or ui_filter must be supplied'
|
107
128
|
)
|
108
|
-
self.ui_filter = ui_filter
|
109
|
-
self.overview_template = overview_template
|
110
129
|
super().__init__(
|
111
130
|
title=title,
|
112
131
|
context=context,
|
113
|
-
overview_template=
|
132
|
+
overview_template=overview_template,
|
114
133
|
header_template=header_template,
|
115
134
|
panel_template=panel_template,
|
116
135
|
)
|
117
|
-
|
118
|
-
|
119
|
-
self.
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
})
|
136
|
+
self.page = page or (ui_filter and ui_filter.get_page())
|
137
|
+
self.list_entry_template = list_entry_template
|
138
|
+
self.page = page
|
139
|
+
self.ui_filter = ui_filter
|
140
|
+
self.endless_scroll = endless_scroll
|
141
|
+
self.column_count = column_count
|
142
|
+
self.column_height = column_height
|
143
|
+
self.detail_header_template = detail_header_template
|
144
|
+
self.detail_data_template = detail_data_template
|
127
145
|
|
128
146
|
def _has_panel(self):
|
129
147
|
return bool(self.panel_template or self.ui_filter)
|
130
148
|
|
149
|
+
def get_context(self):
|
150
|
+
context = super().get_context()
|
151
|
+
context.update({
|
152
|
+
'list_entry_template': self.list_entry_template,
|
153
|
+
'page': self.page,
|
154
|
+
'ui_filter': self.ui_filter,
|
155
|
+
'endless_scroll': self.endless_scroll,
|
156
|
+
'column_count': self.column_count,
|
157
|
+
'column_height': self.column_height,
|
158
|
+
'detail_header_template': self.detail_header_template,
|
159
|
+
'detail_data_template': self.detail_data_template,
|
160
|
+
'show_content_right': str(bool(
|
161
|
+
self.detail_header_template or self.detail_data_template
|
162
|
+
)).lower(),
|
163
|
+
})
|
164
|
+
return context
|
165
|
+
|
131
166
|
def response(self, request, extra_content: str = None, replace_body: bool = False) -> HttpResponse:
|
132
167
|
return super().response(request, extra_content, replace_body)
|
133
168
|
|
@@ -146,15 +181,24 @@ class ListEntryResponse(Response):
|
|
146
181
|
column_count: int = 1,
|
147
182
|
column_height: str = '150px',
|
148
183
|
):
|
149
|
-
self.page = page
|
150
184
|
super().__init__(template=self.base_template, context=context or {})
|
151
|
-
self.
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
185
|
+
self.instance = instance
|
186
|
+
self.list_entry_template = list_entry_template
|
187
|
+
self.page = page
|
188
|
+
self.is_new = is_new
|
189
|
+
self.column_count = column_count
|
190
|
+
self.column_height = column_height
|
191
|
+
|
192
|
+
def get_context(self):
|
193
|
+
context = super().get_context()
|
194
|
+
context.update({
|
195
|
+
'instance': self.instance,
|
196
|
+
'list_entry_template': self.list_entry_template,
|
197
|
+
'is_new': self.is_new,
|
198
|
+
'column_count': self.column_count,
|
199
|
+
'column_height': self.column_height
|
157
200
|
})
|
201
|
+
return context
|
158
202
|
|
159
203
|
def render(self, request) -> str:
|
160
204
|
res = super().render(request)
|
@@ -174,7 +218,7 @@ class TableResponse(WindowResponse):
|
|
174
218
|
self, *,
|
175
219
|
title: str,
|
176
220
|
context: dict,
|
177
|
-
|
221
|
+
instance_label: str,
|
178
222
|
fields: list[str],
|
179
223
|
footer: dict = None,
|
180
224
|
page: paginator.Page = None,
|
@@ -182,34 +226,49 @@ class TableResponse(WindowResponse):
|
|
182
226
|
endless_scroll: bool = True,
|
183
227
|
header_template: str = None,
|
184
228
|
panel_template: str = None,
|
185
|
-
overview_template: str = 'ui/table.html'
|
229
|
+
overview_template: str = 'ui/table.html',
|
230
|
+
detail_header_template: str = None,
|
231
|
+
detail_data_template: str = None
|
186
232
|
):
|
187
233
|
assert page is not None or ui_filter is not None, _(
|
188
234
|
'Argument page or ui_filter must be supplied'
|
189
235
|
)
|
190
|
-
self.ui_filter = ui_filter
|
191
|
-
self.overview_template = overview_template
|
192
236
|
super().__init__(
|
193
237
|
title=title,
|
194
238
|
context=context,
|
195
|
-
overview_template=
|
239
|
+
overview_template=overview_template,
|
196
240
|
header_template=header_template,
|
197
241
|
panel_template=panel_template
|
198
242
|
)
|
199
|
-
|
200
|
-
|
201
|
-
self.
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
'footer': footer
|
208
|
-
})
|
243
|
+
self.instance_label = instance_label
|
244
|
+
self.fields = fields
|
245
|
+
self.footer = footer
|
246
|
+
self.page = page or (ui_filter and ui_filter.get_page())
|
247
|
+
self.ui_filter = ui_filter
|
248
|
+
self.endless_scroll = endless_scroll
|
249
|
+
self.detail_header_template = detail_header_template
|
250
|
+
self.detail_data_template = detail_data_template
|
209
251
|
|
210
252
|
def _has_panel(self):
|
211
253
|
return bool(self.panel_template or self.ui_filter)
|
212
254
|
|
255
|
+
def get_context(self):
|
256
|
+
context = super().get_context()
|
257
|
+
context.update({
|
258
|
+
'page': self.page,
|
259
|
+
'ui_filter': self.ui_filter,
|
260
|
+
'endless_scroll': self.endless_scroll,
|
261
|
+
'fields': self.fields,
|
262
|
+
'instance_label': self.instance_label,
|
263
|
+
'footer': self.footer,
|
264
|
+
'detail_header_template': self.detail_header_template,
|
265
|
+
'detail_data_template': self.detail_data_template,
|
266
|
+
'show_content_right': str(bool(
|
267
|
+
self.detail_header_template or self.detail_data_template
|
268
|
+
)).lower()
|
269
|
+
})
|
270
|
+
return context
|
271
|
+
|
213
272
|
def response(self, request, extra_content: str = None, replace_body: bool = False) -> HttpResponse:
|
214
273
|
return super().response(request, extra_content, replace_body)
|
215
274
|
|
@@ -225,13 +284,21 @@ class TableRowResponse(Response):
|
|
225
284
|
footer: dict = None,
|
226
285
|
page: paginator.Page = None,
|
227
286
|
):
|
287
|
+
super().__init__(template=self.base_template, context={})
|
288
|
+
self.instance = instance
|
289
|
+
self.fields = fields
|
290
|
+
self.footer = footer
|
228
291
|
self.page = page
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
292
|
+
|
293
|
+
def get_context(self):
|
294
|
+
context = super().get_context()
|
295
|
+
context.update({
|
296
|
+
'instance': self.instance,
|
297
|
+
'fields': self.fields,
|
298
|
+
'footer': self.footer,
|
299
|
+
'page': self.page
|
300
|
+
})
|
301
|
+
return context
|
235
302
|
|
236
303
|
def render(self, request) -> str:
|
237
304
|
res = super().render(request)
|
@@ -252,19 +319,26 @@ class DetailResponse(Response):
|
|
252
319
|
def __init__(
|
253
320
|
self, *,
|
254
321
|
context: dict,
|
255
|
-
|
256
|
-
|
322
|
+
header_template: str = None,
|
323
|
+
data_template: str = None
|
257
324
|
):
|
258
325
|
super().__init__(template=self.base_template, context=context)
|
259
|
-
self.
|
260
|
-
|
261
|
-
|
262
|
-
})
|
326
|
+
self.header_template = header_template
|
327
|
+
self.data_template = data_template
|
328
|
+
self.context.update()
|
263
329
|
|
264
330
|
@staticmethod
|
265
331
|
def add_trigger(response):
|
266
332
|
add_trigger(response, 'activate-detail')
|
267
333
|
|
334
|
+
def get_context(self):
|
335
|
+
context = super().get_context()
|
336
|
+
context.update({
|
337
|
+
'detail_header_template': self.header_template,
|
338
|
+
'detail_data_template': self.data_template
|
339
|
+
})
|
340
|
+
return context
|
341
|
+
|
268
342
|
|
269
343
|
class ModalResponse(Response):
|
270
344
|
|
@@ -280,13 +354,22 @@ class ModalResponse(Response):
|
|
280
354
|
|
281
355
|
):
|
282
356
|
super().__init__(template=template, context=context)
|
283
|
-
self.
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
357
|
+
self.modal_id = modal_id
|
358
|
+
self.title = title
|
359
|
+
self.is_update = is_update
|
360
|
+
self.is_blocking = is_blocking
|
361
|
+
self.modal_width = modal_width
|
362
|
+
|
363
|
+
def get_context(self):
|
364
|
+
context = super().get_context()
|
365
|
+
context.update({
|
366
|
+
'title': self.title,
|
367
|
+
'modal_id': re.sub(r'[^A-Za-z-]+', '', self.modal_id).strip('-'),
|
368
|
+
'is_update': self.is_update,
|
369
|
+
'is_blocking': self.is_blocking,
|
370
|
+
'modal_width': self.modal_width
|
289
371
|
})
|
372
|
+
return context
|
290
373
|
|
291
374
|
|
292
375
|
@dataclass
|
@@ -303,7 +386,7 @@ class TriggerResponse:
|
|
303
386
|
|
304
387
|
def response(self):
|
305
388
|
res = HttpResponse()
|
306
|
-
res.headers['HX-Reswap'] = '
|
389
|
+
res.headers['HX-Reswap'] = 'none'
|
307
390
|
for trigger in self.trigger:
|
308
391
|
add_trigger(res, trigger.trigger, trigger.header)
|
309
392
|
return res
|
@@ -84,10 +84,6 @@ input[disabled] ~ .helptext {
|
|
84
84
|
font-weight: normal !important; }
|
85
85
|
|
86
86
|
textarea {
|
87
|
-
border-top: transparent !important;
|
88
|
-
border-right: transparent !important;
|
89
|
-
border-left: transparent !important;
|
90
|
-
border-radius: 0 !important;
|
91
87
|
box-shadow: none !important; }
|
92
88
|
|
93
89
|
textarea:focus {
|
@@ -161,7 +157,7 @@ select:focus {
|
|
161
157
|
max-width: calc(var(--accrete-detail-width) - 6%); }
|
162
158
|
|
163
159
|
.list-entry > .box:hover, .box.selected {
|
164
|
-
|
160
|
+
box-shadow: 0 0 5px 2px var(--bulma-success); }
|
165
161
|
|
166
162
|
.helptext {
|
167
163
|
font-style: italic !important;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"mappings": "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",
|
4
|
+
"sources": ["accrete.scss"],
|
5
|
+
"names": [],
|
6
|
+
"file": "accrete.css"
|
7
|
+
}
|
@@ -106,10 +106,6 @@ input[disabled] ~ .helptext {
|
|
106
106
|
}
|
107
107
|
|
108
108
|
textarea {
|
109
|
-
border-top: transparent!important;
|
110
|
-
border-right: transparent!important;
|
111
|
-
border-left: transparent!important;
|
112
|
-
border-radius: 0!important;
|
113
109
|
box-shadow: none!important;
|
114
110
|
}
|
115
111
|
|
@@ -199,7 +195,7 @@ select:focus {
|
|
199
195
|
}
|
200
196
|
|
201
197
|
.list-entry > .box:hover, .box.selected {
|
202
|
-
|
198
|
+
box-shadow: 0 0 5px 2px var(--bulma-success);
|
203
199
|
}
|
204
200
|
|
205
201
|
.helptext {
|
@@ -42,6 +42,7 @@
|
|
42
42
|
}
|
43
43
|
})
|
44
44
|
</script>
|
45
|
+
{% if script_template %}{% include script_template %}{% endif %}
|
45
46
|
<title>{% block title %}{{ title }}{% endblock %}</title>
|
46
47
|
{% endblock %}
|
47
48
|
</head>
|
@@ -137,7 +138,7 @@
|
|
137
138
|
{% endfor %}
|
138
139
|
</div>
|
139
140
|
|
140
|
-
<div x-data="{showContentRight: false}"
|
141
|
+
<div x-data="{showContentRight: {{ show_content_right|default_if_falsy:'false' }}}"
|
141
142
|
@activate-detail.window="showContentRight = true;"
|
142
143
|
@deactivate-detail.window="showContentRight = false;"
|
143
144
|
class="is-flex is-flex-direction-row"
|
@@ -197,7 +198,7 @@
|
|
197
198
|
</div>
|
198
199
|
</div>
|
199
200
|
|
200
|
-
<div id="detail-container" x-show="showContentRight" style="display: none;"
|
201
|
+
<div id="detail-container" x-show="showContentRight" {% if show_content_right != 'true' %}style="display: none;"{% endif %}
|
201
202
|
x-transition:enter.duration.200ms x-transition:leave.duration.50ms
|
202
203
|
>
|
203
204
|
<div id="detail-indicator" class="htmx-indicator">
|
@@ -208,7 +209,9 @@
|
|
208
209
|
<div id="detail-header" class="is-flex is-flex-wrap-wrap is-flex-grow-1">
|
209
210
|
{% if detail_header_template %}{% include detail_header_template %}{% endif %}
|
210
211
|
</div>
|
211
|
-
<button class="button is-light is-align-self-baseline" style="border-radius: var(--bulma-radius-medium)"
|
212
|
+
<button class="button is-light is-align-self-baseline" style="border-radius: var(--bulma-radius-medium)"
|
213
|
+
x-on:click="showContentRight = false; const url = new URL(window.location); url.searchParams.delete('detail'); history.replaceState(null, '', url);"
|
214
|
+
>
|
212
215
|
<span class="icon"><i class="fa fa-xmark"></i></span>
|
213
216
|
</button>
|
214
217
|
</div>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
{% load i18n %}
|
2
|
+
{% load ui %}
|
3
|
+
{% load partials %}
|
4
|
+
|
5
|
+
<div class="fixed-grid has-{{ column_count }}-cols has-1-cols-mobile m-2">
|
6
|
+
<div id="list-grid" class="grid m-0">
|
7
|
+
{% for instance in page.object_list %}
|
8
|
+
{% partialdef entry inline=True %}
|
9
|
+
<div id="list-entry-{{ instance.pk }}" class="list-entry cell pb-0" style="height: {{ column_height }}">
|
10
|
+
<div class="box p-3"
|
11
|
+
style="word-break: break-word; height: 100%; overflow-y: auto; {% if instance.get_absolute_url %}cursor:pointer;{% endif %}"
|
12
|
+
{% if instance.get_absolute_url %}
|
13
|
+
hx-get="{{ instance.get_absolute_url }}{% querystring %}" hx-swap="none" hx-indicator="#detail-indicator" hx-replace-url="{% querystring detail=instance.pk %}"
|
14
|
+
x-on:click="$dispatch('unselect-list-entry'); selected = true; $nextTick(() => { $el.scrollIntoView({block: 'nearest'}) });" x-bind:class="selected ? 'selected' : ''"
|
15
|
+
{% endif %}
|
16
|
+
x-data="{selected: false}" @unselect-list-entry.window="selected = false"
|
17
|
+
>
|
18
|
+
<div id="list-data-{{ instance.pk }}">
|
19
|
+
{% if list_entry_template %}
|
20
|
+
{% include list_entry_template %}
|
21
|
+
{% else %}
|
22
|
+
{{ instance }}
|
23
|
+
{% endif %}
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
{% endpartialdef %}
|
28
|
+
{% endfor %}
|
29
|
+
</div>
|
30
|
+
{% if endless_scroll and page.has_next %}
|
31
|
+
<div id="endless-scroller"
|
32
|
+
hx-get="{% querystring page=page.next_page_number %}"
|
33
|
+
hx-target="#list-grid"
|
34
|
+
hx-trigger="intersect once"
|
35
|
+
hx-select=".list-entry"
|
36
|
+
hx-select-oob="#pagination-next-button,#pagination-end-index,#endless-scroller"
|
37
|
+
hx-swap="beforeend"
|
38
|
+
hx-replace-url="true"
|
39
|
+
hx-indicator="#endless-scroll-indicator"></div>
|
40
|
+
<progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
|
41
|
+
{% endif %}
|
42
|
+
</div>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
{% load i18n %}
|
2
|
+
{% load ui %}
|
3
|
+
{% load partials %}
|
4
|
+
|
5
|
+
<table id="content-table" class="table can-compact is-fullwidth is-hoverable is-narrow my-0" hx-indicator=".htmx-indicator" x-data="">
|
6
|
+
<thead style="position: sticky; top: 0; z-index: 10; background-color: var(--bulma-scheme-main)">
|
7
|
+
<tr>
|
8
|
+
<th>{{ instance_label }}</th>
|
9
|
+
{% for field in fields %}
|
10
|
+
<th style="text-align: {{ page.object_list|table_alignment:field }}">{{ page.object_list|verbose_field_name:field }}</th>
|
11
|
+
{% endfor %}
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
<tbody id="content-table-body" style="z-index: 9" x-ref="tbody">
|
15
|
+
{% for instance in page.object_list %}
|
16
|
+
{% partialdef tr inline=True %}
|
17
|
+
<tr id="tr-{{ instance.pk }}"
|
18
|
+
{% if instance.get_absolute_url %}
|
19
|
+
style="cursor: pointer;"
|
20
|
+
hx-get="{{ instance.get_absolute_url }}{% querystring %}" hx-swap="none"
|
21
|
+
hx-replace-url="{% querystring detail=instance.pk %}"
|
22
|
+
x-data="{selected: false}" @unselect-tr.window="selected = false"
|
23
|
+
x-on:click="$dispatch('unselect-tr'); selected = true; $nextTick(() => { $el.scrollIntoView( {block: 'nearest'} ) });" x-bind:class="selected ? 'is-success' : ''"
|
24
|
+
{% endif %}
|
25
|
+
>
|
26
|
+
{% partialdef td inline=True %}
|
27
|
+
<td>{{ instance }}</td>
|
28
|
+
{% for field in fields %}
|
29
|
+
<td style="text-align: {{ instance|table_alignment:field }}">
|
30
|
+
<span class="">
|
31
|
+
<span class="responsive-heading has-text-weight-light" style="margin-right: .2rem">{{ instance|verbose_field_name:field }}:</span>
|
32
|
+
{{ instance|table_display:field|default_if_none:'' }}
|
33
|
+
</span>
|
34
|
+
</td>
|
35
|
+
{% endfor %}
|
36
|
+
{% endpartialdef %}
|
37
|
+
</tr>
|
38
|
+
{% endpartialdef %}
|
39
|
+
{% endfor %}
|
40
|
+
</tbody>
|
41
|
+
<tfoot style="position: sticky; bottom: 0; z-index: 10; background-color: var(--bulma-scheme-main);" class="has-text-weight-bold">
|
42
|
+
<tr id="tf-row">
|
43
|
+
{% partialdef tf inline=True %}
|
44
|
+
<td class="p-0"></td>
|
45
|
+
{% for field in fields %}
|
46
|
+
{% if field in footer %}
|
47
|
+
<td style="text-align: {{ page.object_list|table_alignment:field }}">
|
48
|
+
<span class="">
|
49
|
+
<span class="responsive-heading has-text-weight-light" style="margin-right: .2rem">{{ page.object_list|verbose_field_name:field }}:</span>
|
50
|
+
{{ footer|get_item:field }}
|
51
|
+
</span>
|
52
|
+
</td>
|
53
|
+
{% else %}
|
54
|
+
<td class="p-0"></td>
|
55
|
+
{% endif %}
|
56
|
+
{% endfor %}
|
57
|
+
{% endpartialdef %}
|
58
|
+
</tr>
|
59
|
+
</tfoot>
|
60
|
+
</table>
|
61
|
+
|
62
|
+
<div id="endless-scroller"
|
63
|
+
{% if page.has_next %}
|
64
|
+
hx-get="{% querystring page=page.next_page_number %}"
|
65
|
+
hx-trigger="intersect once"
|
66
|
+
hx-select="tbody > tr"
|
67
|
+
hx-target="#content-table-body"
|
68
|
+
hx-swap="beforeend"
|
69
|
+
hx-select-oob="#pagination-next-button,#pagination-end-index,#endless-scroller"
|
70
|
+
hx-indicator="#endless-scroll-indicator"
|
71
|
+
hx-replace-url="true"
|
72
|
+
{% endif %}
|
73
|
+
>
|
74
|
+
</div>
|
75
|
+
<progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<table>
|
2
|
+
<tbody>
|
3
|
+
<tr hx-swap-oob="innerHTML:#tr-{{ instance.pk }}">
|
4
|
+
{% include 'ui/table.html#td' with instance=instance fields=fields page=page %}
|
5
|
+
</tr>
|
6
|
+
</tbody>
|
7
|
+
{% if footer %}
|
8
|
+
<tfoot>
|
9
|
+
<tr hx-swap-oob="innerHTML:#tf-row">
|
10
|
+
{% include 'ui/table.html#tf' with instance=instance fields=fields page=page %}
|
11
|
+
</tr>
|
12
|
+
</tfoot>
|
13
|
+
{% endif %}
|
14
|
+
</table>
|
@@ -5,7 +5,15 @@
|
|
5
5
|
<label class="label mt-2 mb-5">
|
6
6
|
{{ field }}
|
7
7
|
<span class="has-text-danger is-size-6">{{ field.errors }}</span>
|
8
|
-
<
|
8
|
+
<span class="helptext {% if field.field.required %}has-text-weight-bold{% endif %}">{% if label %}{{ label }}{% else %}{{ field.help_text|default_if_falsy:field.label }}{% endif %}</span>
|
9
|
+
</label>
|
10
|
+
{% endpartialdef %}
|
11
|
+
|
12
|
+
{% partialdef textarea %}
|
13
|
+
<label class="label mt-2 mb-5">
|
14
|
+
<span class="helptext {% if field.field.required %}has-text-weight-bold{% endif %}">{% if label %}{{ label }}{% else %}{{ field.help_text|default_if_falsy:field.label }}{% endif %}</span>
|
15
|
+
<span class="has-text-danger is-size-6">{{ field.errors }}</span>
|
16
|
+
{{ field }}
|
9
17
|
</label>
|
10
18
|
{% endpartialdef %}
|
11
19
|
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<div id="{{ widget.attrs.id }}_display" class="input select py-1 pl-1" tabindex="0" x-ref="inputDisplay" aria-label="inputDisplay"
|
14
14
|
style="padding-right: 30px; border-radius: 0; border-top: 0; border-right:0; border-left: 0; min-height: var(--bulma-control-height); height: fit-content; width: 100%"
|
15
15
|
x-on:keydown="if (![9, 27, 38, 40].includes($event.keyCode)) {$refs.searchInput.focus();}"
|
16
|
-
x-on:
|
16
|
+
x-on:click.stop="if (!$event.target.classList.contains('delete')) {if (open) {open = false; } else {open = true; $refs.searchInput.focus();}}"
|
17
17
|
>
|
18
18
|
<div class="tags" x-ref="inputDisplayTags"
|
19
19
|
x-on:click="
|
@@ -8,6 +8,7 @@ from django.db.models import Manager, DecimalField, IntegerField, FloatField, Mo
|
|
8
8
|
from django.apps import apps
|
9
9
|
from django.template.loader import render_to_string
|
10
10
|
from django.utils.safestring import mark_safe
|
11
|
+
from django.forms import widgets
|
11
12
|
|
12
13
|
_logger = logging.getLogger(__name__)
|
13
14
|
register = template.Library()
|
@@ -149,8 +150,11 @@ def x_ref_save(param: str):
|
|
149
150
|
return re.sub(r'[^A-Za-z]+','', param)
|
150
151
|
|
151
152
|
|
152
|
-
@register.filter(name='
|
153
|
-
def
|
153
|
+
@register.filter(name='wrap_form_field')
|
154
|
+
def wrap_form_fields(field, label=None):
|
155
|
+
if isinstance(field.field.widget, widgets.Textarea):
|
156
|
+
html = render_to_string('ui/templatetags/field.html#textarea', {'field': field, 'label': label})
|
157
|
+
return mark_safe(html)
|
154
158
|
html = render_to_string('ui/templatetags/field.html#form_field', {'field': field, 'label': label})
|
155
159
|
return mark_safe(html)
|
156
160
|
|
@@ -158,7 +162,7 @@ def wrap_label(field, label=None):
|
|
158
162
|
@register.filter(name='wrap_model_field')
|
159
163
|
def wrap_model_field(instance, field_name):
|
160
164
|
field = instance._meta.get_field(field_name)
|
161
|
-
if
|
165
|
+
if field.choices:
|
162
166
|
value = getattr(instance, f'get_{field_name}_display')()
|
163
167
|
else:
|
164
168
|
value = getattr(instance, field_name)
|
@@ -5,8 +5,8 @@
|
|
5
5
|
{% block modal_content %}
|
6
6
|
<form id="{{ modal_id }}-form" hx-post="{% url 'user:change_email' %}">
|
7
7
|
{% csrf_token %}
|
8
|
-
{{ form.email|
|
9
|
-
{{ form.password|
|
8
|
+
{{ form.email|wrap_form_field }}
|
9
|
+
{{ form.password|wrap_form_field }}
|
10
10
|
</form>
|
11
11
|
{% endblock %}
|
12
12
|
|