django-pfx 1.7.6.dev13__tar.gz → 1.7.6.dev17__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 (323) hide show
  1. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/PKG-INFO +1 -1
  2. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/django_pfx.egg-info/PKG-INFO +1 -1
  3. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/django_pfx.egg-info/SOURCES.txt +8 -0
  4. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/django_pfx.egg-info/scm_file_list.json +7 -0
  5. django_pfx-1.7.6.dev17/django_pfx.egg-info/scm_version.json +8 -0
  6. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/pfx_views.md +5 -1
  7. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/make_messages +1 -0
  8. django_pfx-1.7.6.dev17/pfx/emails/locale/fr/LC_MESSAGES/django.mo +0 -0
  9. django_pfx-1.7.6.dev17/pfx/emails/locale/fr/LC_MESSAGES/django.po +163 -0
  10. django_pfx-1.7.6.dev17/pfx/emails/migrations/0005_lowercase_verbose_names.py +97 -0
  11. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/models/email.py +19 -19
  12. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/decorator/rest.py +4 -1
  13. django_pfx-1.7.6.dev17/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  14. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +49 -40
  15. django_pfx-1.7.6.dev17/pfx/pfxcore/migrations/0008_lowercase_verbose_names.py +57 -0
  16. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/attachment_mixin.py +1 -1
  17. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/login_ban.py +3 -3
  18. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/mfa_device.py +5 -5
  19. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/mfa_user_mixin.py +5 -4
  20. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/ordered_model_mixin.py +1 -1
  21. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/fields.py +14 -6
  22. django_pfx-1.7.6.dev17/pfx/userjobs/locale/fr/LC_MESSAGES/django.mo +0 -0
  23. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/locale/fr/LC_MESSAGES/django.po +55 -43
  24. django_pfx-1.7.6.dev17/pfx/userjobs/migrations/0006_lowercase_verbose_names.py +138 -0
  25. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/models/user_job.py +19 -19
  26. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/models/user_job_attachment.py +2 -2
  27. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/views/user_job_view.py +4 -3
  28. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/migrations/0001_initial.py +2 -2
  29. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/models.py +5 -2
  30. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/__init__.py +1 -0
  31. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/basic_api_test.py +7 -0
  32. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_api_doc.py +6 -0
  33. django_pfx-1.7.6.dev17/tests/tests/test_fields_help_text.py +35 -0
  34. django_pfx-1.7.6.dev17/tests/tests/test_verbose_names.py +72 -0
  35. django_pfx-1.7.6.dev17/tests_custom_user_job/migrations/0002_lowercase_verbose_names.py +116 -0
  36. django_pfx-1.7.6.dev13/django_pfx.egg-info/scm_version.json +0 -8
  37. django_pfx-1.7.6.dev13/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  38. django_pfx-1.7.6.dev13/pfx/userjobs/locale/fr/LC_MESSAGES/django.mo +0 -0
  39. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/.gitignore +0 -0
  40. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/.gitlab-ci.yml +0 -0
  41. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/.pre-commit-config.yaml +0 -0
  42. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/LICENSE +0 -0
  43. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/MANIFEST.in +0 -0
  44. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/README.md +0 -0
  45. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/django_pfx.egg-info/dependency_links.txt +0 -0
  46. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/django_pfx.egg-info/requires.txt +0 -0
  47. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/django_pfx.egg-info/top_level.txt +0 -0
  48. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/Makefile +0 -0
  49. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/conf.py +0 -0
  50. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/index.rst +0 -0
  51. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/api.views.rst +0 -0
  52. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/authentication.md +0 -0
  53. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/decorator.md +0 -0
  54. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/generate_openapi.md +0 -0
  55. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/getting_started.md +0 -0
  56. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/internationalisation.md +0 -0
  57. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/model.md +0 -0
  58. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/profiling.md +0 -0
  59. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/settings.md +0 -0
  60. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/testing.md +0 -0
  61. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/doc/source/user_jobs.md +0 -0
  62. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/img/pfx.png +0 -0
  63. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/img/pfx.svg +0 -0
  64. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/manage.py +0 -0
  65. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/__init__.py +0 -0
  66. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/__init__.py +0 -0
  67. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/apps.py +0 -0
  68. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/email_backend/__init__.py +0 -0
  69. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/email_backend/q_mailjet_email_backend.py +0 -0
  70. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/exceptions.py +0 -0
  71. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/mailjet/__init__.py +0 -0
  72. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/mailjet/mailjet.py +0 -0
  73. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/mailjet/message_result.py +0 -0
  74. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/migrations/0001_initial.py +0 -0
  75. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/migrations/0002_alter_email_headers.py +0 -0
  76. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/migrations/0003_alter_email_options.py +0 -0
  77. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/migrations/0004_alter_email_mail_from.py +0 -0
  78. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/migrations/__init__.py +0 -0
  79. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/models/__init__.py +0 -0
  80. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/providers/__init__.py +0 -0
  81. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/providers/email_django_q_executor.py +0 -0
  82. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/shortcuts.py +0 -0
  83. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/tasks.py +0 -0
  84. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/templates/emails/base_template.html +0 -0
  85. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/templates/emails/base_template.txt +0 -0
  86. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/templates/emails/base_template_subject.txt +0 -0
  87. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/urls.py +0 -0
  88. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/views/__init__.py +0 -0
  89. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/emails/views/email_rest_view.py +0 -0
  90. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/__init__.py +0 -0
  91. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/apidoc/__init__.py +0 -0
  92. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/apidoc/parameters.py +0 -0
  93. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/apidoc/schema.py +0 -0
  94. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/apidoc/tags.py +0 -0
  95. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/apps.py +0 -0
  96. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/decorator/__init__.py +0 -0
  97. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/default_settings.py +0 -0
  98. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/exceptions.py +0 -0
  99. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/fields/__init__.py +0 -0
  100. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/fields/decimal_field.py +0 -0
  101. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/fields/media_field.py +0 -0
  102. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
  103. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/fields/rich_text_field.py +0 -0
  104. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/http/__init__.py +0 -0
  105. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/http/json_response.py +0 -0
  106. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/management/__init__.py +0 -0
  107. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/management/commands/__init__.py +0 -0
  108. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
  109. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/management/commands/profile.py +0 -0
  110. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/mfa/__init__.py +0 -0
  111. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/mfa/authenticator.py +0 -0
  112. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/mfa/base.py +0 -0
  113. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/mfa/email.py +0 -0
  114. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/mfa/legacy.py +0 -0
  115. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/mfa/sms.py +0 -0
  116. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/middleware/__init__.py +0 -0
  117. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/middleware/authentication.py +0 -0
  118. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/middleware/locale.py +0 -0
  119. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/middleware/profiling.py +0 -0
  120. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/middleware/request_too_big_middleware.py +0 -0
  121. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/middleware/ws_cookie_authentication_middleware.py +0 -0
  122. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0001_initial.py +0 -0
  123. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
  124. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
  125. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0004_alter_loginban_failed_counter_and_more.py +0 -0
  126. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0005_mfadevice_mfadevice_mfa_device_unique_backend.py +0 -0
  127. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0006_alter_pfxuser_managers.py +0 -0
  128. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/0007_alter_pfxuser_options.py +0 -0
  129. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/__init__.py +0 -0
  130. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
  131. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
  132. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/__init__.py +0 -0
  133. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
  134. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/cache_mixins.py +0 -0
  135. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/not_null_fields.py +0 -0
  136. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/pfx_models.py +0 -0
  137. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/pfx_user.py +0 -0
  138. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
  139. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/serializers/__init__.py +0 -0
  140. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/serializers/json.py +0 -0
  141. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/settings.py +0 -0
  142. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/shortcuts.py +0 -0
  143. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/sms/__init__.py +0 -0
  144. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/sms/backends/__init__.py +0 -0
  145. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/sms/backends/base.py +0 -0
  146. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/sms/backends/console.py +0 -0
  147. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/storage/__init__.py +0 -0
  148. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/storage/exceptions.py +0 -0
  149. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/storage/local_storage.py +0 -0
  150. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/storage/s3_storage.py +0 -0
  151. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
  152. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
  153. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
  154. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
  155. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
  156. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
  157. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/test.py +0 -0
  158. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/urls.py +0 -0
  159. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/version_check.py +0 -0
  160. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/__init__.py +0 -0
  161. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/authentication_views.py +0 -0
  162. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/filters_views.py +0 -0
  163. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/locale_views.py +0 -0
  164. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
  165. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/mfa_authentication_views.py +0 -0
  166. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
  167. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/__init__.py +0 -0
  168. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/date_format.py +0 -0
  169. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/groups.py +0 -0
  170. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/list_count.py +0 -0
  171. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/list_items.py +0 -0
  172. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
  173. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/list_order.py +0 -0
  174. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/list_search.py +0 -0
  175. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
  176. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
  177. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
  178. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
  179. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/subset.py +0 -0
  180. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
  181. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
  182. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
  183. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
  184. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
  185. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/pfxcore/views/rest_views.py +0 -0
  186. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/settings/__init__.py +0 -0
  187. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/settings/dev.py +0 -0
  188. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/__init__.py +0 -0
  189. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/apps.py +0 -0
  190. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/migrations/0001_initial.py +0 -0
  191. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and_more.py +0 -0
  192. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/migrations/0003_clean_scheduled_tasks.py +0 -0
  193. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/migrations/0004_userjob_summary_url.py +0 -0
  194. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/migrations/0005_swappable_user_job.py +0 -0
  195. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/migrations/__init__.py +0 -0
  196. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/models/__init__.py +0 -0
  197. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/providers/__init__.py +0 -0
  198. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/providers/user_job_django_q_executor.py +0 -0
  199. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/providers/user_job_websocket_channel_provider.py +0 -0
  200. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/tasks.py +0 -0
  201. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/urls.py +0 -0
  202. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/views/__init__.py +0 -0
  203. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/views/user_job_attachment_view.py +0 -0
  204. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pfx/userjobs/views/user_websocket_consumer.py +0 -0
  205. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/pyproject.toml +0 -0
  206. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/requirements.txt +0 -0
  207. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/serve-doc +0 -0
  208. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/setup.cfg +0 -0
  209. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/setup.py +0 -0
  210. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/__init__.py +0 -0
  211. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/apps.py +0 -0
  212. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/channel_group_send_calls.py +0 -0
  213. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
  214. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/mfa_urls.py +0 -0
  215. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/migrations/__init__.py +0 -0
  216. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/settings/__init__.py +0 -0
  217. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/settings/ci.py +0 -0
  218. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/settings/common.py +0 -0
  219. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/settings/dev.py +0 -0
  220. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/settings/dev_custom_example.py +0 -0
  221. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/settings/dev_default.py +0 -0
  222. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/basic_api_errors.py +0 -0
  223. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/mfa_test_utils.py +0 -0
  224. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_api_doc_search.py +0 -0
  225. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_auth_api.py +0 -0
  226. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_body_mixin.py +0 -0
  227. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_cache.py +0 -0
  228. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_client.py +0 -0
  229. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_emails_email_api.py +0 -0
  230. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_emails_email_model.py +0 -0
  231. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_emails_q_mailjet_email_backend.py +0 -0
  232. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_emails_send_email_message.py +0 -0
  233. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_choices.py +0 -0
  234. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_date.py +0 -0
  235. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_decimal.py +0 -0
  236. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_minutes_duration.py +0 -0
  237. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_one2many.py +0 -0
  238. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_rich_text.py +0 -0
  239. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_fields_time.py +0 -0
  240. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_filters.py +0 -0
  241. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_locale_api.py +0 -0
  242. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_mfa_legacy.py +0 -0
  243. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_mfa_login_api.py +0 -0
  244. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_mfa_setup_api.py +0 -0
  245. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
  246. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_perm_tests.py +0 -0
  247. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_permissions.py +0 -0
  248. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_perms_api.py +0 -0
  249. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_post_migrate_groups_update.py +0 -0
  250. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_profiling_middleware.py +0 -0
  251. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_settings.py +0 -0
  252. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_shortcuts.py +0 -0
  253. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_timezone_middleware.py +0 -0
  254. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_tools.py +0 -0
  255. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_user_job_api.py +0 -0
  256. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_user_job_messages.py +0 -0
  257. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_user_job_model.py +0 -0
  258. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_user_queryset.py +0 -0
  259. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_user_websocket.py +0 -0
  260. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_version_check.py +0 -0
  261. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_view_decorators.py +0 -0
  262. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_view_fields.py +0 -0
  263. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/tests/test_ws_cookie_middleware.py +0 -0
  264. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/urls.py +0 -0
  265. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests/views.py +0 -0
  266. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/__init__.py +0 -0
  267. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/migrations/__init__.py +0 -0
  268. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/settings/__init__.py +0 -0
  269. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/settings/ci.py +0 -0
  270. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/settings/common.py +0 -0
  271. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/settings/dev.py +0 -0
  272. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/settings/dev_custom_example.py +0 -0
  273. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/settings/dev_default.py +0 -0
  274. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/tests/__init__.py +0 -0
  275. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/tests/test_api.py +0 -0
  276. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/tests/test_auth_api.py +0 -0
  277. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/urls.py +0 -0
  278. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_base_user/views.py +0 -0
  279. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/__init__.py +0 -0
  280. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/migrations/0001_initial.py +0 -0
  281. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/migrations/__init__.py +0 -0
  282. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/models.py +0 -0
  283. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/settings/__init__.py +0 -0
  284. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/settings/ci.py +0 -0
  285. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/settings/common.py +0 -0
  286. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/settings/dev.py +0 -0
  287. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/settings/dev_custom_example.py +0 -0
  288. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/settings/dev_default.py +0 -0
  289. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/tests/__init__.py +0 -0
  290. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/tests/test_api.py +0 -0
  291. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/tests/test_auth_api.py +0 -0
  292. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/urls.py +0 -0
  293. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user/views.py +0 -0
  294. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/__init__.py +0 -0
  295. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/migrations/0001_initial.py +0 -0
  296. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/migrations/__init__.py +0 -0
  297. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/models.py +0 -0
  298. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/providers.py +0 -0
  299. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/scope.py +0 -0
  300. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/settings/__init__.py +0 -0
  301. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/settings/ci.py +0 -0
  302. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/settings/common.py +0 -0
  303. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/settings/dev.py +0 -0
  304. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/settings/dev_custom_example.py +0 -0
  305. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/settings/dev_default.py +0 -0
  306. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/tests/__init__.py +0 -0
  307. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/tests/test_user_job.py +0 -0
  308. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_custom_user_job/urls.py +0 -0
  309. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/__init__.py +0 -0
  310. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/migrations/0001_initial.py +0 -0
  311. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/migrations/__init__.py +0 -0
  312. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/models.py +0 -0
  313. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/settings/__init__.py +0 -0
  314. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/settings/ci.py +0 -0
  315. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/settings/common.py +0 -0
  316. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/settings/dev.py +0 -0
  317. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/settings/dev_custom_example.py +0 -0
  318. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/settings/dev_default.py +0 -0
  319. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/tests/__init__.py +0 -0
  320. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/tests/test_api.py +0 -0
  321. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/tests/test_auth_api.py +0 -0
  322. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/urls.py +0 -0
  323. {django_pfx-1.7.6.dev13 → django_pfx-1.7.6.dev17}/tests_user_email_login/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-pfx
