django-pfx 1.7.3.dev2__tar.gz → 1.7.3.dev4__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.
Files changed (207) hide show
  1. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/PKG-INFO +1 -1
  2. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/django_pfx.egg-info/PKG-INFO +1 -1
  3. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +3 -3
  4. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/rest_views.py +32 -25
  5. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/.gitignore +0 -0
  6. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/.gitlab-ci.yml +0 -0
  7. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/.pre-commit-config.yaml +0 -0
  8. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/LICENSE +0 -0
  9. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/MANIFEST.in +0 -0
  10. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/README.md +0 -0
  11. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/django_pfx.egg-info/SOURCES.txt +0 -0
  12. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/django_pfx.egg-info/dependency_links.txt +0 -0
  13. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/django_pfx.egg-info/requires.txt +0 -0
  14. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/django_pfx.egg-info/top_level.txt +0 -0
  15. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/Makefile +0 -0
  16. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/conf.py +0 -0
  17. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/index.rst +0 -0
  18. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/api.views.rst +0 -0
  19. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/authentication.md +0 -0
  20. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/decorator.md +0 -0
  21. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/generate_openapi.md +0 -0
  22. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/getting_started.md +0 -0
  23. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/internationalisation.md +0 -0
  24. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/model.md +0 -0
  25. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/pfx_views.md +0 -0
  26. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/profiling.md +0 -0
  27. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/settings.md +0 -0
  28. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/doc/source/testing.md +0 -0
  29. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/img/pfx.png +0 -0
  30. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/img/pfx.svg +0 -0
  31. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/make_messages +0 -0
  32. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/manage.py +0 -0
  33. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/__init__.py +0 -0
  34. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/__init__.py +0 -0
  35. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/apidoc/__init__.py +0 -0
  36. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/apidoc/parameters.py +0 -0
  37. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/apidoc/schema.py +0 -0
  38. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/apidoc/tags.py +0 -0
  39. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/apps.py +0 -0
  40. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/decorator/__init__.py +0 -0
  41. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/decorator/rest.py +0 -0
  42. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/default_settings.py +0 -0
  43. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/exceptions.py +0 -0
  44. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/fields/__init__.py +0 -0
  45. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/fields/decimal_field.py +0 -0
  46. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/fields/media_field.py +0 -0
  47. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
  48. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/fields/rich_text_field.py +0 -0
  49. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/http/__init__.py +0 -0
  50. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/http/json_response.py +0 -0
  51. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  52. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/management/__init__.py +0 -0
  53. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/management/commands/__init__.py +0 -0
  54. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
  55. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/management/commands/profile.py +0 -0
  56. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/middleware/__init__.py +0 -0
  57. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/middleware/authentication.py +0 -0
  58. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/middleware/locale.py +0 -0
  59. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/middleware/profiling.py +0 -0
  60. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/0001_initial.py +0 -0
  61. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
  62. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
  63. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/0004_alter_loginban_failed_counter_and_more.py +0 -0
  64. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/__init__.py +0 -0
  65. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
  66. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
  67. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/__init__.py +0 -0
  68. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
  69. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/cache_mixins.py +0 -0
  70. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/login_ban.py +0 -0
  71. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/mfa_user_mixin.py +0 -0
  72. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/not_null_fields.py +0 -0
  73. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
  74. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/pfx_models.py +0 -0
  75. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/pfx_user.py +0 -0
  76. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
  77. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/serializers/__init__.py +0 -0
  78. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/serializers/json.py +0 -0
  79. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/settings.py +0 -0
  80. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/shortcuts.py +0 -0
  81. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/sms/__init__.py +0 -0
  82. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/sms/backends/__init__.py +0 -0
  83. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/sms/backends/base.py +0 -0
  84. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/sms/backends/console.py +0 -0
  85. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/storage/__init__.py +0 -0
  86. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/storage/exceptions.py +0 -0
  87. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/storage/local_storage.py +0 -0
  88. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/storage/s3_storage.py +0 -0
  89. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
  90. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
  91. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
  92. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
  93. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
  94. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
  95. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/test.py +0 -0
  96. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/urls.py +0 -0
  97. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/__init__.py +0 -0
  98. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/authentication_views.py +0 -0
  99. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/fields.py +0 -0
  100. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/filters_views.py +0 -0
  101. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/locale_views.py +0 -0
  102. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
  103. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
  104. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/__init__.py +0 -0
  105. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/date_format.py +0 -0
  106. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/groups.py +0 -0
  107. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/list_count.py +0 -0
  108. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/list_items.py +0 -0
  109. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
  110. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/list_order.py +0 -0
  111. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/list_search.py +0 -0
  112. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
  113. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
  114. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
  115. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
  116. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/subset.py +0 -0
  117. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
  118. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
  119. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
  120. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
  121. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
  122. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/settings/__init__.py +0 -0
  123. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pfx/settings/dev.py +0 -0
  124. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/pyproject.toml +0 -0
  125. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/requirements.txt +0 -0
  126. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/serve-doc +0 -0
  127. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/setup.cfg +0 -0
  128. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/setup.py +0 -0
  129. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/__init__.py +0 -0
  130. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/apps.py +0 -0
  131. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
  132. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/0001_initial.py +0 -0
  133. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/0002_alter_book_cover.py +0 -0
  134. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/0003_book_local_file.py +0 -0
  135. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/0004_mfausermixin_fields.py +0 -0
  136. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/0005_mfausermixin_fields_fix.py +0 -0
  137. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/0006_rename_otp_enabled_user_mfa_authenticator_enabled_and_more.py +0 -0
  138. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/migrations/__init__.py +0 -0
  139. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/models.py +0 -0
  140. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/settings/__init__.py +0 -0
  141. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/settings/ci.py +0 -0
  142. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/settings/common.py +0 -0
  143. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/settings/dev.py +0 -0
  144. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/settings/dev_custom_example.py +0 -0
  145. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/settings/dev_default.py +0 -0
  146. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/__init__.py +0 -0
  147. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/basic_api_errors.py +0 -0
  148. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/basic_api_test.py +0 -0
  149. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_api_doc.py +0 -0
  150. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_api_doc_search.py +0 -0
  151. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_auth_api.py +0 -0
  152. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_body_mixin.py +0 -0
  153. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_cache.py +0 -0
  154. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_client.py +0 -0
  155. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_choices.py +0 -0
  156. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_date.py +0 -0
  157. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_decimal.py +0 -0
  158. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_minutes_duration.py +0 -0
  159. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_one2many.py +0 -0
  160. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_rich_text.py +0 -0
  161. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_fields_time.py +0 -0
  162. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_filters.py +0 -0
  163. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_locale_api.py +0 -0
  164. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
  165. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_perm_tests.py +0 -0
  166. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_permissions.py +0 -0
  167. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_perms_api.py +0 -0
  168. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_post_migrate_groups_update.py +0 -0
  169. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_profiling_middleware.py +0 -0
  170. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_settings.py +0 -0
  171. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_shortcuts.py +0 -0
  172. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_timezone_middleware.py +0 -0
  173. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_tools.py +0 -0
  174. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_user_queryset.py +0 -0
  175. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_view_decorators.py +0 -0
  176. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/tests/test_view_fields.py +0 -0
  177. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/urls.py +0 -0
  178. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests/views.py +0 -0
  179. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/__init__.py +0 -0
  180. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/migrations/0001_initial.py +0 -0
  181. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/migrations/__init__.py +0 -0
  182. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/settings/__init__.py +0 -0
  183. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/settings/ci.py +0 -0
  184. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/settings/common.py +0 -0
  185. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/settings/dev.py +0 -0
  186. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/settings/dev_custom_example.py +0 -0
  187. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/settings/dev_default.py +0 -0
  188. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/tests/__init__.py +0 -0
  189. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/tests/test_api.py +0 -0
  190. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/tests/test_auth_api.py +0 -0
  191. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/urls.py +0 -0
  192. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_base_user/views.py +0 -0
  193. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/__init__.py +0 -0
  194. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/migrations/0001_initial.py +0 -0
  195. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/migrations/__init__.py +0 -0
  196. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/models.py +0 -0
  197. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/settings/__init__.py +0 -0
  198. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/settings/ci.py +0 -0
  199. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/settings/common.py +0 -0
  200. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/settings/dev.py +0 -0
  201. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/settings/dev_custom_example.py +0 -0
  202. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/settings/dev_default.py +0 -0
  203. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/tests/__init__.py +0 -0
  204. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/tests/test_api.py +0 -0
  205. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/tests/test_auth_api.py +0 -0
  206. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/tests_custom_user/urls.py +0 -0
  207. {django_pfx-1.7.3.dev2 → django_pfx-1.7.3.dev4}/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.7.3.dev2
