django-pfx 1.7.3.dev41__tar.gz → 1.7.4.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/PKG-INFO +1 -1
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/django_pfx.egg-info/PKG-INFO +1 -1
- django_pfx-1.7.4.dev2/django_pfx.egg-info/scm_version.json +8 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +12 -12
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/abstract_pfx_base_user.py +9 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/shortcuts.py +6 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/authentication_views.py +7 -5
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_auth_api.py +17 -7
- django_pfx-1.7.3.dev41/django_pfx.egg-info/scm_version.json +0 -8
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/.gitignore +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/.gitlab-ci.yml +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/LICENSE +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/MANIFEST.in +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/README.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/django_pfx.egg-info/SOURCES.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/django_pfx.egg-info/scm_file_list.json +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/Makefile +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/conf.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/index.rst +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/api.views.rst +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/authentication.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/decorator.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/getting_started.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/model.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/profiling.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/settings.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/doc/source/testing.md +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/img/pfx.png +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/img/pfx.svg +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/make_messages +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/manage.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/apps.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/email_backend/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/email_backend/q_mailjet_email_backend.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/exceptions.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/mailjet/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/mailjet/mailjet.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/mailjet/message_result.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/migrations/0002_alter_email_headers.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/migrations/0003_alter_email_options.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/models/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/models/email.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/providers/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/providers/email_django_q_executor.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/shortcuts.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/tasks.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/templates/emails/base_template.html +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/templates/emails/base_template.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/templates/emails/base_template_subject.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/views/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/views/email_rest_view.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/fields/decimal_field.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/fields/rich_text_field.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/mfa/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/mfa/authenticator.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/mfa/base.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/mfa/email.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/mfa/legacy.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/mfa/sms.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/middleware/request_too_big_middleware.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/middleware/ws_cookie_authentication_middleware.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/0004_alter_loginban_failed_counter_and_more.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/0005_mfadevice_mfadevice_mfa_device_unique_backend.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/attachment_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/mfa_device.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/mfa_user_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/sms/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/sms/backends/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/sms/backends/base.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/sms/backends/console.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/fields.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/mfa_authentication_views.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/apps.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and_more.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/migrations/0003_clean_scheduled_tasks.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/migrations/0004_userjob_summary_url.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/models/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/models/user_job.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/models/user_job_attachment.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/providers/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/providers/user_job_django_q_executor.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/providers/user_job_websocket_channel_provider.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/tasks.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/views/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/views/user_job_attachment_view.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/views/user_job_view.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/userjobs/views/user_websocket_consumer.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pyproject.toml +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/requirements.txt +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/serve-doc +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/setup.cfg +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/setup.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/apps.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/channel_group_send_calls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/mfa_urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0004_mfausermixin_fields.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0005_mfausermixin_fields_fix.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0006_rename_otp_enabled_user_mfa_authenticator_enabled_and_more.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0007_attachment.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/0008_remove_user_hotp_count_remove_user_hotp_expiry_and_more.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/models.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/settings/ci.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/settings/common.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/mfa_test_utils.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_client.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_emails_email_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_emails_email_model.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_emails_q_mailjet_email_backend.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_emails_send_email_message.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_date.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_decimal.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_one2many.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_rich_text.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_fields_time.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_mfa_legacy.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_mfa_login_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_mfa_setup_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_user_job_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_user_job_messages.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_user_job_model.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_user_websocket.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests/views.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_base_user/views.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/models.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/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
|
+
Version: 1.7.4.dev2
|
|
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
|
+
Version: 1.7.4.dev2
|
|
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
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po
RENAMED
|
@@ -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-07-
|
|
10
|
+
"POT-Creation-Date: 2026-07-29 14:36+0200\n"
|
|
11
11
|
"PO-Revision-Date: 2021-06-22 23:31+0200\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -66,11 +66,11 @@ msgstr ""
|
|
|
66
66
|
msgid "Your {site_name} verification code: {otp_code}"
|
|
67
67
|
msgstr "Votre code pour {site_name} : {otp_code}"
|
|
68
68
|
|
|
69
|
-
#: models/abstract_pfx_base_user.py:
|
|
69
|
+
#: models/abstract_pfx_base_user.py:58
|
|
70
70
|
msgid "user"
|
|
71
71
|
msgstr "utilisateur"
|
|
72
72
|
|
|
73
|
-
#: models/abstract_pfx_base_user.py:
|
|
73
|
+
#: models/abstract_pfx_base_user.py:59
|
|
74
74
|
msgid "users"
|
|
75
75
|
msgstr "utilisateurs"
|
|
76
76
|
|
|
@@ -276,11 +276,11 @@ msgstr "Bienvenue sur %(site_name)s."
|
|
|
276
276
|
msgid "Welcome on %(site_name)s"
|
|
277
277
|
msgstr "Bienvenue sur %(site_name)s"
|
|
278
278
|
|
|
279
|
-
#: views/authentication_views.py:
|
|
279
|
+
#: views/authentication_views.py:84
|
|
280
280
|
msgid "Login failed"
|
|
281
281
|
msgstr "La connexion a échoué"
|
|
282
282
|
|
|
283
|
-
#: views/authentication_views.py:
|
|
283
|
+
#: views/authentication_views.py:93
|
|
284
284
|
#, python-brace-format
|
|
285
285
|
msgid ""
|
|
286
286
|
"Your connection is temporarily disabled after several unsuccessful attempts, "
|
|
@@ -289,31 +289,31 @@ msgstr ""
|
|
|
289
289
|
"Votre connexion est temporairement désactivée après plusieurs tentatives "
|
|
290
290
|
"infructueuses, veuillez réessayer dans {seconds} secondes."
|
|
291
291
|
|
|
292
|
-
#: views/authentication_views.py:
|
|
292
|
+
#: views/authentication_views.py:185
|
|
293
293
|
msgid "Successful login"
|
|
294
294
|
msgstr "Connexion réussie"
|
|
295
295
|
|
|
296
|
-
#: views/authentication_views.py:
|
|
296
|
+
#: views/authentication_views.py:259 views/authentication_views.py:427
|
|
297
297
|
msgid "password updated successfully"
|
|
298
298
|
msgstr "le mot de passe a été mis à jour avec succès"
|
|
299
299
|
|
|
300
|
-
#: views/authentication_views.py:
|
|
300
|
+
#: views/authentication_views.py:264
|
|
301
301
|
msgid "Incorrect password"
|
|
302
302
|
msgstr "Mot de passe incorrect"
|
|
303
303
|
|
|
304
|
-
#: views/authentication_views.py:
|
|
304
|
+
#: views/authentication_views.py:267 views/authentication_views.py:436
|
|
305
305
|
msgid "Empty password is not allowed"
|
|
306
306
|
msgstr "Un mot de passe vide n’est pas autorisé"
|
|
307
307
|
|
|
308
|
-
#: views/authentication_views.py:
|
|
308
|
+
#: views/authentication_views.py:356
|
|
309
309
|
msgid "User and token are valid"
|
|
310
310
|
msgstr "L’utilisateur et le token sont valides"
|
|
311
311
|
|
|
312
|
-
#: views/authentication_views.py:
|
|
312
|
+
#: views/authentication_views.py:358
|
|
313
313
|
msgid "User or token is invalid"
|
|
314
314
|
msgstr "L’utilisateur ou le token est invalide"
|
|
315
315
|
|
|
316
|
-
#: views/authentication_views.py:
|
|
316
|
+
#: views/authentication_views.py:633
|
|
317
317
|
msgid ""
|
|
318
318
|
"If the email address you entered is correct, you will receive an email from "
|
|
319
319
|
"us with instructions to reset your password."
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/abstract_pfx_base_user.py
RENAMED
|
@@ -14,6 +14,9 @@ class AbstractPFXBaseUser(PFXModelMixin, AbstractBaseUser):
|
|
|
14
14
|
class Meta:
|
|
15
15
|
abstract = True
|
|
16
16
|
|
|
17
|
+
def __str__(self):
|
|
18
|
+
return self.get_username()
|
|
19
|
+
|
|
17
20
|
def auth_json_repr(self, **kw):
|
|
18
21
|
res = self.json_repr(
|
|
19
22
|
username=self.get_username(),
|
|
@@ -27,6 +30,9 @@ class AbstractPFXBaseUser(PFXModelMixin, AbstractBaseUser):
|
|
|
27
30
|
res['permissions'] = list(self.get_all_permissions())
|
|
28
31
|
return res
|
|
29
32
|
|
|
33
|
+
def get_email_rfc(self):
|
|
34
|
+
return f'"{self}" <{getattr(self, self.get_email_field_name())}>'
|
|
35
|
+
|
|
30
36
|
@classmethod
|
|
31
37
|
def auth_json_repr_schema(cls):
|
|
32
38
|
return cls.json_repr_schema()
|
|
@@ -53,6 +59,9 @@ class AbstractPFXUser(AbstractUser, AbstractPFXBaseUser):
|
|
|
53
59
|
verbose_name_plural = _("users")
|
|
54
60
|
abstract = True
|
|
55
61
|
|
|
62
|
+
def __str__(self):
|
|
63
|
+
return f"{self.first_name} {self.last_name}"
|
|
64
|
+
|
|
56
65
|
def auth_json_repr(self, **kw):
|
|
57
66
|
res = super().auth_json_repr(
|
|
58
67
|
first_name=self.first_name,
|
|
@@ -172,3 +172,9 @@ def file_extension(filename):
|
|
|
172
172
|
def get_system_error_user_message(context=None):
|
|
173
173
|
# use str() to force lazy gettext string to be translated.
|
|
174
174
|
return str(settings.PFX_SYSTEM_ERROR_USER_MESSAGE)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def default_from_email_rfc():
|
|
178
|
+
return (
|
|
179
|
+
f'"{settings.PFX_EMAILS_DEFAULT_FROM_NAME}" '
|
|
180
|
+
f'<{settings.PFX_EMAILS_DEFAULT_FROM_EMAIL}>')
|
|
@@ -31,7 +31,11 @@ from pfx.pfxcore.middleware.authentication import JWTTokenDecodeMixin
|
|
|
31
31
|
from pfx.pfxcore.models import CacheableMixin
|
|
32
32
|
from pfx.pfxcore.models.login_ban import LoginBan
|
|
33
33
|
from pfx.pfxcore.settings import settings
|
|
34
|
-
from pfx.pfxcore.shortcuts import
|
|
34
|
+
from pfx.pfxcore.shortcuts import (
|
|
35
|
+
default_from_email_rfc,
|
|
36
|
+
delete_token_cookie,
|
|
37
|
+
f,
|
|
38
|
+
)
|
|
35
39
|
|
|
36
40
|
from .rest_views import (
|
|
37
41
|
BaseRestView,
|
|
@@ -494,8 +498,6 @@ class SendMessageTokenMixin:
|
|
|
494
498
|
from_email = None
|
|
495
499
|
#: The HTML email template.
|
|
496
500
|
html_email_template_name = None
|
|
497
|
-
#: The email field of user model.
|
|
498
|
-
email_field = 'email'
|
|
499
501
|
#: The language field of user model
|
|
500
502
|
language_field = 'language'
|
|
501
503
|
|
|
@@ -524,8 +526,8 @@ class SendMessageTokenMixin:
|
|
|
524
526
|
subject = ''.join(subject.splitlines())
|
|
525
527
|
body = loader.render_to_string(self.email_template_name, data)
|
|
526
528
|
email_message = EmailMultiAlternatives(
|
|
527
|
-
subject, body, self.from_email,
|
|
528
|
-
[
|
|
529
|
+
subject, body, self.from_email or default_from_email_rfc(),
|
|
530
|
+
[user.get_email_rfc()])
|
|
529
531
|
if self.html_email_template_name is not None:
|
|
530
532
|
html_email = loader.render_to_string(
|
|
531
533
|
self.html_email_template_name, data)
|
|
@@ -595,6 +595,9 @@ class AuthAPITest(TestAssertMixin, TransactionTestCase):
|
|
|
595
595
|
'Set-Cookie: token=""; expires=Thu, 01 Jan 1970 00:00:00 GMT; '
|
|
596
596
|
'Max-Age=0; Path=/; SameSite=None; Secure')
|
|
597
597
|
|
|
598
|
+
@override_settings(
|
|
599
|
+
PFX_EMAILS_DEFAULT_FROM_NAME="PFX",
|
|
600
|
+
PFX_EMAILS_DEFAULT_FROM_EMAIL="pfx@example.com")
|
|
598
601
|
def test_signup(self):
|
|
599
602
|
# Try to create with an existing username
|
|
600
603
|
response = self.client.post(
|
|
@@ -621,15 +624,16 @@ class AuthAPITest(TestAssertMixin, TransactionTestCase):
|
|
|
621
624
|
self.assertRC(response, 200)
|
|
622
625
|
|
|
623
626
|
# Must send a welcome email
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
+
email = mail.outbox[0]
|
|
628
|
+
self.assertEqual(email.from_email, '"PFX" <pfx@example.com>')
|
|
629
|
+
self.assertEqual(email.to, ['"Isaac Asimov" <isaac.asimov@bu.edu>'])
|
|
630
|
+
self.assertEqual(email.subject, f'Welcome on {settings.PFX_SITE_NAME}')
|
|
627
631
|
|
|
628
632
|
self.client.logout()
|
|
629
633
|
|
|
630
634
|
# Test that the token and uid are valid.
|
|
631
635
|
regex = r"token=(.*)&uidb64=(.*)"
|
|
632
|
-
token, uidb64 = re.findall(regex,
|
|
636
|
+
token, uidb64 = re.findall(regex, email.body)[0]
|
|
633
637
|
response = self.client.post(
|
|
634
638
|
'/api/auth/set-password', {
|
|
635
639
|
'token': token,
|
|
@@ -646,6 +650,9 @@ class AuthAPITest(TestAssertMixin, TransactionTestCase):
|
|
|
646
650
|
self.assertRC(response, 422)
|
|
647
651
|
self.assertJE(response, 'username.@0', 'This field cannot be blank.')
|
|
648
652
|
|
|
653
|
+
@override_settings(
|
|
654
|
+
PFX_EMAILS_DEFAULT_FROM_NAME="PFX",
|
|
655
|
+
PFX_EMAILS_DEFAULT_FROM_EMAIL="pfx@example.com")
|
|
649
656
|
def test_forgotten_password(self):
|
|
650
657
|
# Try with an nonexistent email
|
|
651
658
|
response = self.client.post(
|
|
@@ -672,15 +679,18 @@ class AuthAPITest(TestAssertMixin, TransactionTestCase):
|
|
|
672
679
|
'instructions to reset your password.')
|
|
673
680
|
|
|
674
681
|
# Must send a reset password email
|
|
682
|
+
email = mail.outbox[0]
|
|
683
|
+
self.assertEqual(email.from_email, '"PFX" <pfx@example.com>')
|
|
684
|
+
self.assertEqual(email.to, [
|
|
685
|
+
'"John Ronald Reuel Tolkien" <jrr.tolkien@oxford.com>'])
|
|
675
686
|
self.assertEqual(
|
|
676
|
-
|
|
677
|
-
f'Password reset on {settings.PFX_SITE_NAME}')
|
|
687
|
+
email.subject, f'Password reset on {settings.PFX_SITE_NAME}')
|
|
678
688
|
|
|
679
689
|
self.client.logout()
|
|
680
690
|
|
|
681
691
|
# Test that the token and uid are valid.
|
|
682
692
|
regex = r"token=(.*)&uidb64=(.*)"
|
|
683
|
-
token, uidb64 = re.findall(regex,
|
|
693
|
+
token, uidb64 = re.findall(regex, email.body)[0]
|
|
684
694
|
response = self.client.post(
|
|
685
695
|
'/api/auth/set-password', {
|
|
686
696
|
'token': token,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/email_backend/q_mailjet_email_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/migrations/0002_alter_email_headers.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/migrations/0003_alter_email_options.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/providers/email_django_q_executor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/templates/emails/base_template.html
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/emails/templates/emails/base_template.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/fields/minutes_duration_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/management/commands/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/management/commands/makeapidoc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/models/user_filtered_queryset_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/mfa_authentication_views.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/ordered_rest_view_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev41 → django_pfx-1.7.4.dev2}/pfx/pfxcore/views/parameters/date_format.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|