accrete 0.0.23__tar.gz → 0.0.25__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.23 → accrete-0.0.25}/PKG-INFO +1 -1
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/__init__.py +1 -4
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/components.py +7 -5
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/context.py +11 -11
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/filter.py +9 -16
- accrete-0.0.25/accrete/contrib/ui/querystring.py +19 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/css/accrete.css +131 -63
- accrete-0.0.25/accrete/contrib/ui/static/css/accrete.css.map +1 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/css/accrete.scss +116 -22
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/css/icons.css +18 -0
- accrete-0.0.25/accrete/contrib/ui/static/js/filter.js +686 -0
- accrete-0.0.23/accrete/contrib/ui/static/js/filter.js → accrete-0.0.25/accrete/contrib/ui/static/js/filter_old.js +175 -40
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/layout.html +7 -7
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/filter.html +15 -9
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/header.html +5 -3
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/pagination_detail.html +2 -2
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/pagination_list.html +2 -2
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/table_field.html +1 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/table.html +14 -12
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/models.py +5 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/views.py +1 -1
- {accrete-0.0.23 → accrete-0.0.25}/accrete/forms.py +7 -5
- {accrete-0.0.23 → accrete-0.0.25}/accrete/models.py +21 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/queries.py +0 -1
- {accrete-0.0.23/accrete/contrib/ui → accrete-0.0.25/accrete}/querystring.py +17 -21
- {accrete-0.0.23 → accrete-0.0.25}/accrete/tenant.py +4 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/utils/dates.py +2 -1
- {accrete-0.0.23 → accrete-0.0.25}/pyproject.toml +1 -1
- accrete-0.0.23/accrete/contrib/ui/static/css/accrete.css.map +0 -1
- accrete-0.0.23/accrete/shortcuts.py +0 -8
- {accrete-0.0.23 → accrete-0.0.25}/.gitignore +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/LICENSE +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/README.md +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/admin.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/apps.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/config.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/admin.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/apps.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/forms.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/migrations/0001_initial.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/migrations/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/models.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/queries.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/tests.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/sequence/views.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/admin.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/apps.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/forms.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/migrations/0001_initial.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/migrations/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/models.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/tasks.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/tests.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/system_mail/views.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/admin.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/apps.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/migrations/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/LICENSE +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/README.md +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/bulma.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/css/bulma-rtl.css +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/css/bulma-rtl.css.map +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/css/bulma-rtl.min.css +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/css/bulma.css +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/css/bulma.css.map +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/css/bulma.min.css +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/package.json +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/base/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/base/animations.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/base/generic.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/base/helpers.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/base/minireset.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/breadcrumb.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/card.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/dropdown.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/level.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/media.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/menu.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/message.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/modal.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/navbar.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/pagination.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/panel.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/components/tabs.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/box.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/button.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/container.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/content.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/form.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/icon.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/image.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/notification.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/other.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/progress.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/table.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/tag.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/elements/title.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/checkbox-radio.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/file.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/input-textarea.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/select.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/shared.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/form/tools.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/grid/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/grid/columns.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/grid/tiles.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/color.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/flexbox.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/float.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/other.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/overflow.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/position.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/spacing.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/typography.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/helpers/visibility.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/layout/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/layout/footer.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/layout/hero.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/layout/section.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/_all.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/animations.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/controls.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/derived-variables.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/extends.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/functions.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/initial-variables.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/bulma/sass/utilities/mixins.sass +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/css/accrete.css.bak +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/icons/Logo.svg +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/icons/accrete.svg +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/js/list.js +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/js/navbar.js +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/static/js/utils.js +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/attrs.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/email.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/file.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/input.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/select.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/text.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/django/forms/widgets/textarea.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/detail.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/form.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/list.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/form_errors.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/form_modal.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/onchange_form.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/table_field_float.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/table_field_monetary.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templates/ui/partials/table_field_string.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templatetags/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/templatetags/accrete_ui.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/tests.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/urls.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/ui/views.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/admin.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/apps.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/forms.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/locale/de/LC_MESSAGES/django.mo +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/locale/de/LC_MESSAGES/django.po +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/middleware.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/migrations/0001_initial.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/migrations/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/templates/user/accrete_navbar_end.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/templates/user/login.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/templates/user/user_detail.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/templates/user/user_form.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/tests.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user/urls.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/admin.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/apps.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/config.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/forms.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/migrations/0001_initial.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/migrations/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/models.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/templates/user_registration/mail_templates/confirmation_mail.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/templates/user_registration/registration.html +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/tests.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/urls.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/contrib/user_registration/views.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/decorators.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/middleware.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/migrations/0001_initial.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/migrations/0002_initial.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/migrations/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/tests.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/utils/__init__.py +0 -0
- {accrete-0.0.23 → accrete-0.0.25}/accrete/views.py +0 -0
@@ -22,12 +22,14 @@ class TableField:
|
|
22
22
|
|
23
23
|
label: str
|
24
24
|
name: str
|
25
|
-
alignment:
|
26
|
-
header_alignment:
|
27
|
-
|
25
|
+
alignment: TableFieldAlignment | Enum = TableFieldAlignment.LEFT
|
26
|
+
header_alignment: TableFieldAlignment | Enum = None
|
27
|
+
header_info: str = None
|
28
|
+
field_type: TableFieldType | Enum = TableFieldType.NONE
|
28
29
|
prefix: str = ''
|
29
30
|
suffix: str = ''
|
30
31
|
truncate_after: int = 0
|
32
|
+
template: str = None
|
31
33
|
|
32
34
|
|
33
35
|
@dataclass
|
@@ -43,7 +45,7 @@ class ClientAction:
|
|
43
45
|
name: str
|
44
46
|
url: str = ''
|
45
47
|
query_params: str = ''
|
46
|
-
attrs: list[str] = field(default_factory=list)
|
48
|
+
attrs: list[tuple[str, str]] = field(default_factory=list)
|
47
49
|
submit: bool = False
|
48
50
|
form_id: str = 'form'
|
49
|
-
class_list: list = field(default_factory=list)
|
51
|
+
class_list: list[str] = field(default_factory=list)
|
@@ -4,8 +4,9 @@ from dataclasses import dataclass, field
|
|
4
4
|
from django.utils.translation import gettext_lazy as _
|
5
5
|
from django.db.models import Model, QuerySet, Q
|
6
6
|
from django.core.paginator import Paginator
|
7
|
+
from accrete.querystring import parse_querystring
|
7
8
|
|
8
|
-
from .querystring import
|
9
|
+
from .querystring import load_querystring, build_url_params
|
9
10
|
from .components import ClientAction, BreadCrumb, TableField
|
10
11
|
from .filter import Filter
|
11
12
|
|
@@ -17,7 +18,7 @@ DEFAULT_PAGINATE_BY = 40
|
|
17
18
|
@dataclass
|
18
19
|
class ListContext:
|
19
20
|
|
20
|
-
model: Model
|
21
|
+
model: type[Model]
|
21
22
|
get_params: dict
|
22
23
|
title: str = None
|
23
24
|
context: dict = field(default_factory=dict)
|
@@ -31,7 +32,7 @@ class ListContext:
|
|
31
32
|
default_filter_term: str = ''
|
32
33
|
actions: list[ClientAction] = field(default_factory=list)
|
33
34
|
breadcrumbs: list[BreadCrumb] = field(default_factory=list)
|
34
|
-
|
35
|
+
object_label: str = None
|
35
36
|
fields: list[TableField] = field(default_factory=list)
|
36
37
|
unselect_button: bool = False
|
37
38
|
|
@@ -103,12 +104,13 @@ class ListContext:
|
|
103
104
|
'page': page,
|
104
105
|
'list_pagination': True,
|
105
106
|
'title': self.title or self.model._meta.verbose_name_plural,
|
107
|
+
'object_label': self.object_label or self.model._meta.verbose_name or _('Name'),
|
106
108
|
'filter_terms': Filter(self.model, self.filter_relation_depth).get_query_terms(),
|
107
109
|
'default_filter_term': self.default_filter_term,
|
108
110
|
'breadcrumbs': self.breadcrumbs,
|
109
|
-
'querystring':
|
111
|
+
'querystring': load_querystring(self.get_params),
|
112
|
+
'url_params': build_url_params(self.get_params),
|
110
113
|
'actions': self.actions,
|
111
|
-
'obj_label': self.obj_label or _('Name'),
|
112
114
|
'fields': self.fields
|
113
115
|
}
|
114
116
|
context.update(self.context)
|
@@ -118,7 +120,7 @@ class ListContext:
|
|
118
120
|
@dataclass
|
119
121
|
class DetailContext:
|
120
122
|
|
121
|
-
obj: Model
|
123
|
+
obj: Model | type[Model]
|
122
124
|
get_params: dict
|
123
125
|
order_by: str = None
|
124
126
|
paginate_by: int = DEFAULT_PAGINATE_BY
|
@@ -205,9 +207,8 @@ class DetailContext:
|
|
205
207
|
'order_by': self.get_params.get('order_by', self.obj._meta.model._meta.ordering),
|
206
208
|
'paginate_by': paginate_by,
|
207
209
|
'detail_pagination': False,
|
208
|
-
'view_type': 'detail',
|
209
210
|
'breadcrumbs': self.breadcrumbs,
|
210
|
-
'
|
211
|
+
'url_params': build_url_params(self.get_params, ['page']),
|
211
212
|
'actions': self.actions
|
212
213
|
}
|
213
214
|
if self.paginate_by > 0:
|
@@ -238,7 +239,7 @@ class FormContext:
|
|
238
239
|
)
|
239
240
|
]
|
240
241
|
try:
|
241
|
-
url = self.discard_url or self.model.get_absolute_url()
|
242
|
+
url = self.discard_url or (self.model.pk and self.model.get_absolute_url())
|
242
243
|
except TypeError:
|
243
244
|
raise TypeError(
|
244
245
|
'Supply the discard_url parameter if FormContext is called '
|
@@ -272,9 +273,8 @@ class FormContext:
|
|
272
273
|
def dict(self):
|
273
274
|
ctx = {
|
274
275
|
'title': self.get_title(),
|
275
|
-
'view_type': 'form',
|
276
276
|
'form_id': self.form_id,
|
277
|
-
'
|
277
|
+
'url_params': build_url_params(self.get_params, ['page']),
|
278
278
|
'actions': []
|
279
279
|
}
|
280
280
|
if self.add_default_actions:
|
@@ -7,7 +7,6 @@ from django.utils.translation import gettext_lazy as _
|
|
7
7
|
class Filter:
|
8
8
|
|
9
9
|
query_relation_depth = 4
|
10
|
-
exclude_from_terms = []
|
11
10
|
query_float_fields = ['DecimalField', 'FloatField']
|
12
11
|
query_char_fields = ['CharField', 'TextField']
|
13
12
|
query_boolean_fields = ['BooleanField']
|
@@ -27,14 +26,9 @@ class Filter:
|
|
27
26
|
LABEL_SET = _('Is Set')
|
28
27
|
LABEL_NOT_SET = _('Is Not Set')
|
29
28
|
|
30
|
-
def __init__(
|
31
|
-
self, model,
|
32
|
-
query_relation_depth: int = 4,
|
33
|
-
exclude_from_terms: list = None,
|
34
|
-
):
|
29
|
+
def __init__(self, model, query_relation_depth: int = 4):
|
35
30
|
self.model = model
|
36
31
|
self.query_relation_depth = query_relation_depth
|
37
|
-
self.exclude_from_terms = exclude_from_terms or []
|
38
32
|
|
39
33
|
def get_choice_char_query_term(self, label, param, choices):
|
40
34
|
choices = [(choice[0], str(choice[1])) for choice in choices]
|
@@ -289,12 +283,10 @@ class Filter:
|
|
289
283
|
|
290
284
|
def get_relation_query_terms(self, model, path):
|
291
285
|
terms = []
|
292
|
-
|
293
|
-
|
286
|
+
filter_exclude = getattr(model, 'filter_exclude', [])
|
287
|
+
filter_exclude.append('tenant')
|
294
288
|
fields = filter(
|
295
|
-
lambda x:
|
296
|
-
x.is_relation and
|
297
|
-
x.name not in self.exclude_from_terms,
|
289
|
+
lambda x: x.is_relation and x.name not in filter_exclude,
|
298
290
|
sorted(model._meta.get_fields(), key=lambda x: x.name.lower())
|
299
291
|
)
|
300
292
|
cpath = path.copy()
|
@@ -317,10 +309,11 @@ class Filter:
|
|
317
309
|
|
318
310
|
def get_local_query_terms(self, model):
|
319
311
|
terms = []
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
312
|
+
filter_exclude = getattr(model, 'filter_exclude', [])
|
313
|
+
fields = filter(
|
314
|
+
lambda x: not x.is_relation and x.name not in filter_exclude,
|
315
|
+
model._meta.get_fields()
|
316
|
+
)
|
324
317
|
for field in fields:
|
325
318
|
term = self.get_query_term(field)
|
326
319
|
if field.null is True and term.get('params'):
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import json
|
2
|
+
|
3
|
+
|
4
|
+
def load_querystring(get_params: dict) -> list:
|
5
|
+
return json.loads(get_params.get('q', '[]'))
|
6
|
+
|
7
|
+
|
8
|
+
def build_url_params(get_params: dict, extra_params: list[str] = None) -> str:
|
9
|
+
querystring = f'?q={get_params.get("q", "[]")}'
|
10
|
+
if paginate_by := get_params.get('paginate_by', False):
|
11
|
+
querystring += f'&paginate_by={paginate_by}'
|
12
|
+
if order_by := get_params.get('order_by', False):
|
13
|
+
querystring += f'&order_by={order_by}'
|
14
|
+
if crumbs := get_params.get('crumbs', False):
|
15
|
+
querystring += f'&crumbs={crumbs}'
|
16
|
+
for param in extra_params or []:
|
17
|
+
if value := get_params.get(param, False):
|
18
|
+
querystring += f'&{param}={value}'
|
19
|
+
return querystring
|