3
+ Version: 1.7.3.dev4
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.7.3.dev2
3
+ Version: 1.7.3.dev4
4
4
  Summary: Django PFX is a toolkit designed to streamline the development of RESTful APIs using the Django framework.
5
5
  Author: Hervé Martinet
6
6
  Author-email: herve.martinet@gmail.com
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: \n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2026-04-23 14:57+0200\n"
10
+ "POT-Creation-Date: 2026-05-12 10:30+0200\n"
11
11
  "PO-Revision-Date: 2021-06-22 23:31+0200\n"
12
12
  "Last-Translator: \n"
13
13
  "Language-Team: \n"
@@ -335,7 +335,7 @@ msgstr "Le paramètre object est requis pour move={move}."
335
335
  msgid "object {pk} does not exists in this move context."
336
336
  msgstr "object {pk} n'existe pas dans ce contexte de déplacement."
337
337
 
338
- #: views/rest_views.py:228 views/rest_views.py:400
338
+ #: views/rest_views.py:228 views/rest_views.py:385
339
339
  #, python-brace-format
340
340
  msgid "{obj} cannot be deleted because it is referenced by other objects."
341
341
  msgstr ""
@@ -351,7 +351,7 @@ msgstr "{model} {obj} créé."
351
351
  msgid "{model} {obj} updated."
