django-pfx 1.4.dev168__tar.gz → 1.4.dev172__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.dev168 → django_pfx-1.4.dev172}/PKG-INFO +1 -1
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/fields/media_field.py +22 -22
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +5 -5
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/rest_views.py +9 -1
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/.gitignore +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/LICENSE +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/README.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/django_pfx.egg-info/SOURCES.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/Makefile +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/conf.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/index.rst +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/img/pfx.png +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/make_messages +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/manage.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/fields/decimal_field.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/fields/rich_text_field.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/fields.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pyproject.toml +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/requirements.txt +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/serve-doc +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/setup.cfg +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/setup.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/apps.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/models.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_fields_date.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_fields_decimal.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_fields_one2many.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_fields_rich_text.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/urls.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests/views.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/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.dev172
|
|
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.dev172
|
|
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
|
|
@@ -19,6 +19,26 @@ def get_storage_class(class_path):
|
|
|
19
19
|
return getattr(import_module('.'.join(ps[:-1])), ps[-1])()
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
def validate_media_json(value):
|
|
23
|
+
if isinstance(value, dict):
|
|
24
|
+
missing_keys = []
|
|
25
|
+
if value.get('key'):
|
|
26
|
+
# Empty dict or empty key is allowed to save
|
|
27
|
+
# and object without file to have a pk to determine the key.
|
|
28
|
+
# When the key is set, other required keys must be present.
|
|
29
|
+
if not value.get('name'):
|
|
30
|
+
missing_keys.append('name')
|
|
31
|
+
if not value.get('content-type'):
|
|
32
|
+
missing_keys.append('content-type')
|
|
33
|
+
if not value.get('content-length'):
|
|
34
|
+
missing_keys.append('content-length')
|
|
35
|
+
if missing_keys:
|
|
36
|
+
raise ValidationError(
|
|
37
|
+
f"Missing required keys: {', '.join(missing_keys)}")
|
|
38
|
+
else:
|
|
39
|
+
raise ValidationError("Value must be a dictionary.")
|
|
40
|
+
|
|
41
|
+
|
|
22
42
|
class MediaField(models.JSONField):
|
|
23
43
|
def __init__(
|
|
24
44
|
self, *args, max_length=255, get_key=None, storage=None,
|
|
@@ -33,9 +53,8 @@ class MediaField(models.JSONField):
|
|
|
33
53
|
self.allowed_keys = DEFAULT_KEYS.union(extra_keys or set())
|
|
34
54
|
self._db_value = None
|
|
35
55
|
|
|
36
|
-
# Inject validator
|
|
37
|
-
kwargs.setdefault("validators", [])
|
|
38
|
-
kwargs["validators"].append(self.validate_keys)
|
|
56
|
+
# Inject default validator if empty
|
|
57
|
+
kwargs.setdefault("validators", [validate_media_json])
|
|
39
58
|
|
|
40
59
|
super().__init__(*args, max_length=max_length, **kwargs)
|
|
41
60
|
|
|
@@ -43,25 +62,6 @@ class MediaField(models.JSONField):
|
|
|
43
62
|
def get_default_key(obj, filename):
|
|
44
63
|
return f"{type(obj).__name__}/{obj.pk}/{filename}"
|
|
45
64
|
|
|
46
|
-
def validate_keys(self, value):
|
|
47
|
-
if isinstance(value, dict):
|
|
48
|
-
missing_keys = []
|
|
49
|
-
if value.get('key'):
|
|
50
|
-
# Empty dict or empty key is allowed to save
|
|
51
|
-
# and object without file to have a pk to determine the key.
|
|
52
|
-
# When the key is set, other required keys must be present.
|
|
53
|
-
if not value.get('name'):
|
|
54
|
-
missing_keys.append('name')
|
|
55
|
-
if not value.get('content-type'):
|
|
56
|
-
missing_keys.append('content-type')
|
|
57
|
-
if not value.get('content-length'):
|
|
58
|
-
missing_keys.append('content-length')
|
|
59
|
-
if missing_keys:
|
|
60
|
-
raise ValidationError(
|
|
61
|
-
f"Missing required keys: {', '.join(missing_keys)}")
|
|
62
|
-
else:
|
|
63
|
-
raise ValidationError("Value must be a dictionary.")
|
|
64
|
-
|
|
65
65
|
def clean_value(self, value):
|
|
66
66
|
if isinstance(value, dict):
|
|
67
67
|
return {k: v for k, v in value.items() if k in self.allowed_keys}
|
|
@@ -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-12-18 12:52+0100\n"
|
|
11
11
|
"PO-Revision-Date: 2021-06-22 23:31+0200\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -286,23 +286,23 @@ msgstr "Le paramètre object est requis pour move={move}."
|
|
|
286
286
|
msgid "object {pk} does not exists in this move context."
|
|
287
287
|
msgstr "object {pk} n'existe pas dans ce contexte de déplacement."
|
|
288
288
|
|
|
289
|
-
#: views/rest_views.py:
|
|
289
|
+
#: views/rest_views.py:225 views/rest_views.py:391
|
|
290
290
|
#, python-brace-format
|
|
291
291
|
msgid "{obj} cannot be deleted because it is referenced by other objects."
|
|
292
292
|
msgstr ""
|
|
293
293
|
"{obj} ne peut pas être supprimé car il est référencé par d’autres objets."
|
|
294
294
|
|
|
295
|
-
#: views/rest_views.py:
|
|
295
|
+
#: views/rest_views.py:355
|
|
296
296
|
#, python-brace-format
|
|
297
297
|
msgid "{model} {obj} created."
|
|
298
298
|
msgstr "{model} {obj} créé."
|
|
299
299
|
|
|
300
|
-
#: views/rest_views.py:
|
|
300
|
+
#: views/rest_views.py:356
|
|
301
301
|
#, python-brace-format
|
|
302
302
|
msgid "{model} {obj} updated."
|
|
303
303
|
msgstr "{model} {obj} modifié."
|
|
304
304
|
|
|
305
|
-
#: views/rest_views.py:
|
|
305
|
+
#: views/rest_views.py:1270
|
|
306
306
|
#, python-brace-format
|
|
307
307
|
msgid "{model} {obj} deleted."
|
|
308
308
|
msgstr "{model} {obj} supprimé."
|
|
@@ -28,7 +28,11 @@ from pfx.pfxcore.exceptions import (
|
|
|
28
28
|
UnauthorizedError,
|
|
29
29
|
)
|
|
30
30
|
from pfx.pfxcore.http import JsonResponse
|
|
31
|
-
from pfx.pfxcore.models import
|
|
31
|
+
from pfx.pfxcore.models import (
|
|
32
|
+
JSONReprMixin,
|
|
33
|
+
OrderedModelMixin,
|
|
34
|
+
UserFilteredQuerySetMixin,
|
|
35
|
+
)
|
|
32
36
|
from pfx.pfxcore.shortcuts import (
|
|
33
37
|
class_key,
|
|
34
38
|
f,
|
|
@@ -387,12 +391,16 @@ class ModelResponseMixin(ModelMixin):
|
|
|
387
391
|
"{obj} cannot be deleted because "
|
|
388
392
|
"it is referenced by other "
|
|
389
393
|
"objects."), obj=str(cur)))
|
|
394
|
+
prev = None
|
|
390
395
|
for o in v:
|
|
391
396
|
save_field = getattr(o, '_save_related', False)
|
|
392
397
|
if save_field:
|
|
393
398
|
setattr(o, save_field, obj)
|
|
394
399
|
funcs += self.pre_save(o, created=created)
|
|
395
400
|
o.save()
|
|
401
|
+
if isinstance(o, OrderedModelMixin) and prev:
|
|
402
|
+
o.below(prev)
|
|
403
|
+
prev = o
|
|
396
404
|
getattr(obj, k).set(v)
|
|
397
405
|
self.post_save(obj, created=created, funcs=funcs)
|
|
398
406
|
obj = self.get_object(pk=obj.pk)
|
|
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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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.dev168 → django_pfx-1.4.dev172}/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
|