django-pfx 1.7.3.dev35__tar.gz → 1.7.3.dev39__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.dev35 → django_pfx-1.7.3.dev39}/PKG-INFO +1 -1
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/django_pfx.egg-info/SOURCES.txt +1 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/django_pfx.egg-info/scm_file_list.json +1 -0
- django_pfx-1.7.3.dev39/django_pfx.egg-info/scm_version.json +8 -0
- django_pfx-1.7.3.dev39/pfx/userjobs/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/locale/fr/LC_MESSAGES/django.po +20 -17
- django_pfx-1.7.3.dev39/pfx/userjobs/migrations/0003_clean_scheduled_tasks.py +28 -0
- django_pfx-1.7.3.dev39/pfx/userjobs/migrations/0004_userjob_summary_url.py +21 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/models/user_job.py +5 -1
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/views/user_job_view.py +2 -1
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_user_job_api.py +42 -7
- django_pfx-1.7.3.dev35/django_pfx.egg-info/scm_version.json +0 -8
- django_pfx-1.7.3.dev35/pfx/userjobs/locale/fr/LC_MESSAGES/django.mo +0 -0
- django_pfx-1.7.3.dev35/pfx/userjobs/migrations/0003_clean_scheduled_tasks.py +0 -15
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/.gitignore +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/.gitlab-ci.yml +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/LICENSE +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/MANIFEST.in +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/README.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/Makefile +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/conf.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/index.rst +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/api.views.rst +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/authentication.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/decorator.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/getting_started.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/model.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/profiling.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/settings.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/doc/source/testing.md +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/img/pfx.png +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/img/pfx.svg +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/make_messages +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/manage.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/apps.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/email_backend/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/email_backend/q_mailjet_email_backend.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/exceptions.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/mailjet/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/mailjet/mailjet.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/mailjet/message_result.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/migrations/0002_alter_email_headers.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/migrations/0003_alter_email_options.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/models/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/models/email.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/providers/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/providers/email_django_q_executor.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/shortcuts.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/tasks.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/templates/emails/base_template.html +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/templates/emails/base_template.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/templates/emails/base_template_subject.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/views/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/views/email_rest_view.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/fields/decimal_field.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/fields/rich_text_field.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/mfa/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/mfa/authenticator.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/mfa/base.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/mfa/email.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/mfa/legacy.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/mfa/sms.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/middleware/request_too_big_middleware.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/middleware/ws_cookie_authentication_middleware.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/0004_alter_loginban_failed_counter_and_more.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/0005_mfadevice_mfadevice_mfa_device_unique_backend.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/attachment_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/mfa_device.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/mfa_user_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/sms/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/sms/backends/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/sms/backends/base.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/sms/backends/console.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/fields.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/mfa_authentication_views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/apps.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and_more.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/models/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/models/user_job_attachment.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/providers/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/providers/user_job_django_q_executor.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/providers/user_job_websocket_channel_provider.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/tasks.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/views/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/views/user_job_attachment_view.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/views/user_websocket_consumer.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pyproject.toml +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/requirements.txt +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/serve-doc +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/setup.cfg +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/setup.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/apps.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/channel_group_send_calls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/mfa_urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0002_alter_book_cover.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0003_book_local_file.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0004_mfausermixin_fields.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0005_mfausermixin_fields_fix.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0006_rename_otp_enabled_user_mfa_authenticator_enabled_and_more.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0007_attachment.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/0008_remove_user_hotp_count_remove_user_hotp_expiry_and_more.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/models.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/settings/ci.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/settings/common.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/mfa_test_utils.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_client.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_emails_email_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_emails_email_model.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_emails_q_mailjet_email_backend.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_emails_send_email_message.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_date.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_decimal.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_one2many.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_rich_text.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_fields_time.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_mfa_legacy.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_mfa_login_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_mfa_setup_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_user_job_messages.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_user_job_model.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_user_websocket.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests/views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_base_user/views.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/models.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/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.
|
|
3
|
+
Version: 1.7.3.dev39
|
|
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.
|
|
3
|
+
Version: 1.7.3.dev39
|
|
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
|
|
@@ -172,6 +172,7 @@ pfx/userjobs/locale/fr/LC_MESSAGES/django.po
|
|
|
172
172
|
pfx/userjobs/migrations/0001_initial.py
|
|
173
173
|
pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and_more.py
|
|
174
174
|
pfx/userjobs/migrations/0003_clean_scheduled_tasks.py
|
|
175
|
+
pfx/userjobs/migrations/0004_userjob_summary_url.py
|
|
175
176
|
pfx/userjobs/migrations/__init__.py
|
|
176
177
|
pfx/userjobs/models/__init__.py
|
|
177
178
|
pfx/userjobs/models/user_job.py
|
|
@@ -208,6 +208,7 @@
|
|
|
208
208
|
"pfx/userjobs/views/user_websocket_consumer.py",
|
|
209
209
|
"pfx/userjobs/views/user_job_view.py",
|
|
210
210
|
"pfx/userjobs/views/user_job_attachment_view.py",
|
|
211
|
+
"pfx/userjobs/migrations/0004_userjob_summary_url.py",
|
|
211
212
|
"pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and_more.py",
|
|
212
213
|
"pfx/userjobs/migrations/__init__.py",
|
|
213
214
|
"pfx/userjobs/migrations/0003_clean_scheduled_tasks.py",
|
|
Binary file
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/userjobs/locale/fr/LC_MESSAGES/django.po
RENAMED
|
@@ -7,7 +7,7 @@ msgid ""
|
|
|
7
7
|
msgstr ""
|
|
8
8
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
|
-
"POT-Creation-Date: 2026-
|
|
10
|
+
"POT-Creation-Date: 2026-07-15 18:23+0200\n"
|
|
11
11
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
12
12
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
13
13
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
@@ -77,51 +77,55 @@ msgstr "Statut lu"
|
|
|
77
77
|
msgid "Summary"
|
|
78
78
|
msgstr "Résumé"
|
|
79
79
|
|
|
80
|
-
#: models/user_job.py:
|
|
80
|
+
#: models/user_job.py:85
|
|
81
|
+
msgid "Summary URL"
|
|
82
|
+
msgstr "URL du Résumé"
|
|
83
|
+
|
|
84
|
+
#: models/user_job.py:86
|
|
81
85
|
msgid "Message"
|
|
82
86
|
msgstr "Message"
|
|
83
87
|
|
|
84
|
-
#: models/user_job.py:
|
|
88
|
+
#: models/user_job.py:87
|
|
85
89
|
msgid "Error log"
|
|
86
90
|
msgstr "Journal d’erreur"
|
|
87
91
|
|
|
88
|
-
#: models/user_job.py:
|
|
92
|
+
#: models/user_job.py:89
|
|
89
93
|
msgid "Retention period"
|
|
90
94
|
msgstr "Durée de conservation"
|
|
91
95
|
|
|
92
|
-
#: models/user_job.py:
|
|
96
|
+
#: models/user_job.py:90
|
|
93
97
|
msgid "Function"
|
|
94
98
|
msgstr "Fonction"
|
|
95
99
|
|
|
96
|
-
#: models/user_job.py:
|
|
100
|
+
#: models/user_job.py:91
|
|
97
101
|
msgid "Arguments"
|
|
98
102
|
msgstr "Arguments"
|
|
99
103
|
|
|
100
|
-
#: models/user_job.py:
|
|
104
|
+
#: models/user_job.py:92
|
|
101
105
|
msgid "Timeout"
|
|
102
106
|
msgstr "Délai"
|
|
103
107
|
|
|
104
|
-
#: models/user_job.py:
|
|
108
|
+
#: models/user_job.py:93
|
|
105
109
|
msgid "Automatically queued"
|
|
106
110
|
msgstr "Mise en file d’attente automatique"
|
|
107
111
|
|
|
108
|
-
#: models/user_job.py:
|
|
112
|
+
#: models/user_job.py:94
|
|
109
113
|
msgid "Cluster"
|
|
110
114
|
msgstr "Cluster"
|
|
111
115
|
|
|
112
|
-
#: models/user_job.py:
|
|
116
|
+
#: models/user_job.py:95
|
|
113
117
|
msgid "Lock"
|
|
114
118
|
msgstr "Verrou"
|
|
115
119
|
|
|
116
|
-
#: models/user_job.py:
|
|
120
|
+
#: models/user_job.py:101
|
|
117
121
|
msgid "User job"
|
|
118
122
|
msgstr "Tâche utilisateur"
|
|
119
123
|
|
|
120
|
-
#: models/user_job.py:
|
|
124
|
+
#: models/user_job.py:102
|
|
121
125
|
msgid "User jobs"
|
|
122
126
|
msgstr "Tâches utilisateur"
|
|
123
127
|
|
|
124
|
-
#: models/user_job.py:
|
|
128
|
+
#: models/user_job.py:173
|
|
125
129
|
msgid "This operation is already in progress."
|
|
126
130
|
msgstr "Cette opération est déjà en cours."
|
|
127
131
|
|
|
@@ -144,11 +148,10 @@ msgstr "Pièces jointes"
|
|
|
144
148
|
#: tasks.py:17
|
|
145
149
|
msgid "Timeout exceeds. Our support team has been notified."
|
|
146
150
|
msgstr ""
|
|
147
|
-
"Le délai d’attente est dépassé. "
|
|
148
|
-
"Notre équipe d’assistance en a été informée."
|
|
151
|
+
"Le délai d’attente est dépassé. Notre équipe d’assistance en a été informée."
|
|
149
152
|
|
|
150
153
|
#: tasks.py:23
|
|
151
154
|
msgid "This job never started. Our support team has been notified."
|
|
152
155
|
msgstr ""
|
|
153
|
-
"Cette tâche n’a jamais été lancée. "
|
|
154
|
-
"
|
|
156
|
+
"Cette tâche n’a jamais été lancée. Notre équipe d’assistance en a été "
|
|
157
|
+
"informée."
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Generated by Django 5.2.14 on 2026-06-03 08:39
|
|
2
|
+
# flake8: noqa
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
dependencies = [
|
|
8
|
+
('userjobs', '0002_alter_userjob_options_alter_userjob_auto_queued_and_more'),
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
operations = [
|
|
12
|
+
migrations.RunSQL(
|
|
13
|
+
r"""
|
|
14
|
+
do $$
|
|
15
|
+
begin
|
|
16
|
+
if exists (
|
|
17
|
+
select 1
|
|
18
|
+
from information_schema.tables
|
|
19
|
+
where table_name = 'django_q_schedule'
|
|
20
|
+
) then
|
|
21
|
+
delete from django_q_schedule
|
|
22
|
+
where func ~ 'pfx\.userjobs\..*';
|
|
23
|
+
end if;
|
|
24
|
+
end $$;
|
|
25
|
+
""",
|
|
26
|
+
reverse_sql=migrations.RunSQL.noop,
|
|
27
|
+
)
|
|
28
|
+
]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generated by Django 4.2.30 on 2026-07-15 08:25
|
|
2
|
+
# flake8: noqa
|
|
3
|
+
|
|
4
|
+
from django.db import migrations
|
|
5
|
+
|
|
6
|
+
import pfx.pfxcore.models.not_null_fields
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Migration(migrations.Migration):
|
|
10
|
+
|
|
11
|
+
dependencies = [
|
|
12
|
+
('userjobs', '0003_clean_scheduled_tasks'),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.AddField(
|
|
17
|
+
model_name='userjob',
|
|
18
|
+
name='summary_url',
|
|
19
|
+
field=pfx.pfxcore.models.not_null_fields.NotNullCharField(blank=True, max_length=250, verbose_name='Summary URL'),
|
|
20
|
+
),
|
|
21
|
+
]
|
|
@@ -81,6 +81,8 @@ class UserJob(PFXModelMixin, models.Model):
|
|
|
81
81
|
read_status = NotNullCharField(
|
|
82
82
|
_("Read status"), max_length=32, choices=STATUS, blank=True)
|
|
83
83
|
summary = NotNullCharField(_("Summary"), max_length=250, blank=True)
|
|
84
|
+
summary_url = NotNullCharField(
|
|
85
|
+
_("Summary URL"), max_length=250, blank=True)
|
|
84
86
|
message = NotNullTextField(verbose_name=_("Message"), blank=True)
|
|
85
87
|
stacktrace = NotNullTextField(_("Error log"), blank=True)
|
|
86
88
|
shelf_life = MinutesDurationField(
|
|
@@ -145,10 +147,12 @@ class UserJob(PFXModelMixin, models.Model):
|
|
|
145
147
|
self.ended_at = timezone.now()
|
|
146
148
|
self.status = result and result.get('status') or UserJob.STATUS_DONE
|
|
147
149
|
self.summary = result and result.get('summary')
|
|
150
|
+
self.summary_url = result and result.get('summary_url')
|
|
148
151
|
self.message = result and result.get('message')
|
|
149
152
|
self.stacktrace = result and result.get('stacktrace')
|
|
150
153
|
self.save(update_fields=[
|
|
151
|
-
'ended_at', 'status', 'summary', '
|
|
154
|
+
'ended_at', 'status', 'summary', 'summary_url',
|
|
155
|
+
'message', 'stacktrace'])
|
|
152
156
|
|
|
153
157
|
def failed(self, exception=None, summary=None):
|
|
154
158
|
if exception:
|
|
@@ -33,7 +33,8 @@ class UserJobRestView(
|
|
|
33
33
|
|
|
34
34
|
model = UserJob
|
|
35
35
|
fields = readonly_fields(
|
|
36
|
-
'name', 'user', 'status', 'summary', '
|
|
36
|
+
'name', 'user', 'status', 'summary', 'summary_url',
|
|
37
|
+
'message', 'attachments',
|
|
37
38
|
'created_at', 'started_at', 'ended_at') + ['read_status']
|
|
38
39
|
|
|
39
40
|
filters = [
|
|
@@ -19,7 +19,13 @@ logger = logging.getLogger(__name__)
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
def test_job_success(job, text):
|
|
22
|
-
return dict(
|
|
22
|
+
return dict(summary=f"{text}: I’m successful!")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_job_url(job, text):
|
|
26
|
+
return dict(
|
|
27
|
+
summary=f"{text}: I’m successful!",
|
|
28
|
+
summary_url="/summary")
|
|
23
29
|
|
|
24
30
|
|
|
25
31
|
def test_job_file(job, text):
|
|
@@ -29,7 +35,7 @@ def test_job_file(job, text):
|
|
|
29
35
|
att.file = UserJobAttachment._meta.get_field('file').upload(
|
|
30
36
|
att, b'File content', "test.txt")
|
|
31
37
|
att.save()
|
|
32
|
-
return dict(
|
|
38
|
+
return dict(summary=f"{text}: I’m successful!")
|
|
33
39
|
|
|
34
40
|
|
|
35
41
|
@override_settings(
|
|
@@ -93,7 +99,7 @@ class TestUserJobApi(TestAssertMixin, TestCase):
|
|
|
93
99
|
self.assertEqual(set(item.keys()), {
|
|
94
100
|
'pk', 'resource_name', 'resource_api', 'name',
|
|
95
101
|
'user', 'status', 'read_status', 'created_at', 'started_at',
|
|
96
|
-
'ended_at', 'summary', 'message', 'attachments'})
|
|
102
|
+
'ended_at', 'summary', 'summary_url', 'message', 'attachments'})
|
|
97
103
|
self.assertJE(item, 'resource_name', "Test job 3")
|
|
98
104
|
self.assertJE(item, 'user.pk', self.user1.pk)
|
|
99
105
|
self.assertJE(item, 'status.value', 'done')
|
|
@@ -267,12 +273,40 @@ class TestUserJobApi(TestAssertMixin, TestCase):
|
|
|
267
273
|
self.assertEqual(self.get_json(response).keys(), {
|
|
268
274
|
'pk', 'resource_name', 'resource_api', 'name',
|
|
269
275
|
'user', 'status', 'read_status', 'created_at', 'started_at',
|
|
270
|
-
'ended_at', 'summary', '
|
|
276
|
+
'ended_at', 'summary', 'summary_url', 'message', 'meta',
|
|
277
|
+
'attachments'})
|
|
278
|
+
self.assertJE(response, 'resource_name', "Test job 1")
|
|
279
|
+
self.assertJE(response, 'user.pk', self.user1.pk)
|
|
280
|
+
self.assertJE(response, 'status.value', 'done')
|
|
281
|
+
self.assertJE(response, 'read_status', None)
|
|
282
|
+
self.assertJE(response, 'summary', 'Hello: I’m successful!')
|
|
283
|
+
self.assertJE(response, 'summary_url', "")
|
|
284
|
+
self.assertSize(response, 'attachments', 0)
|
|
285
|
+
|
|
286
|
+
def test_get_detail_summary_url(self):
|
|
287
|
+
job = UserJob.objects.create(
|
|
288
|
+
name="Test job 1",
|
|
289
|
+
user=self.user1,
|
|
290
|
+
func=f'{__name__}.test_job_url',
|
|
291
|
+
args=["Hello"],
|
|
292
|
+
timeout=300)
|
|
293
|
+
|
|
294
|
+
self.client.login(username=self.user1.username)
|
|
295
|
+
|
|
296
|
+
response = self.client.get(f'/api/user-jobs/user-jobs/{job.pk}')
|
|
297
|
+
self.assertRC(response, 200)
|
|
298
|
+
# Check technical fields are not sent
|
|
299
|
+
self.assertEqual(self.get_json(response).keys(), {
|
|
300
|
+
'pk', 'resource_name', 'resource_api', 'name',
|
|
301
|
+
'user', 'status', 'read_status', 'created_at', 'started_at',
|
|
302
|
+
'ended_at', 'summary', 'summary_url', 'message', 'meta',
|
|
303
|
+
'attachments'})
|
|
271
304
|
self.assertJE(response, 'resource_name', "Test job 1")
|
|
272
305
|
self.assertJE(response, 'user.pk', self.user1.pk)
|
|
273
306
|
self.assertJE(response, 'status.value', 'done')
|
|
274
307
|
self.assertJE(response, 'read_status', None)
|
|
275
|
-
self.assertJE(response, '
|
|
308
|
+
self.assertJE(response, 'summary', 'Hello: I’m successful!')
|
|
309
|
+
self.assertJE(response, 'summary_url', '/summary')
|
|
276
310
|
self.assertSize(response, 'attachments', 0)
|
|
277
311
|
|
|
278
312
|
def test_get_detail_attachment(self):
|
|
@@ -291,12 +325,13 @@ class TestUserJobApi(TestAssertMixin, TestCase):
|
|
|
291
325
|
self.assertEqual(self.get_json(response).keys(), {
|
|
292
326
|
'pk', 'resource_name', 'resource_api', 'name',
|
|
293
327
|
'user', 'status', 'read_status', 'created_at', 'started_at',
|
|
294
|
-
'ended_at', 'summary', '
|
|
328
|
+
'ended_at', 'summary', 'summary_url',
|
|
329
|
+
'message', 'meta', 'attachments'})
|
|
295
330
|
self.assertJE(response, 'resource_name', "Test job 1")
|
|
296
331
|
self.assertJE(response, 'user.pk', self.user1.pk)
|
|
297
332
|
self.assertJE(response, 'status.value', 'done')
|
|
298
333
|
self.assertJE(response, 'read_status', None)
|
|
299
|
-
self.assertJE(response, '
|
|
334
|
+
self.assertJE(response, 'summary', 'Hello: I’m successful!')
|
|
300
335
|
self.assertSize(response, 'attachments', 1)
|
|
301
336
|
self.assertJE(response, 'attachments.@0.resource_name', "test.txt")
|
|
302
337
|
self.assertJE(response, 'attachments.@0.file.name', "test.txt")
|
|
Binary file
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Generated by Django 5.2.14 on 2026-06-03 08:39
|
|
2
|
-
# flake8: noqa
|
|
3
|
-
from django.db import migrations
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Migration(migrations.Migration):
|
|
7
|
-
|
|
8
|
-
dependencies = [
|
|
9
|
-
('userjobs', '0002_alter_userjob_options_alter_userjob_auto_queued_and_more'),
|
|
10
|
-
]
|
|
11
|
-
|
|
12
|
-
operations = [
|
|
13
|
-
migrations.RunSQL(
|
|
14
|
-
"delete from django_q_schedule where func ~ 'pfx\.userjobs\..*';", "")
|
|
15
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/migrations/0002_alter_email_headers.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/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.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/providers/email_django_q_executor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/emails/templates/emails/base_template.html
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/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.dev35 → django_pfx-1.7.3.dev39}/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.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/commands/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/commands/makeapidoc.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/management/commands/profile.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
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/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.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.3.dev35 → django_pfx-1.7.3.dev39}/pfx/pfxcore/models/abstract_pfx_base_user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|