3
- Version: 1.7.6.dev13
3
+ Version: 1.7.6.dev17
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.6.dev13
3
+ Version: 1.7.6.dev17
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
@@ -44,6 +44,8 @@ pfx/emails/tasks.py
44
44
  pfx/emails/urls.py
45
45
  pfx/emails/email_backend/__init__.py
46
46
  pfx/emails/email_backend/q_mailjet_email_backend.py
47
+ pfx/emails/locale/fr/LC_MESSAGES/django.mo
48
+ pfx/emails/locale/fr/LC_MESSAGES/django.po
47
49
  pfx/emails/mailjet/__init__.py
48
50
  pfx/emails/mailjet/mailjet.py
49
51
  pfx/emails/mailjet/message_result.py
@@ -51,6 +53,7 @@ pfx/emails/migrations/0001_initial.py
51
53
  pfx/emails/migrations/0002_alter_email_headers.py
52
54
  pfx/emails/migrations/0003_alter_email_options.py
53
55
  pfx/emails/migrations/0004_alter_email_mail_from.py
56
+ pfx/emails/migrations/0005_lowercase_verbose_names.py
54
57
  pfx/emails/migrations/__init__.py
55
58
  pfx/emails/models/__init__.py
56
59
  pfx/emails/models/email.py
@@ -108,6 +111,7 @@ pfx/pfxcore/migrations/0004_alter_loginban_failed_counter_and_more.py
108
111
  pfx/pfxcore/migrations/0005_mfadevice_mfadevice_mfa_device_unique_backend.py
109
112
  pfx/pfxcore/migrations/0006_alter_pfxuser_managers.py
110
113
  pfx/pfxcore/migrations/0007_alter_pfxuser_options.py
114
+ pfx/pfxcore/migrations/0008_lowercase_verbose_names.py
111
115
  pfx/pfxcore/migrations/__init__.py
112
116
  pfx/pfxcore/migrations/operations/__init__.py
113
117
  pfx/pfxcore/migrations/operations/permissions.py
@@ -179,6 +183,7 @@ pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and
179
183
  pfx/userjobs/migrations/0003_clean_scheduled_tasks.py
180
184
  pfx/userjobs/migrations/0004_userjob_summary_url.py
181
185
  pfx/userjobs/migrations/0005_swappable_user_job.py
186
+ pfx/userjobs/migrations/0006_lowercase_verbose_names.py
182
187
  pfx/userjobs/migrations/__init__.py
183
188
  pfx/userjobs/models/__init__.py
184
189
  pfx/userjobs/models/user_job.py
@@ -223,6 +228,7 @@ tests/tests/test_emails_send_email_message.py
223
228
  tests/tests/test_fields_choices.py
224
229
  tests/tests/test_fields_date.py
225
230
  tests/tests/test_fields_decimal.py
231
+ tests/tests/test_fields_help_text.py
226
232
  tests/tests/test_fields_minutes_duration.py
227
233
  tests/tests/test_fields_one2many.py
228
234
  tests/tests/test_fields_rich_text.py
@@ -247,6 +253,7 @@ tests/tests/test_user_job_messages.py
247
253
  tests/tests/test_user_job_model.py
248
254
  tests/tests/test_user_queryset.py
249
255
  tests/tests/test_user_websocket.py
256
+ tests/tests/test_verbose_names.py
250
257
  tests/tests/test_version_check.py
251
258
  tests/tests/test_view_decorators.py
252
259
  tests/tests/test_view_fields.py
@@ -285,6 +292,7 @@ tests_custom_user_job/providers.py
285
292
  tests_custom_user_job/scope.py
286
293
  tests_custom_user_job/urls.py
287
294
  tests_custom_user_job/migrations/0001_initial.py
295
+ tests_custom_user_job/migrations/0002_lowercase_verbose_names.py
288
296
  tests_custom_user_job/migrations/__init__.py
289
297
  tests_custom_user_job/settings/__init__.py
290
298
  tests_custom_user_job/settings/ci.py
@@ -31,6 +31,7 @@
31
31
  "pfx/emails/email_backend/__init__.py",
32
32
  "pfx/emails/email_backend/q_mailjet_email_backend.py",
33
33
  "pfx/emails/exceptions.py",
