django-pfx 1.4.dev86__tar.gz → 1.4.dev90__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_pfx-1.4.dev86 → django_pfx-1.4.dev90}/PKG-INFO +1 -1
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/SOURCES.txt +2 -1
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/make_messages +1 -1
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +3 -3
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/fields.py +2 -3
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/rest_views.py +9 -2
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/locale/fr/LC_MESSAGES/django.po +23 -10
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/__init__.py +2 -1
- django_pfx-1.4.dev90/tests/tests/test_fields_choices.py +88 -0
- django_pfx-1.4.dev86/tests/tests/test_fields.py → django_pfx-1.4.dev90/tests/tests/test_fields_minutes_duration.py +1 -1
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/.gitignore +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/LICENSE +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/README.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/Makefile +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/conf.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/index.rst +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/img/pfx.png +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/manage.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/fields.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pyproject.toml +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/requirements.txt +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/serve-doc +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/setup.cfg +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/setup.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/models.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/urls.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/views.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/views.py +0 -0
|
@@ -135,7 +135,8 @@ tests/tests/test_auth_api.py
|
|
|
135
135
|
tests/tests/test_body_mixin.py
|
|
136
136
|
tests/tests/test_cache.py
|
|
137
137
|
tests/tests/test_client.py
|
|
138
|
-
tests/tests/
|
|
138
|
+
tests/tests/test_fields_choices.py
|
|
139
|
+
tests/tests/test_fields_minutes_duration.py
|
|
139
140
|
tests/tests/test_filters.py
|
|
140
141
|
tests/tests/test_locale_api.py
|
|
141
142
|
tests/tests/test_ordered_rest_view_mixin.py
|
|
@@ -7,7 +7,7 @@ msgid ""
|
|
|
7
7
|
msgstr ""
|
|
8
8
|
"Project-Id-Version: \n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
|
-
"POT-Creation-Date: 2025-
|
|
10
|
+
"POT-Creation-Date: 2025-02-05 08:33+0100\n"
|
|
11
11
|
"PO-Revision-Date: 2021-06-22 23:31+0200\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -293,11 +293,11 @@ msgstr "{model} {obj} créé."
|
|
|
293
293
|
msgid "{model} {obj} updated."
|
|
294
294
|
msgstr "{model} {obj} modifié."
|
|
295
295
|
|
|
296
|
-
#: views/rest_views.py:
|
|
296
|
+
#: views/rest_views.py:1164
|
|
297
297
|
#, python-brace-format
|
|
298
298
|
msgid "{model} {obj} deleted."
|
|
299
299
|
msgstr "{model} {obj} supprimé."
|
|
300
300
|
|
|
301
|
-
#: views/rest_views.py:
|
|
301
|
+
#: views/rest_views.py:1263 views/rest_views.py:1303
|
|
302
302
|
msgid "Unexpected storage error"
|
|
303
303
|
msgstr "Erreur de stockage inattendue"
|
|
@@ -7,7 +7,6 @@ from django.db import models
|
|
|
7
7
|
from django.db.models.constants import LOOKUP_SEP
|
|
8
8
|
from django.utils.formats import date_format
|
|
9
9
|
from django.utils.functional import cached_property
|
|
10
|
-
from django.utils.translation import gettext_lazy as _
|
|
11
10
|
|
|
12
11
|
from apispec.utils import deepupdate
|
|
13
12
|
from apispec.yaml_utils import load_yaml_from_docstring
|
|
@@ -119,7 +118,7 @@ class ViewField:
|
|
|
119
118
|
res = dict(type=self.field_type, name=self.verbose_name)
|
|
120
119
|
if self.choices:
|
|
121
120
|
res['choices'] = [
|
|
122
|
-
dict(label=
|
|
121
|
+
dict(label=str(v), value=k) for k, v in self.choices.items()]
|
|
123
122
|
if self.related_model:
|
|
124
123
|
res['model'] = self.related_model._meta.label
|
|
125
124
|
res['api'] = self.related_model_api or getattr(
|
|
@@ -160,7 +159,7 @@ class ViewField:
|
|
|
160
159
|
return [self._json_repr(o) for o in value.all()]
|
|
161
160
|
if self.choices:
|
|
162
161
|
if value in self.choices:
|
|
163
|
-
return dict(value=value, label=
|
|
162
|
+
return dict(value=value, label=str(self.choices[value]))
|
|
164
163
|
else:
|
|
165
164
|
return None
|
|
166
165
|
return value
|
|
@@ -775,6 +775,12 @@ class ListRestViewMixin(ModelResponseMixin):
|
|
|
775
775
|
pk=o.pk,
|
|
776
776
|
resource_name=str(o))
|
|
777
777
|
|
|
778
|
+
def pagination_count_queryset(self, qs):
|
|
779
|
+
return qs
|
|
780
|
+
|
|
781
|
+
def pagination_apply(self, qs, count_qs, offset, page_size):
|
|
782
|
+
return qs.all()[offset:offset + page_size]
|
|
783
|
+
|
|
778
784
|
def pagination_result(self, qs):
|
|
779
785
|
"""Apply pagination on a queryset.
|
|
780
786
|
|
|
@@ -788,13 +794,14 @@ class ListRestViewMixin(ModelResponseMixin):
|
|
|
788
794
|
page_size = min(page_size, settings.PFX_MAX_LIST_RESULT_SIZE)
|
|
789
795
|
page = get_int(self.request.GET, 'page', 1)
|
|
790
796
|
page_subset = get_int(self.request.GET, 'page_subset', 5)
|
|
791
|
-
|
|
797
|
+
cqs = self.pagination_count_queryset(qs)
|
|
798
|
+
count = cqs.count()
|
|
792
799
|
page_count = (1 + (count - 1) // page_size) or 1
|
|
793
800
|
offset = (page - 1) * page_size
|
|
794
801
|
subset_first = min(
|
|
795
802
|
max(page - page_subset // 2, 1),
|
|
796
803
|
max(page_count - page_subset + 1, 1))
|
|
797
|
-
qs =
|
|
804
|
+
qs = self.pagination_apply(qs, cqs, offset, page_size)
|
|
798
805
|
return qs, dict(
|
|
799
806
|
page_size=page_size,
|
|
800
807
|
page=page,
|
|
@@ -8,7 +8,7 @@ msgid ""
|
|
|
8
8
|
msgstr ""
|
|
9
9
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
10
10
|
"Report-Msgid-Bugs-To: \n"
|
|
11
|
-
"POT-Creation-Date:
|
|
11
|
+
"POT-Creation-Date: 2025-02-17 12:19+0100\n"
|
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
@@ -17,38 +17,51 @@ msgstr ""
|
|
|
17
17
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
18
18
|
"Content-Transfer-Encoding: 8bit\n"
|
|
19
19
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
#: models.py:68
|
|
21
22
|
msgid "First Name"
|
|
22
23
|
msgstr "Prénom"
|
|
23
24
|
|
|
24
|
-
#: models.py:
|
|
25
|
+
#: models.py:69
|
|
25
26
|
msgid "Last Name"
|
|
26
27
|
msgstr "Nom"
|
|
27
28
|
|
|
28
|
-
#:
|
|
29
|
+
#: tests/test_fields_choices.py:16
|
|
30
|
+
msgid "Value 2"
|
|
31
|
+
msgstr "Valeur 2"
|
|
32
|
+
|
|
33
|
+
#: tests/test_fields_choices.py:25
|
|
34
|
+
msgid "Value 3"
|
|
35
|
+
msgstr "Valeur 3"
|
|
36
|
+
|
|
37
|
+
#: tests/test_fields_choices.py:26
|
|
38
|
+
msgid "Value 4"
|
|
39
|
+
msgstr "Valeur 4"
|
|
40
|
+
|
|
41
|
+
#: views.py:65
|
|
29
42
|
msgid "Book Type"
|
|
30
43
|
msgstr "Type de livre"
|
|
31
44
|
|
|
32
|
-
#: views.py:
|
|
45
|
+
#: views.py:68
|
|
33
46
|
msgid "Heroic Fantasy"
|
|
34
47
|
msgstr ""
|
|
35
48
|
|
|
36
|
-
#: views.py:
|
|
49
|
+
#: views.py:72 views.py:224
|
|
37
50
|
msgid "Custom"
|
|
38
51
|
msgstr ""
|
|
39
52
|
|
|
40
|
-
#: views.py:
|
|
53
|
+
#: views.py:79
|
|
41
54
|
msgid "Tolkien or Asimov"
|
|
42
55
|
msgstr ""
|
|
43
56
|
|
|
44
|
-
#: views.py:
|
|
57
|
+
#: views.py:231
|
|
45
58
|
msgid "Publication Date greater than"
|
|
46
59
|
msgstr ""
|
|
47
60
|
|
|
48
|
-
#: views.py:
|
|
61
|
+
#: views.py:234
|
|
49
62
|
msgid "Author PK"
|
|
50
63
|
msgstr ""
|
|
51
64
|
|
|
52
|
-
#: views.py:
|
|
65
|
+
#: views.py:294
|
|
53
66
|
msgid "Monday"
|
|
54
67
|
msgstr ""
|
|
@@ -6,7 +6,8 @@ from .test_auth_api import AuthAPITest
|
|
|
6
6
|
from .test_body_mixin import TestBodyMixin
|
|
7
7
|
from .test_cache import TestCache
|
|
8
8
|
from .test_client import TestApiClient
|
|
9
|
-
from .
|
|
9
|
+
from .test_fields_choices import TestFieldsChoices
|
|
10
|
+
from .test_fields_minutes_duration import TestFieldsMinutesDuration
|
|
10
11
|
from .test_filters import FiltersTest
|
|
11
12
|
from .test_locale_api import LocaleAPITest
|
|
12
13
|
from .test_ordered_rest_view_mixin import TestOrderedRestViewMixin
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from django.db import connection, models
|
|
2
|
+
from django.test import TestCase
|
|
3
|
+
from django.test.utils import override_settings
|
|
4
|
+
from django.urls import include, path
|
|
5
|
+
from django.utils.translation import gettext_lazy as _
|
|
6
|
+
|
|
7
|
+
from pfx.pfxcore import register_views
|
|
8
|
+
from pfx.pfxcore.decorator import rest_view
|
|
9
|
+
from pfx.pfxcore.models import JSONReprMixin
|
|
10
|
+
from pfx.pfxcore.test import APIClient, TestAssertMixin
|
|
11
|
+
from pfx.pfxcore.views import RestView
|
|
12
|
+
from tests.views import FakeViewMixin
|
|
13
|
+
|
|
14
|
+
# Add i18n string for Value 2, to check this is not used to translate
|
|
15
|
+
# the same value in choices.
|
|
16
|
+
_("Value 2")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TestChoicesModel(JSONReprMixin, models.Model):
|
|
20
|
+
choice1 = models.CharField(max_length=30, choices=[
|
|
21
|
+
('v1', "Value 1"),
|
|
22
|
+
('v2', "Value 2"),
|
|
23
|
+
])
|
|
24
|
+
choice2 = models.CharField(max_length=30, choices=[
|
|
25
|
+
('v3', _("Value 3")),
|
|
26
|
+
('v4', _("Value 4")),
|
|
27
|
+
])
|
|
28
|
+
|
|
29
|
+
class Meta:
|
|
30
|
+
verbose_name = "TestModel"
|
|
31
|
+
verbose_name_plural = "TestModels"
|
|
32
|
+
ordering = ['pk']
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@rest_view("/test")
|
|
36
|
+
class TestChoicesRestView(FakeViewMixin, RestView):
|
|
37
|
+
default_public = True
|
|
38
|
+
model = TestChoicesModel
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
urlpatterns = [
|
|
42
|
+
path('api/', include(register_views(TestChoicesRestView))),
|
|
43
|
+
path('api/', include('pfx.pfxcore.urls'))
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@override_settings(ROOT_URLCONF=__name__)
|
|
48
|
+
class TestFieldsChoices(TestAssertMixin, TestCase):
|
|
49
|
+
|
|
50
|
+
def setUp(self):
|
|
51
|
+
self.client = APIClient(default_locale='en')
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def setUpTestData(cls):
|
|
55
|
+
with connection.schema_editor() as schema_editor:
|
|
56
|
+
schema_editor.create_model(TestChoicesModel)
|
|
57
|
+
|
|
58
|
+
def test_meta(self):
|
|
59
|
+
response = self.client.get('/api/test/meta', locale='fr')
|
|
60
|
+
self.assertRC(response, 200)
|
|
61
|
+
self.assertJE(response, 'fields.choice1.choices.@0.label', "Value 1")
|
|
62
|
+
self.assertJE(response, 'fields.choice1.choices.@1.label', "Value 2")
|
|
63
|
+
self.assertJE(response, 'fields.choice2.choices.@0.label', "Valeur 3")
|
|
64
|
+
self.assertJE(response, 'fields.choice2.choices.@1.label', "Valeur 4")
|
|
65
|
+
|
|
66
|
+
def test_meta_list(self):
|
|
67
|
+
response = self.client.get('/api/test/meta/list', locale='fr')
|
|
68
|
+
self.assertRC(response, 200)
|
|
69
|
+
self.assertJE(response, 'fields.choice1.choices.@0.label', "Value 1")
|
|
70
|
+
self.assertJE(response, 'fields.choice1.choices.@1.label', "Value 2")
|
|
71
|
+
self.assertJE(response, 'fields.choice2.choices.@0.label', "Valeur 3")
|
|
72
|
+
self.assertJE(response, 'fields.choice2.choices.@1.label', "Valeur 4")
|
|
73
|
+
|
|
74
|
+
def test_get(self):
|
|
75
|
+
c1 = TestChoicesModel.objects.create(choice1='v2', choice2='v3')
|
|
76
|
+
|
|
77
|
+
response = self.client.get(f'/api/test/{c1.pk}', locale='fr')
|
|
78
|
+
self.assertRC(response, 200)
|
|
79
|
+
self.assertJE(response, 'choice1.label', "Value 2")
|
|
80
|
+
self.assertJE(response, 'choice2.label', "Valeur 3")
|
|
81
|
+
|
|
82
|
+
def test_get_list(self):
|
|
83
|
+
TestChoicesModel.objects.create(choice1='v2', choice2='v3')
|
|
84
|
+
|
|
85
|
+
response = self.client.get('/api/test', locale='fr')
|
|
86
|
+
self.assertRC(response, 200)
|
|
87
|
+
self.assertJE(response, 'items.@0.choice1.label', "Value 2")
|
|
88
|
+
self.assertJE(response, 'items.@0.choice2.label', "Valeur 3")
|
|
@@ -10,7 +10,7 @@ from pfx.pfxcore.test import APIClient, TestAssertMixin
|
|
|
10
10
|
from tests.models import Author, Book
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class
|
|
13
|
+
class TestFieldsMinutesDuration(TestAssertMixin, TestCase):
|
|
14
14
|
|
|
15
15
|
def setUp(self):
|
|
16
16
|
self.client = APIClient(default_locale='en')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/user_filtered_queryset_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/otp_code_email.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/welcome_email.txt
RENAMED
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/welcome_subject.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page_subset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_post_migrate_groups_update.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev_custom_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev_custom_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|