django-pfx 1.4.dev86__tar.gz → 1.4.dev90__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 (184) hide show
  1. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/PKG-INFO +1 -1
  2. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/PKG-INFO +1 -1
  3. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/SOURCES.txt +2 -1
  4. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/make_messages +1 -1
  5. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +3 -3
  6. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/fields.py +2 -3
  7. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/rest_views.py +9 -2
  8. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/locale/fr/LC_MESSAGES/django.po +23 -10
  9. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/__init__.py +2 -1
  10. django_pfx-1.4.dev90/tests/tests/test_fields_choices.py +88 -0
  11. django_pfx-1.4.dev86/tests/tests/test_fields.py → django_pfx-1.4.dev90/tests/tests/test_fields_minutes_duration.py +1 -1
  12. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/.gitignore +0 -0
  13. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/.gitlab-ci.yml +0 -0
  14. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/.pre-commit-config.yaml +0 -0
  15. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/LICENSE +0 -0
  16. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/MANIFEST.in +0 -0
  17. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/README.md +0 -0
  18. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/dependency_links.txt +0 -0
  19. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/requires.txt +0 -0
  20. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/django_pfx.egg-info/top_level.txt +0 -0
  21. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/Makefile +0 -0
  22. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/conf.py +0 -0
  23. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/index.rst +0 -0
  24. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/api.views.rst +0 -0
  25. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/authentication.md +0 -0
  26. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/decorator.md +0 -0
  27. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/generate_openapi.md +0 -0
  28. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/getting_started.md +0 -0
  29. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/internationalisation.md +0 -0
  30. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/model.md +0 -0
  31. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/pfx_views.md +0 -0
  32. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/profiling.md +0 -0
  33. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/settings.md +0 -0
  34. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/doc/source/testing.md +0 -0
  35. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/img/pfx.png +0 -0
  36. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/img/pfx.svg +0 -0
  37. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/manage.py +0 -0
  38. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/__init__.py +0 -0
  39. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/__init__.py +0 -0
  40. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/__init__.py +0 -0
  41. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/parameters.py +0 -0
  42. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/schema.py +0 -0
  43. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apidoc/tags.py +0 -0
  44. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/apps.py +0 -0
  45. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/decorator/__init__.py +0 -0
  46. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/decorator/rest.py +0 -0
  47. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/default_settings.py +0 -0
  48. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/exceptions.py +0 -0
  49. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/fields.py +0 -0
  50. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/http/__init__.py +0 -0
  51. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/http/json_response.py +0 -0
  52. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  53. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/__init__.py +0 -0
  54. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/commands/__init__.py +0 -0
  55. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
  56. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/management/commands/profile.py +0 -0
  57. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/__init__.py +0 -0
  58. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/authentication.py +0 -0
  59. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/locale.py +0 -0
  60. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/middleware/profiling.py +0 -0
  61. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0001_initial.py +0 -0
  62. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
  63. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
  64. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/__init__.py +0 -0
  65. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
  66. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
  67. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/__init__.py +0 -0
  68. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
  69. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/cache_mixins.py +0 -0
  70. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/login_ban.py +0 -0
  71. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/not_null_fields.py +0 -0
  72. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
  73. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
  74. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/pfx_models.py +0 -0
  75. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/pfx_user.py +0 -0
  76. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
  77. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/serializers/__init__.py +0 -0
  78. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/serializers/json.py +0 -0
  79. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/settings.py +0 -0
  80. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/shortcuts.py +0 -0
  81. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/storage/__init__.py +0 -0
  82. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/storage/s3_storage.py +0 -0
  83. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
  84. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
  85. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
  86. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
  87. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
  88. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
  89. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/test.py +0 -0
  90. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/urls.py +0 -0
  91. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/__init__.py +0 -0
  92. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/authentication_views.py +0 -0
  93. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/filters_views.py +0 -0
  94. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/locale_views.py +0 -0
  95. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
  96. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/__init__.py +0 -0
  97. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/date_format.py +0 -0
  98. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/groups.py +0 -0
  99. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_count.py +0 -0
  100. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_items.py +0 -0
  101. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
  102. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_order.py +0 -0
  103. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/list_search.py +0 -0
  104. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
  105. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
  106. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
  107. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
  108. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset.py +0 -0
  109. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
  110. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
  111. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
  112. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
  113. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
  114. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/settings/__init__.py +0 -0
  115. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pfx/settings/dev.py +0 -0
  116. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/pyproject.toml +0 -0
  117. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/requirements.txt +0 -0
  118. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/serve-doc +0 -0
  119. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/setup.cfg +0 -0
  120. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/setup.py +0 -0
  121. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/__init__.py +0 -0
  122. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/migrations/0001_initial.py +0 -0
  123. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/migrations/__init__.py +0 -0
  124. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/models.py +0 -0
  125. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/__init__.py +0 -0
  126. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/ci.py +0 -0
  127. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/common.py +0 -0
  128. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/dev.py +0 -0
  129. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/dev_custom_example.py +0 -0
  130. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/settings/dev_default.py +0 -0
  131. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/basic_api_errors.py +0 -0
  132. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/basic_api_test.py +0 -0
  133. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_api_doc.py +0 -0
  134. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_api_doc_search.py +0 -0
  135. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_auth_api.py +0 -0
  136. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_body_mixin.py +0 -0
  137. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_cache.py +0 -0
  138. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_client.py +0 -0
  139. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_filters.py +0 -0
  140. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_locale_api.py +0 -0
  141. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
  142. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_perm_tests.py +0 -0
  143. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_permissions.py +0 -0
  144. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_perms_api.py +0 -0
  145. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_post_migrate_groups_update.py +0 -0
  146. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_profiling_middleware.py +0 -0
  147. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_settings.py +0 -0
  148. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_shortcuts.py +0 -0
  149. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_timezone_middleware.py +0 -0
  150. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_tools.py +0 -0
  151. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_user_queryset.py +0 -0
  152. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_view_decorators.py +0 -0
  153. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/tests/test_view_fields.py +0 -0
  154. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/urls.py +0 -0
  155. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests/views.py +0 -0
  156. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/__init__.py +0 -0
  157. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/migrations/0001_initial.py +0 -0
  158. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/migrations/__init__.py +0 -0
  159. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/__init__.py +0 -0
  160. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/ci.py +0 -0
  161. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/common.py +0 -0
  162. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev.py +0 -0
  163. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev_custom_example.py +0 -0
  164. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/settings/dev_default.py +0 -0
  165. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/tests/__init__.py +0 -0
  166. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/tests/test_api.py +0 -0
  167. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/tests/test_auth_api.py +0 -0
  168. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/urls.py +0 -0
  169. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_base_user/views.py +0 -0
  170. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/__init__.py +0 -0
  171. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/migrations/0001_initial.py +0 -0
  172. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/migrations/__init__.py +0 -0
  173. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/models.py +0 -0
  174. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/__init__.py +0 -0
  175. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/ci.py +0 -0
  176. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/common.py +0 -0
  177. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev.py +0 -0
  178. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev_custom_example.py +0 -0
  179. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/settings/dev_default.py +0 -0
  180. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/tests/__init__.py +0 -0
  181. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/tests/test_api.py +0 -0
  182. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/tests/test_auth_api.py +0 -0
  183. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/urls.py +0 -0
  184. {django_pfx-1.4.dev86 → django_pfx-1.4.dev90}/tests_custom_user/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: django-pfx