352
352
  msgstr "{model} {obj} modifié."
353
353
 
354
- #: views/rest_views.py:1299
354
+ #: views/rest_views.py:1306
355
355
  #, python-brace-format
356
356
  msgid "{model} {obj} deleted."
357
357
  msgstr "{model} {obj} supprimé."
@@ -368,22 +368,7 @@ class ModelResponseMixin(ModelMixin):
368
368
  message=f(
369
369
  message, model=self.model_name, obj=object))
370
370
 
371
- def is_valid(self, obj, created=False, rel_data=None):
372
- """Persist an object instance changes and build default response.
373
-
374
- The default response contains the serialized instance after save and
375
- a text message.
376
-
377
- You can use :code:`rel_data` to pass values to set on related fields
378
- after instance is persisted (to avoid errors if the instance does
379
- not exists in database).
380
-
381
- :param obj: The object instance
382
- :param created: If object instance is created
383
- :param rel_data: Values to set on related fields
384
- :returns: The JSON response
385
- :rtype: :class:`JsonResponse`
386
- """
371
+ def _save(self, obj, created=False, rel_data=None):
387
372
  with transaction.atomic():
388
373
  funcs = self.pre_save(obj, created=created)
389
374
  obj.save()
@@ -412,6 +397,24 @@ class ModelResponseMixin(ModelMixin):
412
397
  prev = o
413
398
  getattr(obj, k).set(v)
414
399
  self.post_save(obj, created=created, funcs=funcs)
400
+
401
+ def is_valid(self, obj, created=False, rel_data=None):
402
+ """Persist an object instance changes and build default response.
403
+
404
+ The default response contains the serialized instance after save and
405
+ a text message.
406
+
407
+ You can use :code:`rel_data` to pass values to set on related fields
408
+ after instance is persisted (to avoid errors if the instance does
409
+ not exists in database).
410
+
411
+ :param obj: The object instance
412
+ :param created: If object instance is created
413
+ :param rel_data: Values to set on related fields
414
+ :returns: The JSON response
415
+ :rtype: :class:`JsonResponse`
416
+ """
417
+ self._save(obj, created, rel_data)
415
418
  obj = self.get_object(pk=obj.pk)
416
419
  return self.response(
417
420
  obj, **self.is_valid_response_meta(obj, created=created))
@@ -1229,18 +1232,22 @@ class UpdateRestViewMixin(ModelBodyMixin, ModelResponseMixin):
1229
1232
  """
1230
1233
  return True
1231
1234
 
1235
+ def _fill_and_validate(self, obj):
1236
+ data, rel_data = self.get_model_data(
1237
+ obj, self.deserialize_body(), created=False)
1238
+ forbidden = False
1239
+ if not self.object_update_perm(obj, data):
1240
+ forbidden = True
1241
+ self.set_values(obj, **data)
1242
+ self.validate(obj, rel_data=rel_data, created=False)
1243
+ if forbidden:
1244
+ raise ForbiddenError
1245
+ return rel_data
1246
+
1232
1247
  def _put(self, id, *args, **kwargs):
1233
1248
  try:
1234
1249
  obj = self.get_object(pk=id)
1235
- data, rel_data = self.get_model_data(
1236
- obj, self.deserialize_body(), created=False)
1237
- forbidden = False
1238
- if not self.object_update_perm(obj, data):
1239
- forbidden = True
1240
- self.set_values(obj, **data)
1241
- self.validate(obj, rel_data=rel_data, created=False)
1242
- if forbidden:
1243
- raise ForbiddenError
1250
+ rel_data = self._fill_and_validate(obj)
1244
1251
  return self.is_valid(obj, created=False, rel_data=rel_data)
1245
1252
  except ValidationError as e:
1246
1253
  return self.is_invalid(obj, errors=e)
File without changes