django-pfx 1.4.dev114__tar.gz → 1.4.dev116__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.dev114 → django_pfx-1.4.dev116}/PKG-INFO +1 -1
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/django_pfx.egg-info/PKG-INFO +1 -1
- django_pfx-1.4.dev116/pfx/pfxcore/fields/decimal_field.py +33 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/fields.py +4 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_fields_decimal.py +32 -2
- django_pfx-1.4.dev114/pfx/pfxcore/fields/decimal_field.py +0 -15
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/.gitignore +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/.gitlab-ci.yml +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/LICENSE +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/MANIFEST.in +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/README.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/django_pfx.egg-info/SOURCES.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/Makefile +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/conf.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/index.rst +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/api.views.rst +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/authentication.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/decorator.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/getting_started.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/model.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/profiling.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/settings.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/doc/source/testing.md +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/img/pfx.png +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/img/pfx.svg +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/make_messages +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/manage.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/fields/nh3_field.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/settings/dev.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pyproject.toml +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/requirements.txt +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/serve-doc +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/setup.cfg +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/setup.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/apps.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/models.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/settings/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/settings/ci.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/settings/common.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/settings/dev.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_client.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_fields_nh3.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/urls.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests/views.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/urls.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_base_user/views.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/models.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/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.dev116
|
|
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.dev116
|
|
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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from decimal import Decimal
|
|
2
|
+
|
|
3
|
+
from django.db import models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DecimalField(models.DecimalField):
|
|
7
|
+
def __init__(
|
|
8
|
+
self, *args, percent=False, currency=None,
|
|
9
|
+
json_decimal_places=None, **kw):
|
|
10
|
+
super().__init__(*args, **kw)
|
|
11
|
+
self.percent = percent
|
|
12
|
+
self.currency = currency
|
|
13
|
+
self.json_quantize = Decimal(10) ** -(json_decimal_places or (
|
|
14
|
+
percent and self.decimal_places - 2 or self.decimal_places))
|
|
15
|
+
|
|
16
|
+
def to_json_meta(self, meta):
|
|
17
|
+
meta.update(
|
|
18
|
+
percent=self.percent,
|
|
19
|
+
currency=self.currency)
|
|
20
|
+
return meta
|
|
21
|
+
|
|
22
|
+
def to_json(self, value):
|
|
23
|
+
if value is None:
|
|
24
|
+
return None
|
|
25
|
+
if self.percent:
|
|
26
|
+
value *= Decimal(100)
|
|
27
|
+
return value.quantize(self.json_quantize)
|
|
28
|
+
|
|
29
|
+
def from_json(self, value):
|
|
30
|
+
if value is None:
|
|
31
|
+
return None
|
|
32
|
+
value = Decimal(value)
|
|
33
|
+
return self.percent and value / Decimal(100) or value
|
|
@@ -332,6 +332,8 @@ class ViewModelField(ViewField):
|
|
|
332
332
|
res['required'] = not (
|
|
333
333
|
getattr(self.model_field, 'null', False) or
|
|
334
334
|
getattr(self.model_field, 'blank', False))
|
|
335
|
+
if hasattr(self.model_field, 'to_json_meta'):
|
|
336
|
+
res = self.model_field.to_json_meta(res)
|
|
335
337
|
return res
|
|
336
338
|
|
|
337
339
|
def to_model_value(self, value, get_related_queryset):
|
|
@@ -346,6 +348,8 @@ class ViewModelField(ViewField):
|
|
|
346
348
|
value = _get_obj(value)
|
|
347
349
|
elif self.field_type == FieldType.ModelObjectList:
|
|
348
350
|
value = ModelList(_get_obj(v) for v in value)
|
|
351
|
+
elif hasattr(field, 'from_json'):
|
|
352
|
+
value = field.from_json(value)
|
|
349
353
|
elif hasattr(field, 'choices') and field.choices:
|
|
350
354
|
value = (value['value']
|
|
351
355
|
if isinstance(value, dict) and 'value' in value
|
|
@@ -17,6 +17,11 @@ from tests.views import FakeViewMixin
|
|
|
17
17
|
class TestDecimalModel(JSONReprMixin, models.Model):
|
|
18
18
|
decimal = DecimalField(
|
|
19
19
|
max_digits=10, decimal_places=5, json_decimal_places=2)
|
|
20
|
+
percent = DecimalField(
|
|
21
|
+
max_digits=10, decimal_places=4, percent=True)
|
|
22
|
+
monetary = DecimalField(
|
|
23
|
+
max_digits=10, decimal_places=5, json_decimal_places=2,
|
|
24
|
+
currency="CHF")
|
|
20
25
|
|
|
21
26
|
class Meta:
|
|
22
27
|
verbose_name = "TestModel"
|
|
@@ -28,7 +33,7 @@ class TestDecimalModel(JSONReprMixin, models.Model):
|
|
|
28
33
|
class DecimalModelRestView(FakeViewMixin, RestView):
|
|
29
34
|
default_public = True
|
|
30
35
|
model = TestDecimalModel
|
|
31
|
-
fields = ['decimal']
|
|
36
|
+
fields = ['decimal', 'percent', 'monetary']
|
|
32
37
|
|
|
33
38
|
|
|
34
39
|
urlpatterns = [
|
|
@@ -48,12 +53,37 @@ class TestFieldsDecimal(TestAssertMixin, TestCase):
|
|
|
48
53
|
with connection.schema_editor() as schema_editor:
|
|
49
54
|
schema_editor.create_model(TestDecimalModel)
|
|
50
55
|
|
|
56
|
+
def test_decimal_meta(self):
|
|
57
|
+
response = self.client.get('/api/test-decimal-model/meta')
|
|
58
|
+
self.assertRC(response, 200)
|
|
59
|
+
self.assertJE(response, 'fields.decimal.percent', False)
|
|
60
|
+
self.assertJE(response, 'fields.decimal.currency', None)
|
|
61
|
+
self.assertJE(response, 'fields.percent.percent', True)
|
|
62
|
+
self.assertJE(response, 'fields.percent.currency', None)
|
|
63
|
+
self.assertJE(response, 'fields.monetary.percent', False)
|
|
64
|
+
self.assertJE(response, 'fields.monetary.currency', "CHF")
|
|
65
|
+
|
|
51
66
|
def test_decimal(self):
|
|
52
|
-
t = TestDecimalModel.objects.create(
|
|
67
|
+
t = TestDecimalModel.objects.create(
|
|
68
|
+
decimal=3.14, percent=0.0810, monetary=100)
|
|
53
69
|
t.save()
|
|
54
70
|
t.refresh_from_db()
|
|
55
71
|
self.assertEqual(t.decimal, Decimal('3.14000'))
|
|
72
|
+
self.assertEqual(t.percent, Decimal('0.0810'))
|
|
56
73
|
|
|
57
74
|
response = self.client.get(f'/api/test-decimal-model/{t.pk}')
|
|
58
75
|
self.assertRC(response, 200)
|
|
59
76
|
self.assertJE(response, 'decimal', "3.14")
|
|
77
|
+
self.assertJE(response, 'percent', "8.10")
|
|
78
|
+
|
|
79
|
+
response = self.client.put(f'/api/test-decimal-model/{t.pk}', dict(
|
|
80
|
+
decimal="3.12121",
|
|
81
|
+
percent="7.7",
|
|
82
|
+
))
|
|
83
|
+
self.assertRC(response, 200)
|
|
84
|
+
self.assertJE(response, 'decimal', "3.12")
|
|
85
|
+
self.assertJE(response, 'percent', "7.70")
|
|
86
|
+
|
|
87
|
+
t.refresh_from_db()
|
|
88
|
+
self.assertEqual(t.decimal, Decimal('3.12121'))
|
|
89
|
+
self.assertEqual(t.percent, Decimal('0.0770'))
|
|
@@ -1,15 +0,0 @@
|
|
|
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)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/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
|
{django_pfx-1.4.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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.dev114 → django_pfx-1.4.dev116}/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
|