3
- Version: 1.4.dev86
3
+ Version: 1.4.dev90
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.2
2
2
  Name: django-pfx
3
- Version: 1.4.dev86
3
+ Version: 1.4.dev90
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
@@ -135,7 +135,8 @@ tests/tests/test_auth_api.py
135
135
  tests/tests/test_body_mixin.py
136
136
  tests/tests/test_cache.py
137
137
  tests/tests/test_client.py
138
- tests/tests/test_fields.py
138
+ tests/tests/test_fields_choices.py
139
+ tests/tests/test_fields_minutes_duration.py
139
140
  tests/tests/test_filters.py
140
141
  tests/tests/test_locale_api.py
141
142
  tests/tests/test_ordered_rest_view_mixin.py
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
2
  (cd pfx/pfxcore && django-admin makemessages -a)
3
- (cd tests/tests && django-admin makemessages -a)
3
+ (cd tests && django-admin makemessages -a)
@@ -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-01-31 09:52+0100\n"
10
+ "POT-Creation-Date: 2025-02-05 08:33+0100\n"
11
11
  "PO-Revision-Date: 2021-06-22 23:31+0200\n"
12
12
  "Last-Translator: \n"
13
13
  "Language-Team: \n"
@@ -293,11 +293,11 @@ msgstr "{model} {obj} créé."
293
293
  msgid "{model} {obj} updated."
