django-pfx 1.4.dev108__tar.gz → 1.4.dev110__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.dev108 → django_pfx-1.4.dev110}/PKG-INFO +1 -1
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/exceptions.py +18 -2
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +7 -7
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/basic_api_errors.py +12 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/.gitignore +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/LICENSE +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/README.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/django_pfx.egg-info/SOURCES.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/Makefile +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/conf.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/index.rst +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/img/pfx.png +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/make_messages +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/manage.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/fields/nh3_field.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/fields.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pyproject.toml +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/requirements.txt +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/serve-doc +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/setup.cfg +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/setup.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/apps.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/models.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_fields_nh3.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/urls.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests/views.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/views.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-pfx
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.dev110
|
|
4
4
|
Summary: Django PFX is a toolkit designed to streamline the development of RESTful APIs using the Django framework.
|
|
5
5
|
Author: Hervé Martinet
|
|
6
6
|
Author-email: herve.martinet@gmail.com
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-pfx
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.dev110
|
|
4
4
|
Summary: Django PFX is a toolkit designed to streamline the development of RESTful APIs using the Django framework.
|
|
5
5
|
Author: Hervé Martinet
|
|
6
6
|
Author-email: herve.martinet@gmail.com
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from django.core.exceptions import NON_FIELD_ERRORS
|
|
1
2
|
from django.utils.translation import gettext_lazy as _
|
|
2
3
|
|
|
3
4
|
from pfx.pfxcore.http import JsonResponse
|
|
@@ -5,10 +6,25 @@ from pfx.pfxcore.http import JsonResponse
|
|
|
5
6
|
from .shortcuts import delete_token_cookie, f
|
|
6
7
|
|
|
7
8
|
|
|
9
|
+
def validation_error_dict(e):
|
|
10
|
+
if hasattr(e, 'error_dict'):
|
|
11
|
+
return dict(e)
|
|
12
|
+
return {NON_FIELD_ERRORS: list(e)}
|
|
13
|
+
|
|
14
|
+
|
|
8
15
|
class APIError(Exception):
|
|
9
|
-
def __init__(
|
|
16
|
+
def __init__(
|
|
17
|
+
self, message, status=400, delete_cookie=False,
|
|
18
|
+
validation_error=None, **kwargs):
|
|
10
19
|
self.status = status
|
|
11
|
-
|
|
20
|
+
if validation_error:
|
|
21
|
+
d = validation_error_dict(validation_error)
|
|
22
|
+
mlist = d.get(NON_FIELD_ERRORS)
|
|
23
|
+
if mlist:
|
|
24
|
+
message = mlist[0]
|
|
25
|
+
self.data = dict(message=message, errors=d, **kwargs)
|
|
26
|
+
else:
|
|
27
|
+
self.data = dict(message=message, **kwargs)
|
|
12
28
|
self.delete_cookie = delete_cookie
|
|
13
29
|
|
|
14
30
|
@property
|
|
@@ -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-04-01 13:31+0200\n"
|
|
11
11
|
"PO-Revision-Date: 2021-06-22 23:31+0200\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -22,28 +22,28 @@ msgstr ""
|
|
|
22
22
|
msgid "An internal server error occured."
|
|
23
23
|
msgstr "Une erreur interne du serveur est survenue."
|
|
24
24
|
|
|
25
|
-
#: exceptions.py:
|
|
25
|
+
#: exceptions.py:41 exceptions.py:64
|
|
26
26
|
#, python-brace-format
|
|
27
27
|
msgid "{model} not found."
|
|
28
28
|
msgstr "{model} non trouvé."
|
|
29
29
|
|
|
30
|
-
#: exceptions.py:
|
|
30
|
+
#: exceptions.py:48
|
|
31
31
|
msgid "JSON Malformed {}"
|
|
32
32
|
msgstr "JSON malformé {}"
|
|
33
33
|
|
|
34
|
-
#: exceptions.py:
|
|
34
|
+
#: exceptions.py:71
|
|
35
35
|
msgid "Login failed"
|
|
36
36
|
msgstr "La connexion a échoué"
|
|
37
37
|
|
|
38
|
-
#: exceptions.py:
|
|
38
|
+
#: exceptions.py:78
|
|
39
39
|
msgid "Unauthorized"
|
|
40
40
|
msgstr "Non autorisé"
|
|
41
41
|
|
|
42
|
-
#: exceptions.py:
|
|
42
|
+
#: exceptions.py:85
|
|
43
43
|
msgid "Forbidden"
|
|
44
44
|
msgstr "Interdit"
|
|
45
45
|
|
|
46
|
-
#: exceptions.py:
|
|
46
|
+
#: exceptions.py:92
|
|
47
47
|
msgid "Resource not found"
|
|
48
48
|
msgstr "Ressource non trouvée"
|
|
49
49
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
from unittest.mock import MagicMock, patch
|
|
2
2
|
|
|
3
|
+
from django.core.exceptions import ValidationError
|
|
3
4
|
from django.test import TestCase
|
|
4
5
|
from django.test.utils import override_settings
|
|
5
6
|
|
|
7
|
+
from pfx.pfxcore.exceptions import APIError
|
|
6
8
|
from pfx.pfxcore.test import APIClient, TestAssertMixin
|
|
7
9
|
from tests.models import User
|
|
8
10
|
|
|
@@ -64,3 +66,13 @@ class BasicAPIErrorTest(TestAssertMixin, TestCase):
|
|
|
64
66
|
"of object: line 3 column 47 (char 96)", # python >= 3.13
|
|
65
67
|
"JSON Malformed Expecting property name enclosed in "
|
|
66
68
|
"double quotes: line 4 column 17 (char 114)"]) # python <= 3.12
|
|
69
|
+
|
|
70
|
+
def test_api_error_from_validation_error(self):
|
|
71
|
+
error = APIError("Default", validation_error=ValidationError(
|
|
72
|
+
ValidationError("Message")))
|
|
73
|
+
self.assertEqual(error.data['message'], "Message")
|
|
74
|
+
|
|
75
|
+
# If no general message, default message is used.
|
|
76
|
+
error = APIError("Default", validation_error=ValidationError(
|
|
77
|
+
ValidationError(dict(field1="Message"))))
|
|
78
|
+
self.assertEqual(error.data['message'], "Default")
|
|
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.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/fields/minutes_duration_field.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.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/management/commands/makeapidoc.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.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/models/abstract_pfx_base_user.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.dev108 → django_pfx-1.4.dev110}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/templates/registration/welcome_email.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
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/ordered_rest_view_mixin.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
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/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.dev108 → django_pfx-1.4.dev110}/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
|
{django_pfx-1.4.dev108 → django_pfx-1.4.dev110}/tests_custom_user/migrations/0001_initial.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.dev108 → django_pfx-1.4.dev110}/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
|