34
+ "pfx/emails/locale/fr/LC_MESSAGES/django.po",
34
35
  "pfx/emails/mailjet/__init__.py",
35
36
  "pfx/emails/mailjet/mailjet.py",
36
37
  "pfx/emails/mailjet/message_result.py",
@@ -38,6 +39,7 @@
38
39
  "pfx/emails/migrations/0002_alter_email_headers.py",
39
40
  "pfx/emails/migrations/0003_alter_email_options.py",
40
41
  "pfx/emails/migrations/0004_alter_email_mail_from.py",
42
+ "pfx/emails/migrations/0005_lowercase_verbose_names.py",
41
43
  "pfx/emails/migrations/__init__.py",
42
44
  "pfx/emails/models/__init__.py",
43
45
  "pfx/emails/models/email.py",
@@ -92,6 +94,7 @@
92
94
  "pfx/pfxcore/migrations/0005_mfadevice_mfadevice_mfa_device_unique_backend.py",
93
95
  "pfx/pfxcore/migrations/0006_alter_pfxuser_managers.py",
94
96
  "pfx/pfxcore/migrations/0007_alter_pfxuser_options.py",
97
+ "pfx/pfxcore/migrations/0008_lowercase_verbose_names.py",
95
98
  "pfx/pfxcore/migrations/__init__.py",
96
99
  "pfx/pfxcore/migrations/operations/__init__.py",
97
100
  "pfx/pfxcore/migrations/operations/permissions.py",
@@ -165,6 +168,7 @@
165
168
  "pfx/userjobs/migrations/0003_clean_scheduled_tasks.py",
166
169
  "pfx/userjobs/migrations/0004_userjob_summary_url.py",
167
170
  "pfx/userjobs/migrations/0005_swappable_user_job.py",
171
+ "pfx/userjobs/migrations/0006_lowercase_verbose_names.py",
168
172
  "pfx/userjobs/migrations/__init__.py",
169
173
  "pfx/userjobs/models/__init__.py",
170
174
  "pfx/userjobs/models/user_job.py",
@@ -214,6 +218,7 @@
214
218
  "tests/tests/test_fields_choices.py",
215
219
  "tests/tests/test_fields_date.py",
216
220
  "tests/tests/test_fields_decimal.py",
221
+ "tests/tests/test_fields_help_text.py",
217
222
  "tests/tests/test_fields_minutes_duration.py",
218
223
  "tests/tests/test_fields_one2many.py",
219
224
  "tests/tests/test_fields_rich_text.py",
@@ -238,6 +243,7 @@
238
243
  "tests/tests/test_user_job_model.py",
239
244
  "tests/tests/test_user_queryset.py",
240
245
  "tests/tests/test_user_websocket.py",
246
+ "tests/tests/test_verbose_names.py",
241
247
  "tests/tests/test_version_check.py",
242
248
  "tests/tests/test_view_decorators.py",
243
249
  "tests/tests/test_view_fields.py",
@@ -274,6 +280,7 @@
274
280
  "tests_custom_user/views.py",
275
281
  "tests_custom_user_job/__init__.py",
276
282
  "tests_custom_user_job/migrations/0001_initial.py",
283
+ "tests_custom_user_job/migrations/0002_lowercase_verbose_names.py",
277
284
  "tests_custom_user_job/migrations/__init__.py",
278
285
  "tests_custom_user_job/models.py",
279
286
  "tests_custom_user_job/providers.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.7.5",
3
+ "distance": 17,
4
+ "node": "g6910de203ed115d5c1a33a4a98e16967547933d6",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-29"
8
+ }
@@ -272,6 +272,10 @@ field = [VF('name')]
272
272
  ```
273
273
  You can specify following optional attributes:
274
274
  * `verbose_name`
275
+ * `help_text`: defaults to the model field `help_text` (or the `help_text`
276
+ argument of `@rest_property`), use an empty string to disable it.
277
+ It is returned by the `/meta` services and used as the field `description`
278
+ in the generated OpenAPI documentation.
275
279
  * `field_type`
276
280
  * `alias`
277
281
  * `readonly`
@@ -286,7 +290,7 @@ Refer to method documentation for details.
286
290
  ### Meta
287
291
 
288
292
  The `ModelResponseMixin` (included in every mixin with a service whose response is a simple object),
289
- exposes a `/meta` service to identify fields (and their characteristics: type, required, readonly, ...),
293
+ exposes a `/meta` service to identify fields (and their characteristics: type, required, readonly, help_text, ...),
290
294
  to enable automatic generation of forms.
291
295
 
292
296
  See the generated API documentation for more details.
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env bash
2
2
  (cd pfx/pfxcore && django-admin makemessages -a)
3
3
  (cd pfx/userjobs && django-admin makemessages -a)
4
+ (cd pfx/emails && django-admin makemessages -a)
4
5
  (cd tests && django-admin makemessages -a)
@@ -0,0 +1,163 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: PACKAGE VERSION\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2026-09-28 18:07+0200\n"
11
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "Language: fr\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
+
20
+ #: models/email.py:62
21
+ msgid "To send"
22
+ msgstr "À envoyer"
23
+
24
+ #: models/email.py:63
25
+ msgid "Sending"
26
+ msgstr "En cours d’envoi"
27
+
28
+ #: models/email.py:64
29
+ msgid "Sent"
30
+ msgstr "Envoyé"
31
+
32
+ #: models/email.py:65
33
+ msgid "Delivered"
34
+ msgstr "Délivré"
35
+
36
+ #: models/email.py:66
37
+ msgid "Delivery Error"
38
+ msgstr "Erreur de délivrance"
39
+
40
+ #: models/email.py:67
41
+ msgid "Error"
42
+ msgstr "Erreur"
43
+
44
+ #: models/email.py:68
45
+ msgid "Error Retry"
46
+ msgstr "Erreur, nouvel essai"
47
+
48
+ #: models/email.py:69
49
+ msgid "Blocked"
50
+ msgstr "Bloqué"
51
+
52
+ #: models/email.py:72
53
+ msgid "send date"
54
+ msgstr "date d’envoi"
55
+
56
+ #: models/email.py:74
57
+ msgid "mail from"
58
+ msgstr "expéditeur"
59
+
60
+ #: models/email.py:75
61
+ msgid "mail to"
62
+ msgstr "destinataires"
63
+
64
+ #: models/email.py:76
65
+ msgid "mail cc"
66
+ msgstr "copie"
67
+
68
+ #: models/email.py:77
69
+ msgid "mail bcc"
70
+ msgstr "copie cachée"
71
+
72
+ #: models/email.py:78
73
+ msgid "subject"
74
+ msgstr "objet"
75
+
76
+ #: models/email.py:79
77
+ msgid "text part"
78
+ msgstr "partie texte"
79
+
80
+ #: models/email.py:80
81
+ msgid "HTML part"
82
+ msgstr "partie HTML"
83
+
84
+ #: models/email.py:81
85
+ msgid "headers"
86
+ msgstr "en-têtes"
87
+
88
+ #: models/email.py:84
89
+ msgid "status"
90
+ msgstr "statut"
91
+
92
+ #: models/email.py:87
93
+ msgid "HTTP status code"
94
+ msgstr "code de statut HTTP"
95
+
96
+ #: models/email.py:88
97
+ msgid "errors"
98
+ msgstr "erreurs"
99
+
100
+ #: models/email.py:90
101
+ msgid "send mode"
102
+ msgstr "mode d’envoi"
103
+
104
+ #: models/email.py:91
105
+ msgid "Manual"
106
+ msgstr "Manuel"
107
+
108
+ #: models/email.py:92
109
+ msgid "Auto"
110
+ msgstr "Automatique"
111
+
112
+ #: models/email.py:93
113
+ msgid "Auto Async"
114
+ msgstr "Automatique asynchrone"
115
+
116
+ #: models/email.py:94
117
+ msgid "delete delivered"
118
+ msgstr "supprimer après délivrance"
119
+
120
+ #: models/email.py:96
121
+ msgid "send task ID"
122
+ msgstr "ID de la tâche d’envoi"
123
+
124
+ #: models/email.py:97
125
+ msgid "retry count"
126
+ msgstr "nombre de tentatives"
127
+
128
+ #: models/email.py:101
129
+ msgid "Email"
130
+ msgstr "Email"
131
+
132
+ #: models/email.py:102
133
+ msgid "Emails"
134
+ msgstr "Emails"
135
+
136
+ #: models/email.py:114
137
+ msgid "to"
138
+ msgstr "à"
139
+
140
+ #: models/email.py:120
141
+ msgid "cc"
142
+ msgstr "cc"
143
+
144
+ #: models/email.py:126
145
+ msgid "bcc"
146
+ msgstr "cci"
147
+
148
+ #: models/email.py:182 models/email.py:189
149
+ msgid "Cannot be empty."
150
+ msgstr "Ne peut pas être vide."
151
+
152
+ #: models/email.py:184 models/email.py:191 models/email.py:198
153
+ #: models/email.py:205
154
+ msgid "Invalid format."
155
+ msgstr "Format invalide."
156
+
157
+ #: models/email.py:212
158
+ msgid "Email must contain a text_part or an html_part."
159
+ msgstr "L’email doit contenir une partie texte ou une partie HTML."
160
+
161
+ #: models/email.py:289
162
+ msgid "Error while updating the message"
163
+ msgstr "Erreur lors de la mise à jour du message"
@@ -0,0 +1,97 @@
1
+ # Generated by Django 5.2.16 on 2026-09-28 15:34
2
+ # flake8: noqa
3
+
4
+ from django.db import migrations, models
5
+
6
+ import pfx.emails.shortcuts
7
+ import pfx.pfxcore.models.not_null_fields
8
+
9
+
10
+ class Migration(migrations.Migration):
11
+
12
+ dependencies = [
13
+ ('emails', '0004_alter_email_mail_from'),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.AlterField(
18
+ model_name='email',
19
+ name='delete_delivered',
20
+ field=models.BooleanField(default=True, verbose_name='delete delivered'),
21
+ ),
22
+ migrations.AlterField(
23
+ model_name='email',
24
+ name='errors',
25
+ field=models.JSONField(blank=True, null=True, verbose_name='errors'),
26
+ ),
27
+ migrations.AlterField(
28
+ model_name='email',
29
+ name='headers',
30
+ field=models.JSONField(blank=True, default=dict, verbose_name='headers'),
31
+ ),
32
+ migrations.AlterField(
33
+ model_name='email',
34
+ name='html_part',
35
+ field=pfx.pfxcore.models.not_null_fields.NotNullTextField(blank=True, verbose_name='HTML part'),
36
+ ),
37
+ migrations.AlterField(
38
+ model_name='email',
39
+ name='mail_bcc',
40
+ field=models.JSONField(blank=True, default=list, verbose_name='mail bcc'),
41
+ ),
42
+ migrations.AlterField(
43
+ model_name='email',
44
+ name='mail_cc',
45
+ field=models.JSONField(blank=True, default=list, verbose_name='mail cc'),
46
+ ),
47
+ migrations.AlterField(
48
+ model_name='email',
49
+ name='mail_from',
50
+ field=models.JSONField(default=pfx.emails.shortcuts.default_mail_from_json, verbose_name='mail from'),
51
+ ),
52
+ migrations.AlterField(
53
+ model_name='email',
54
+ name='mail_to',
55
+ field=models.JSONField(default=list, verbose_name='mail to'),
56
+ ),
57
+ migrations.AlterField(
58
+ model_name='email',
59
+ name='retry_count',
60
+ field=models.IntegerField(default=0, verbose_name='retry count'),
61
+ ),
62
+ migrations.AlterField(
63
+ model_name='email',
64
+ name='send_date',
65
+ field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='send date'),
66
+ ),
67
+ migrations.AlterField(
68
+ model_name='email',
69
+ name='send_mode',
70
+ field=models.CharField(choices=[('manual', 'Manual'), ('auto', 'Auto'), ('auto_async', 'Auto Async')], db_index=True, default='auto_async', max_length=32, verbose_name='send mode'),
71
+ ),
72
+ migrations.AlterField(
73
+ model_name='email',
74
+ name='send_task_id',
75
+ field=models.CharField(blank=True, max_length=255, null=True, unique=True, verbose_name='send task ID'),
76
+ ),
77
+ migrations.AlterField(
78
+ model_name='email',
79
+ name='status',
80
+ field=models.CharField(choices=[('to_send', 'To send'), ('sending', 'Sending'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('delivery_error', 'Delivery Error'), ('error', 'Error'), ('error_retry', 'Error Retry'), ('blocked', 'Blocked')], db_index=True, default='to_send', max_length=32, verbose_name='status'),
81
+ ),
82
+ migrations.AlterField(
83
+ model_name='email',
84
+ name='status_code',
85
+ field=models.IntegerField(blank=True, null=True, verbose_name='HTTP status code'),
86
+ ),
87
+ migrations.AlterField(
88
+ model_name='email',
89
+ name='subject',
90
+ field=models.CharField(max_length=255, verbose_name='subject'),
91
+ ),
92
+ migrations.AlterField(
93
+ model_name='email',
94
+ name='text_part',
95
+ field=pfx.pfxcore.models.not_null_fields.NotNullTextField(blank=True, verbose_name='text part'),
96
+ ),
97
+ ]
@@ -69,32 +69,32 @@ class AbstractEmail(models.Model):
69
69
  ('blocked', _("Blocked"))]
70
70
 
71
71
  send_date = models.DateTimeField(
72
- _('Send date'), blank=True, null=True, auto_now_add=True)
72
+ _("send date"), blank=True, null=True, auto_now_add=True)
73
73
  mail_from = models.JSONField(
74
- _("Mail From"), default=default_mail_from_json)
75
- mail_to = models.JSONField(_("Mail To"), default=list)
76
- mail_cc = models.JSONField(_("Mail Cc"), blank=True, default=list)
77
- mail_bcc = models.JSONField(_("Mail Bcc"), blank=True, default=list)
78
- subject = models.CharField(_("Subject"), max_length=255)
79
- text_part = NotNullTextField(_("Text Part"), blank=True)
80
- html_part = NotNullTextField(_("HTML Part"), blank=True)
81
- headers = models.JSONField(_("Headers"), default=dict, blank=True)
74
+ _("mail from"), default=default_mail_from_json)
75
+ mail_to = models.JSONField(_("mail to"), default=list)
76
+ mail_cc = models.JSONField(_("mail cc"), blank=True, default=list)
77
+ mail_bcc = models.JSONField(_("mail bcc"), blank=True, default=list)
78
+ subject = models.CharField(_("subject"), max_length=255)
79
+ text_part = NotNullTextField(_("text part"), blank=True)
80
+ html_part = NotNullTextField(_("HTML part"), blank=True)
81
+ headers = models.JSONField(_("headers"), default=dict, blank=True)
82
82
  attachments = models.JSONField('Attachments', blank=True, default=list)
83
83
  status = models.CharField(
84
- _("Status"), max_length=32, db_index=True, choices=STATUS_LIST,
84
+ _("status"), max_length=32, db_index=True, choices=STATUS_LIST,
85
85
  default='to_send')
86
86
  status_code = models.IntegerField(
87
- _("HTTP Status Code"), blank=True, null=True)
88
- errors = models.JSONField(_("Errors"), blank=True, null=True)
87
+ _("HTTP status code"), blank=True, null=True)
88
+ errors = models.JSONField(_("errors"), blank=True, null=True)
89
89
  send_mode = models.CharField(
90
- _("Send Mode"), max_length=32, db_index=True, choices=[
90
+ _("send mode"), max_length=32, db_index=True, choices=[
91
91
  ('manual', _("Manual")),
92
92
  ('auto', _("Auto")),
93
93
  ('auto_async', _("Auto Async"))], default='auto_async')
94
- delete_delivered = models.BooleanField(_("Delete Delivered"), default=True)
94
+ delete_delivered = models.BooleanField(_("delete delivered"), default=True)
95
95
  send_task_id = models.CharField(
96
- _("Send Task Id"), max_length=255, unique=True, blank=True, null=True)
97
- retry_count = models.IntegerField(_("Retry count"), default=0)
96
+ _("send task ID"), max_length=255, unique=True, blank=True, null=True)
97
+ retry_count = models.IntegerField(_("retry count"), default=0)
98
98
 
99
99
  class Meta:
100
100
  db_table = "emails_email"
@@ -111,19 +111,19 @@ class AbstractEmail(models.Model):
111
111
  def _display_to(self):
112
112
  return format_json_mail_list(self.mail_to or [])
113
113
 
114
- _display_to.short_description = _("To")
114
+ _display_to.short_description = _("to")
115
115
  display_to = property(_display_to)
116
116
 
117
117
  def _display_cc(self):
118
118
  return format_json_mail_list(self.mail_cc or [])
119
119
 
120
- _display_cc.short_description = _("Cc")
120
+ _display_cc.short_description = _("cc")
121
121
  display_cc = property(_display_cc)
122
122
 
123
123
  def _display_bcc(self):
124
124
  return format_json_mail_list(self.mail_bcc or [])
125
125
 
126
- _display_bcc.short_description = _("Bcc")
126
+ _display_bcc.short_description = _("bcc")
127
127
  display_bcc = property(_display_bcc)
128
128
 
129
129
  @property
@@ -54,9 +54,12 @@ def rest_api(
54
54
  return decorator
55
55
 
56
56
 
57
- def rest_property(string=None, type="CharField", field=None, order=None):
57
+ def rest_property(
58
+ string=None, type="CharField", field=None, order=None,
59
+ help_text=None):
58
60
  def decorator(func):
59
61
  func.short_description = string
62
+ func.help_text = help_text
60
63
  func.field_type = type
61
64
  func.field = field
62
65
  func.order = order