294
294
  msgstr "{model} {obj} modifié."
295
295
 
296
- #: views/rest_views.py:1157
296
+ #: views/rest_views.py:1164
297
297
  #, python-brace-format
298
298
  msgid "{model} {obj} deleted."
299
299
  msgstr "{model} {obj} supprimé."
300
300
 
301
- #: views/rest_views.py:1256 views/rest_views.py:1296
301
+ #: views/rest_views.py:1263 views/rest_views.py:1303
302
302
  msgid "Unexpected storage error"
303
303
  msgstr "Erreur de stockage inattendue"
@@ -7,7 +7,6 @@ from django.db import models
7
7
  from django.db.models.constants import LOOKUP_SEP
8
8
  from django.utils.formats import date_format
9
9
  from django.utils.functional import cached_property
10
- from django.utils.translation import gettext_lazy as _
11
10
 
12
11
  from apispec.utils import deepupdate
13
12
  from apispec.yaml_utils import load_yaml_from_docstring
@@ -119,7 +118,7 @@ class ViewField:
119
118
  res = dict(type=self.field_type, name=self.verbose_name)
120
119
  if self.choices:
121
120
  res['choices'] = [
122
- dict(label=_(v), value=k) for k, v in self.choices.items()]
121
+ dict(label=str(v), value=k) for k, v in self.choices.items()]
123
122
  if self.related_model:
124
123
  res['model'] = self.related_model._meta.label
125
124
  res['api'] = self.related_model_api or getattr(
@@ -160,7 +159,7 @@ class ViewField:
160
159
  return [self._json_repr(o) for o in value.all()]
161
160
  if self.choices:
162
161
  if value in self.choices:
163
- return dict(value=value, label=_(self.choices[value]))
162
+ return dict(value=value, label=str(self.choices[value]))
164
163
  else:
165
164
  return None
166
165
  return value
@@ -775,6 +775,12 @@ class ListRestViewMixin(ModelResponseMixin):
775
775
  pk=o.pk,
776
776
  resource_name=str(o))
777
777
 
778
+ def pagination_count_queryset(self, qs):
779
+ return qs
780
+
781
+ def pagination_apply(self, qs, count_qs, offset, page_size):
782
+ return qs.all()[offset:offset + page_size]
783
+
778
784
  def pagination_result(self, qs):
