django-pfx 1.4.dev162__tar.gz → 1.4.dev166__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.dev162 → django_pfx-1.4.dev166}/PKG-INFO +1 -1
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/fields/rich_text_field.py +14 -10
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +2 -2
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/storage/local_storage.py +3 -1
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/fields.py +10 -4
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/rest_views.py +2 -1
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/.gitignore +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/LICENSE +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/README.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/django_pfx.egg-info/SOURCES.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/Makefile +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/conf.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/index.rst +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/img/pfx.png +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/make_messages +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/manage.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/fields/decimal_field.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pyproject.toml +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/requirements.txt +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/serve-doc +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/setup.cfg +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/setup.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/apps.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/models.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_fields_date.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_fields_decimal.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_fields_one2many.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_fields_rich_text.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/urls.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests/views.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/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.dev166
|
|
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.dev166
|
|
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,7 @@
|
|
|
1
1
|
from django.conf import settings
|
|
2
2
|
from django.core.exceptions import ImproperlyConfigured
|
|
3
3
|
from django.db import models
|
|
4
|
+
from django.db.models.signals import pre_save
|
|
4
5
|
from django.utils.safestring import mark_safe
|
|
5
6
|
|
|
6
7
|
import nh3
|
|
@@ -28,19 +29,22 @@ class RichTextField(models.TextField):
|
|
|
28
29
|
"for this field.")
|
|
29
30
|
self.nh3_kwargs = settings.NH3_CONFIGS[nh3_config]
|
|
30
31
|
|
|
31
|
-
def pre_save(self, model_instance, add):
|
|
32
|
-
data = getattr(model_instance, self.attname)
|
|
33
|
-
if data is None:
|
|
34
|
-
return data
|
|
35
|
-
clean_value = (
|
|
36
|
-
nh3.clean(data, **self.nh3_kwargs)
|
|
37
|
-
if self.nh3_kwargs and data else data or "")
|
|
38
|
-
setattr(model_instance, self.attname, mark_safe(clean_value))
|
|
39
|
-
return clean_value
|
|
40
|
-
|
|
41
32
|
def from_db_value(self, value, expression, connection):
|
|
42
33
|
if value is None:
|
|
43
34
|
return value
|
|
44
35
|
# Values are sanitized before saving, so any value returned from the DB
|
|
45
36
|
# is safe to render unescaped.
|
|
46
37
|
return mark_safe(value)
|
|
38
|
+
|
|
39
|
+
def contribute_to_class(self, cls, name, private_only=False):
|
|
40
|
+
super().contribute_to_class(cls, name, private_only=private_only)
|
|
41
|
+
|
|
42
|
+
if self.nh3_kwargs:
|
|
43
|
+
# connect a pre_save signal for this field
|
|
44
|
+
def sanitize(sender, instance, **kwargs):
|
|
45
|
+
value = getattr(instance, name)
|
|
46
|
+
if value:
|
|
47
|
+
clean_value = nh3.clean(value, **self.nh3_kwargs)
|
|
48
|
+
setattr(instance, name, mark_safe(clean_value))
|
|
49
|
+
|
|
50
|
+
pre_save.connect(sanitize, sender=cls, weak=False)
|
|
@@ -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-11-18 16:38+0100\n"
|
|
11
11
|
"PO-Revision-Date: 2021-06-22 23:31+0200\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -302,7 +302,7 @@ msgstr "{model} {obj} créé."
|
|
|
302
302
|
msgid "{model} {obj} updated."
|
|
303
303
|
msgstr "{model} {obj} modifié."
|
|
304
304
|
|
|
305
|
-
#: views/rest_views.py:
|
|
305
|
+
#: views/rest_views.py:1262
|
|
306
306
|
#, python-brace-format
|
|
307
307
|
msgid "{model} {obj} deleted."
|
|
308
308
|
msgstr "{model} {obj} supprimé."
|
|
@@ -25,7 +25,9 @@ class LocalStorage:
|
|
|
25
25
|
dirname = Path(settings.STORAGE_LOCAL_ROOT, relative_path)
|
|
26
26
|
dirname.mkdir(parents=True, exist_ok=True)
|
|
27
27
|
suffixes = Path(filename).suffixes
|
|
28
|
-
if
|
|
28
|
+
if not suffixes:
|
|
29
|
+
ext = ''
|
|
30
|
+
elif suffixes[-1] in ['gz', 'bz2'] and len(suffixes) > 1:
|
|
29
31
|
ext = ''.join(suffixes[-2:])
|
|
30
32
|
else:
|
|
31
33
|
ext = suffixes[-1]
|
|
@@ -113,6 +113,7 @@ class ViewField:
|
|
|
113
113
|
readonly=False, readonly_create=False, readonly_update=False,
|
|
114
114
|
choices=None, json_repr=None, media_field_api=None,
|
|
115
115
|
related_model=None, related_model_api=None, related_fields=None,
|
|
116
|
+
related_filter=None,
|
|
116
117
|
select_related=None, prefetch_related=None):
|
|
117
118
|
self.name = name
|
|
118
119
|
self.alias = alias or name
|
|
@@ -131,6 +132,7 @@ class ViewField:
|
|
|
131
132
|
if self.related_model and related_fields:
|
|
132
133
|
self.related_fields = process_fields(
|
|
133
134
|
self.related_model, related_fields)
|
|
135
|
+
self.related_filter = related_filter
|
|
134
136
|
self.select_related = select_related or []
|
|
135
137
|
self.prefetch_related = prefetch_related or []
|
|
136
138
|
self.model_field = None
|
|
@@ -188,7 +190,10 @@ class ViewField:
|
|
|
188
190
|
if self.field_type == FieldType.ModelObject:
|
|
189
191
|
return self._related_json_repr(value)
|
|
190
192
|
if self.field_type == FieldType.ModelObjectList:
|
|
191
|
-
|
|
193
|
+
qs = (
|
|
194
|
+
value.filter(self.related_filter) if self.related_filter
|
|
195
|
+
else value.all())
|
|
196
|
+
return [self._related_json_repr(o) for o in qs]
|
|
192
197
|
|
|
193
198
|
if self.json_repr:
|
|
194
199
|
return self.json_repr(value)
|
|
@@ -454,8 +459,8 @@ class VF:
|
|
|
454
459
|
readonly=False, readonly_create=False, readonly_update=False,
|
|
455
460
|
choices=None, select_related=None, prefetch_related=None,
|
|
456
461
|
json_repr=None, related_model=None, related_model_api=None,
|
|
457
|
-
field=None, related_fields=None,
|
|
458
|
-
db_type=None, order=None):
|
|
462
|
+
field=None, related_fields=None, related_filter=None,
|
|
463
|
+
media_field_api=None, db_type=None, order=None):
|
|
459
464
|
self.kwargs = dict(
|
|
460
465
|
name=name, verbose_name=verbose_name, field_type=field_type,
|
|
461
466
|
alias=alias,
|
|
@@ -464,7 +469,8 @@ class VF:
|
|
|
464
469
|
select_related=select_related, prefetch_related=prefetch_related,
|
|
465
470
|
json_repr=json_repr, related_model=related_model,
|
|
466
471
|
related_model_api=related_model_api, field=field,
|
|
467
|
-
related_fields=related_fields,
|
|
472
|
+
related_fields=related_fields, related_filter=related_filter,
|
|
473
|
+
media_field_api=media_field_api,
|
|
468
474
|
db_type=db_type, order=order)
|
|
469
475
|
|
|
470
476
|
def to_field(self, model):
|
|
@@ -282,7 +282,7 @@ class ModelResponseMixin(ModelMixin):
|
|
|
282
282
|
return vals
|
|
283
283
|
|
|
284
284
|
def get_navigation_meta(self, obj):
|
|
285
|
-
|
|
285
|
+
return {}
|
|
286
286
|
|
|
287
287
|
def response(self, o, **meta):
|
|
288
288
|
"""Build a :class:`JsonResponse` from an object instance.
|
|
@@ -391,6 +391,7 @@ class ModelResponseMixin(ModelMixin):
|
|
|
391
391
|
save_field = getattr(o, '_save_related', False)
|
|
392
392
|
if save_field:
|
|
393
393
|
setattr(o, save_field, obj)
|
|
394
|
+
funcs += self.pre_save(o, created=created)
|
|
394
395
|
o.save()
|
|
395
396
|
getattr(obj, k).set(v)
|
|
396
397
|
self.post_save(obj, created=created, funcs=funcs)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev162 → django_pfx-1.4.dev166}/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
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/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
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/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
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/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.dev162 → django_pfx-1.4.dev166}/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
|