django-pfx 1.4.dev112__tar.gz → 1.4.dev114__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.dev112 → django_pfx-1.4.dev114}/PKG-INFO +1 -1
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/django_pfx.egg-info/SOURCES.txt +2 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/fields/__init__.py +1 -0
- django_pfx-1.4.dev114/pfx/pfxcore/fields/decimal_field.py +15 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/fields.py +12 -6
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/__init__.py +1 -0
- django_pfx-1.4.dev114/tests/tests/test_fields_decimal.py +59 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/.gitignore +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/LICENSE +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/README.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/Makefile +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/conf.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/index.rst +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/img/pfx.png +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/make_messages +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/manage.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/fields/nh3_field.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pyproject.toml +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/requirements.txt +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/serve-doc +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/setup.cfg +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/setup.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/apps.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/models.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_fields_nh3.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/urls.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests/views.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/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.dev114
|
|
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.dev114
|
|
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
|
|
@@ -48,6 +48,7 @@ pfx/pfxcore/apidoc/tags.py
|
|
|
48
48
|
pfx/pfxcore/decorator/__init__.py
|
|
49
49
|
pfx/pfxcore/decorator/rest.py
|
|
50
50
|
pfx/pfxcore/fields/__init__.py
|
|
51
|
+
pfx/pfxcore/fields/decimal_field.py
|
|
51
52
|
pfx/pfxcore/fields/media_field.py
|
|
52
53
|
pfx/pfxcore/fields/minutes_duration_field.py
|
|
53
54
|
pfx/pfxcore/fields/nh3_field.py
|
|
@@ -145,6 +146,7 @@ tests/tests/test_body_mixin.py
|
|
|
145
146
|
tests/tests/test_cache.py
|
|
146
147
|
tests/tests/test_client.py
|
|
147
148
|
tests/tests/test_fields_choices.py
|
|
149
|
+
tests/tests/test_fields_decimal.py
|
|
148
150
|
tests/tests/test_fields_minutes_duration.py
|
|
149
151
|
tests/tests/test_fields_nh3.py
|
|
150
152
|
tests/tests/test_filters.py
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from decimal import Decimal
|
|
2
|
+
|
|
3
|
+
from django.db import models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DecimalField(models.DecimalField):
|
|
7
|
+
def __init__(self, *args, json_decimal_places=None, **kw):
|
|
8
|
+
super().__init__(*args, **kw)
|
|
9
|
+
self.json_quantize = Decimal(10) ** -(
|
|
10
|
+
json_decimal_places or self.decimal_places)
|
|
11
|
+
|
|
12
|
+
def to_json(self, value):
|
|
13
|
+
if value is None:
|
|
14
|
+
return None
|
|
15
|
+
return value.quantize(self.json_quantize)
|
|
@@ -44,6 +44,7 @@ class FieldType:
|
|
|
44
44
|
MODEL_FIELD_BINDING = [
|
|
45
45
|
(pfx_fields.MinutesDurationField, MinutesDurationField),
|
|
46
46
|
(pfx_fields.MediaField, MediaField),
|
|
47
|
+
(pfx_fields.DecimalField, DecimalField),
|
|
47
48
|
(models.BooleanField, BooleanField),
|
|
48
49
|
(models.IntegerField, IntegerField),
|
|
49
50
|
(models.FloatField, FloatField),
|
|
@@ -146,8 +147,15 @@ class ViewField:
|
|
|
146
147
|
|
|
147
148
|
def to_json(self, view, obj):
|
|
148
149
|
value = self.get_value(obj)
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
|
|
151
|
+
if self.field_type == FieldType.ModelObject:
|
|
152
|
+
return self._json_repr(value)
|
|
153
|
+
if self.field_type == FieldType.ModelObjectList:
|
|
154
|
+
return [self._json_repr(o) for o in value.all()]
|
|
155
|
+
|
|
156
|
+
if self.json_repr:
|
|
157
|
+
return self.json_repr(value)
|
|
158
|
+
|
|
151
159
|
if self.field_type == FieldType.MediaField:
|
|
152
160
|
if value:
|
|
153
161
|
api_url = view._rest_view_path
|
|
@@ -155,10 +163,6 @@ class ViewField:
|
|
|
155
163
|
return value
|
|
156
164
|
else:
|
|
157
165
|
return None
|
|
158
|
-
if self.field_type == FieldType.ModelObject:
|
|
159
|
-
return self._json_repr(value)
|
|
160
|
-
if self.field_type == FieldType.ModelObjectList:
|
|
161
|
-
return [self._json_repr(o) for o in value.all()]
|
|
162
166
|
if self.choices:
|
|
163
167
|
if value in self.choices:
|
|
164
168
|
return dict(value=value, label=str(self.choices[value]))
|
|
@@ -303,6 +307,8 @@ class ViewModelField(ViewField):
|
|
|
303
307
|
self, name, model_field=None, **kwargs):
|
|
304
308
|
super().__init__(name, **kwargs)
|
|
305
309
|
self.model_field = model_field
|
|
310
|
+
if hasattr(model_field, 'to_json'):
|
|
311
|
+
self.json_repr = model_field.to_json
|
|
306
312
|
if (hasattr(self.model_field, 'related_model') and
|
|
307
313
|
self.model_field.related_model and not self.related_model):
|
|
308
314
|
self.related_model = self.model_field.related_model
|
|
@@ -7,6 +7,7 @@ from .test_body_mixin import TestBodyMixin
|
|
|
7
7
|
from .test_cache import TestCache
|
|
8
8
|
from .test_client import TestApiClient
|
|
9
9
|
from .test_fields_choices import TestFieldsChoices
|
|
10
|
+
from .test_fields_decimal import TestFieldsDecimal
|
|
10
11
|
from .test_fields_minutes_duration import TestFieldsMinutesDuration
|
|
11
12
|
from .test_fields_nh3 import TestFieldsNh3
|
|
12
13
|
from .test_filters import FiltersTest
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from decimal import Decimal
|
|
2
|
+
|
|
3
|
+
from django.db import connection, models
|
|
4
|
+
from django.test import TestCase
|
|
5
|
+
from django.test.utils import override_settings
|
|
6
|
+
from django.urls import include, path
|
|
7
|
+
|
|
8
|
+
from pfx.pfxcore import register_views
|
|
9
|
+
from pfx.pfxcore.decorator import rest_view
|
|
10
|
+
from pfx.pfxcore.fields import DecimalField
|
|
11
|
+
from pfx.pfxcore.models import JSONReprMixin
|
|
12
|
+
from pfx.pfxcore.test import APIClient, TestAssertMixin
|
|
13
|
+
from pfx.pfxcore.views import RestView
|
|
14
|
+
from tests.views import FakeViewMixin
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class TestDecimalModel(JSONReprMixin, models.Model):
|
|
18
|
+
decimal = DecimalField(
|
|
19
|
+
max_digits=10, decimal_places=5, json_decimal_places=2)
|
|
20
|
+
|
|
21
|
+
class Meta:
|
|
22
|
+
verbose_name = "TestModel"
|
|
23
|
+
verbose_name_plural = "TestModels"
|
|
24
|
+
ordering = ['pk']
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@rest_view("/test-decimal-model")
|
|
28
|
+
class DecimalModelRestView(FakeViewMixin, RestView):
|
|
29
|
+
default_public = True
|
|
30
|
+
model = TestDecimalModel
|
|
31
|
+
fields = ['decimal']
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
urlpatterns = [
|
|
35
|
+
path('api/', include(register_views(DecimalModelRestView))),
|
|
36
|
+
path('api/', include('pfx.pfxcore.urls'))
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@override_settings(ROOT_URLCONF=__name__)
|
|
41
|
+
class TestFieldsDecimal(TestAssertMixin, TestCase):
|
|
42
|
+
|
|
43
|
+
def setUp(self):
|
|
44
|
+
self.client = APIClient(default_locale='en')
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def setUpTestData(cls):
|
|
48
|
+
with connection.schema_editor() as schema_editor:
|
|
49
|
+
schema_editor.create_model(TestDecimalModel)
|
|
50
|
+
|
|
51
|
+
def test_decimal(self):
|
|
52
|
+
t = TestDecimalModel.objects.create(decimal=3.14)
|
|
53
|
+
t.save()
|
|
54
|
+
t.refresh_from_db()
|
|
55
|
+
self.assertEqual(t.decimal, Decimal('3.14000'))
|
|
56
|
+
|
|
57
|
+
response = self.client.get(f'/api/test-decimal-model/{t.pk}')
|
|
58
|
+
self.assertRC(response, 200)
|
|
59
|
+
self.assertJE(response, 'decimal', "3.14")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev112 → django_pfx-1.4.dev114}/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
|
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/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
|
{django_pfx-1.4.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/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.dev112 → django_pfx-1.4.dev114}/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
|