779
785
  """Apply pagination on a queryset.
780
786
 
@@ -788,13 +794,14 @@ class ListRestViewMixin(ModelResponseMixin):
788
794
  page_size = min(page_size, settings.PFX_MAX_LIST_RESULT_SIZE)
789
795
  page = get_int(self.request.GET, 'page', 1)
790
796
  page_subset = get_int(self.request.GET, 'page_subset', 5)
791
- count = qs.count()
797
+ cqs = self.pagination_count_queryset(qs)
798
+ count = cqs.count()
792
799
  page_count = (1 + (count - 1) // page_size) or 1
793
800
  offset = (page - 1) * page_size
794
801
  subset_first = min(
795
802
  max(page - page_subset // 2, 1),
796
803
  max(page_count - page_subset + 1, 1))
797
- qs = qs.all()[offset:offset + page_size]
804
+ qs = self.pagination_apply(qs, cqs, offset, page_size)
798
805
  return qs, dict(
799
806
  page_size=page_size,
800
807
  page=page,
@@ -8,7 +8,7 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PACKAGE VERSION\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
- "POT-Creation-Date: 2024-01-31 14:42+0100\n"
11
+ "POT-Creation-Date: 2025-02-17 12:19+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,38 +17,51 @@ msgstr ""
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
  "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
- #: models.py:113
20
+
21
+ #: models.py:68
21
22
  msgid "First Name"
22
23
  msgstr "Prénom"
23
24
 
24
- #: models.py:114
25
+ #: models.py:69
25
26
  msgid "Last Name"
26
27
  msgstr "Nom"
27
28
 
28
- #: views.py:62
29
+ #: tests/test_fields_choices.py:16
30
+ msgid "Value 2"
31
+ msgstr "Valeur 2"
32
+
33
+ #: tests/test_fields_choices.py:25
34
+ msgid "Value 3"
35
+ msgstr "Valeur 3"
36
+
37
+ #: tests/test_fields_choices.py:26
38
+ msgid "Value 4"
39
+ msgstr "Valeur 4"
40
+
41
+ #: views.py:65
29
42
  msgid "Book Type"
30
43
  msgstr "Type de livre"
31
44
 
32
- #: views.py:65
45
+ #: views.py:68
33
46
  msgid "Heroic Fantasy"
34
47
  msgstr ""
35
48
 
36
- #: views.py:69 views.py:213
49
+ #: views.py:72 views.py:224
37
50
  msgid "Custom"
38
51
  msgstr ""
39
52
 
40
- #: views.py:76
53
+ #: views.py:79
41
54
  msgid "Tolkien or Asimov"
42
55
  msgstr ""
43
56
 
44
- #: views.py:220
57
+ #: views.py:231
45
58
  msgid "Publication Date greater than"
46
59
  msgstr ""
47
60
 
48
- #: views.py:223
61
+ #: views.py:234
49
62
  msgid "Author PK"
50
63
  msgstr ""
51
64
 
52
- #: views.py:272
65
+ #: views.py:294
53
66
  msgid "Monday"
54
67
  msgstr ""
@@ -6,7 +6,8 @@ from .test_auth_api import AuthAPITest
6
6
  from .test_body_mixin import TestBodyMixin
7
7
  from .test_cache import TestCache
8
8
  from .test_client import TestApiClient
9
- from .test_fields import FieldsTest
9
+ from .test_fields_choices import TestFieldsChoices
10
+ from .test_fields_minutes_duration import TestFieldsMinutesDuration
10
11
  from .test_filters import FiltersTest
11
12
  from .test_locale_api import LocaleAPITest
12
13
  from .test_ordered_rest_view_mixin import TestOrderedRestViewMixin
@@ -0,0 +1,88 @@
1
+ from django.db import connection, models
2
+ from django.test import TestCase
3
+ from django.test.utils import override_settings
4
+ from django.urls import include, path
5
+ from django.utils.translation import gettext_lazy as _
6
+
7
+ from pfx.pfxcore import register_views
8
+ from pfx.pfxcore.decorator import rest_view
9
+ from pfx.pfxcore.models import JSONReprMixin
10
+ from pfx.pfxcore.test import APIClient, TestAssertMixin
11
+ from pfx.pfxcore.views import RestView
12
+ from tests.views import FakeViewMixin
13
+
14
+ # Add i18n string for Value 2, to check this is not used to translate
15
+ # the same value in choices.
16
+ _("Value 2")
17
+
18
+
19
+ class TestChoicesModel(JSONReprMixin, models.Model):
20
+ choice1 = models.CharField(max_length=30, choices=[
21
+ ('v1', "Value 1"),
22
+ ('v2', "Value 2"),
23
+ ])
24
+ choice2 = models.CharField(max_length=30, choices=[
25
+ ('v3', _("Value 3")),
26
+ ('v4', _("Value 4")),
27
+ ])
28
+
29
+ class Meta:
30
+ verbose_name = "TestModel"
31
+ verbose_name_plural = "TestModels"
32
+ ordering = ['pk']
33
+
34
+
35
+ @rest_view("/test")
36
+ class TestChoicesRestView(FakeViewMixin, RestView):
37
+ default_public = True
38
+ model = TestChoicesModel
39
+
40
+
41
+ urlpatterns = [
42
+ path('api/', include(register_views(TestChoicesRestView))),
43
+ path('api/', include('pfx.pfxcore.urls'))
44
+ ]
45
+
46
+
47
+ @override_settings(ROOT_URLCONF=__name__)
48
+ class TestFieldsChoices(TestAssertMixin, TestCase):
49
+
50
+ def setUp(self):
51
+ self.client = APIClient(default_locale='en')
52
+
53
+ @classmethod
54
+ def setUpTestData(cls):
55
+ with connection.schema_editor() as schema_editor:
56
+ schema_editor.create_model(TestChoicesModel)
57
+
58
+ def test_meta(self):
59
+ response = self.client.get('/api/test/meta', locale='fr')
60
+ self.assertRC(response, 200)
61
+ self.assertJE(response, 'fields.choice1.choices.@0.label', "Value 1")
62
+ self.assertJE(response, 'fields.choice1.choices.@1.label', "Value 2")
63
+ self.assertJE(response, 'fields.choice2.choices.@0.label', "Valeur 3")
64
+ self.assertJE(response, 'fields.choice2.choices.@1.label', "Valeur 4")
65
+
66
+ def test_meta_list(self):
67
+ response = self.client.get('/api/test/meta/list', locale='fr')
68
+ self.assertRC(response, 200)
69
+ self.assertJE(response, 'fields.choice1.choices.@0.label', "Value 1")
70
+ self.assertJE(response, 'fields.choice1.choices.@1.label', "Value 2")
71
+ self.assertJE(response, 'fields.choice2.choices.@0.label', "Valeur 3")
72
+ self.assertJE(response, 'fields.choice2.choices.@1.label', "Valeur 4")
73
+
74
+ def test_get(self):
75
+ c1 = TestChoicesModel.objects.create(choice1='v2', choice2='v3')
76
+
77
+ response = self.client.get(f'/api/test/{c1.pk}', locale='fr')
78
+ self.assertRC(response, 200)
79
+ self.assertJE(response, 'choice1.label', "Value 2")
80
+ self.assertJE(response, 'choice2.label', "Valeur 3")
81
+
82
+ def test_get_list(self):
83
+ TestChoicesModel.objects.create(choice1='v2', choice2='v3')
84
+
85
+ response = self.client.get('/api/test', locale='fr')
86
+ self.assertRC(response, 200)
87
+ self.assertJE(response, 'items.@0.choice1.label', "Value 2")
88
+ self.assertJE(response, 'items.@0.choice2.label', "Valeur 3")
@@ -10,7 +10,7 @@ from pfx.pfxcore.test import APIClient, TestAssertMixin
10
10
  from tests.models import Author, Book
11
11
 
12
12
 
13
- class FieldsTest(TestAssertMixin, TestCase):
13
+ class TestFieldsMinutesDuration(TestAssertMixin, TestCase):
14
14
 
15
15
  def setUp(self):
16
16
  self.client = APIClient(default_locale='en')
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes