django-pfx 1.4.dev130__tar.gz → 1.4.dev132__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.dev130 → django_pfx-1.4.dev132}/PKG-INFO +1 -1
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +2 -2
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/__init__.py +5 -1
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/media_rest_view_mixin.py +41 -36
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/.gitignore +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/LICENSE +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/README.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/django_pfx.egg-info/SOURCES.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/Makefile +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/conf.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/index.rst +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/img/pfx.png +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/make_messages +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/manage.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/fields/decimal_field.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/fields/nh3_field.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/fields.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pyproject.toml +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/requirements.txt +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/serve-doc +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/setup.cfg +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/setup.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/apps.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/models.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_fields_decimal.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_fields_nh3.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/urls.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests/views.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/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.dev132
|
|
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.dev132
|
|
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
|
|
@@ -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-05-
|
|
10
|
+
"POT-Creation-Date: 2025-05-21 12:41+0200\n"
|
|
11
11
|
"PO-Revision-Date: 2021-06-22 23:31+0200\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -272,7 +272,7 @@ msgstr "Un nouveau code d'authentification a été envoyé par e-mail."
|
|
|
272
272
|
msgid "Invalid value for {filter} filter"
|
|
273
273
|
msgstr "Valeur invalide pour le filtre {filter}"
|
|
274
274
|
|
|
275
|
-
#: views/media_rest_view_mixin.py:
|
|
275
|
+
#: views/media_rest_view_mixin.py:37 views/media_rest_view_mixin.py:123
|
|
276
276
|
msgid "Unexpected storage error"
|
|
277
277
|
msgstr "Erreur de stockage inattendue"
|
|
278
278
|
|
|
@@ -8,7 +8,11 @@ from .authentication_views import (
|
|
|
8
8
|
from .fields import VF, FieldType, ViewField, ViewModelField
|
|
9
9
|
from .filters_views import Filter, FilterGroup, ModelFilter
|
|
10
10
|
from .locale_views import LocaleRestView
|
|
11
|
-
from .media_rest_view_mixin import
|
|
11
|
+
from .media_rest_view_mixin import (
|
|
12
|
+
MediaPermsRestViewMixin,
|
|
13
|
+
MediaRestViewMixin,
|
|
14
|
+
get_media_field_response,
|
|
15
|
+
)
|
|
12
16
|
from .ordered_rest_view_mixin import OrderedRestViewMixin
|
|
13
17
|
from .rest_views import (
|
|
14
18
|
BaseRestView,
|
|
@@ -18,18 +18,47 @@ from .rest_views import ModelMixin
|
|
|
18
18
|
logger = logging.getLogger(__name__)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
def get_medial_field(model, field):
|
|
22
|
+
try:
|
|
23
|
+
model_field = model._meta.get_field(field)
|
|
24
|
+
if not isinstance(model_field, MediaField):
|
|
25
|
+
raise NotFoundError # pragma: no cover
|
|
26
|
+
except FieldDoesNotExist: # pragma: no cover
|
|
27
|
+
raise NotFoundError
|
|
28
|
+
return model_field
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def get_media_field_response(obj, field, request):
|
|
32
|
+
mediaField = get_medial_field(obj, field)
|
|
33
|
+
try:
|
|
34
|
+
url = mediaField.get_url(request, obj)
|
|
35
|
+
except StorageException as e: # pragma: no cover
|
|
36
|
+
logger.exception(e)
|
|
37
|
+
raise APIError(_("Unexpected storage error", status=500))
|
|
38
|
+
|
|
39
|
+
if mediaField.storage.direct:
|
|
40
|
+
attr = getattr(obj, field)
|
|
41
|
+
filename = attr.get('name')
|
|
42
|
+
if settings.STORAGE_LOCAL_X_ACCEL_REDIRECT:
|
|
43
|
+
response = HttpResponse()
|
|
44
|
+
response["Content-Disposition"] = (
|
|
45
|
+
f"attachment; filename={filename}")
|
|
46
|
+
response['X-Accel-Redirect'] = (
|
|
47
|
+
f"/filestore/{attr.get('key')}")
|
|
48
|
+
return response
|
|
49
|
+
response = FileResponse(
|
|
50
|
+
open(url, 'rb'),
|
|
51
|
+
as_attachment=True, filename=attr.get('name'))
|
|
52
|
+
return response
|
|
53
|
+
|
|
54
|
+
if get_bool(request.GET, 'redirect'):
|
|
55
|
+
return redirect(url)
|
|
56
|
+
return JsonResponse(dict(url=url))
|
|
57
|
+
|
|
58
|
+
|
|
21
59
|
class MediaRestViewMixin(ModelMixin):
|
|
22
60
|
"""Extension mixin to manage media fields."""
|
|
23
61
|
|
|
24
|
-
def _get_model_field(self, field):
|
|
25
|
-
try:
|
|
26
|
-
model_field = self.model._meta.get_field(field)
|
|
27
|
-
if not isinstance(model_field, MediaField):
|
|
28
|
-
raise NotFoundError # pragma: no cover
|
|
29
|
-
except FieldDoesNotExist: # pragma: no cover
|
|
30
|
-
raise NotFoundError
|
|
31
|
-
return model_field
|
|
32
|
-
|
|
33
62
|
@rest_api(
|
|
34
63
|
"/<int:pk>/<str:field>/upload-url/<str:filename>", method="get",
|
|
35
64
|
priority_doc=-8)
|
|
@@ -84,12 +113,11 @@ class MediaRestViewMixin(ModelMixin):
|
|
|
84
113
|
type: string
|
|
85
114
|
"""
|
|
86
115
|
obj = self.get_object(pk=pk)
|
|
87
|
-
mediaField = self.
|
|
116
|
+
mediaField = get_medial_field(self.model, field)
|
|
88
117
|
if mediaField.storage.direct:
|
|
89
118
|
raise APIError("Unavailable for direct storage")
|
|
90
119
|
try:
|
|
91
|
-
res = self.
|
|
92
|
-
self.request, obj, filename)
|
|
120
|
+
res = mediaField.get_upload_url(self.request, obj, filename)
|
|
93
121
|
except StorageException as e: # pragma: no cover
|
|
94
122
|
logger.exception(e)
|
|
95
123
|
raise APIError(_("Unexpected storage error", status=500))
|
|
@@ -135,30 +163,7 @@ class MediaRestViewMixin(ModelMixin):
|
|
|
135
163
|
if `redirect` is `true`.
|
|
136
164
|
"""
|
|
137
165
|
obj = self.get_object(pk=pk)
|
|
138
|
-
|
|
139
|
-
try:
|
|
140
|
-
url = mediaField.get_url(self.request, obj)
|
|
141
|
-
except StorageException as e: # pragma: no cover
|
|
142
|
-
logger.exception(e)
|
|
143
|
-
raise APIError(_("Unexpected storage error", status=500))
|
|
144
|
-
|
|
145
|
-
if mediaField.storage.direct:
|
|
146
|
-
filename = getattr(obj, field).get('name')
|
|
147
|
-
if settings.STORAGE_LOCAL_X_ACCEL_REDIRECT:
|
|
148
|
-
response = HttpResponse()
|
|
149
|
-
response["Content-Disposition"] = (
|
|
150
|
-
f"attachment; filename={filename}")
|
|
151
|
-
response['X-Accel-Redirect'] = (
|
|
152
|
-
f"/filestore/{getattr(obj, field).get('key')}")
|
|
153
|
-
return response
|
|
154
|
-
response = FileResponse(
|
|
155
|
-
open(mediaField.get_url(self.request, obj), 'rb'),
|
|
156
|
-
as_attachment=True, filename=getattr(obj, field).get('name'))
|
|
157
|
-
return response
|
|
158
|
-
|
|
159
|
-
if get_bool(self.request.GET, 'redirect'):
|
|
160
|
-
return redirect(url)
|
|
161
|
-
return JsonResponse(dict(url=url))
|
|
166
|
+
return get_media_field_response(obj, field, self.request)
|
|
162
167
|
|
|
163
168
|
|
|
164
169
|
class MediaPermsRestViewMixin(MediaRestViewMixin):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/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
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/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
|
{django_pfx-1.4.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/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.dev130 → django_pfx-1.4.dev132}/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
|