wbcore 1.46.0__py2.py3-none-any.whl → 1.58.2__py2.py3-none-any.whl
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.
- wbcore/cache/decorators.py +5 -3
- wbcore/cache/registry.py +14 -7
- wbcore/configs/__init__.py +1 -0
- wbcore/configs/configs.py +5 -0
- wbcore/configs/decorators.py +1 -1
- wbcore/configurations/configurations/apps.py +3 -2
- wbcore/configurations/configurations/authentication.py +1 -1
- wbcore/configurations/configurations/base.py +1 -1
- wbcore/configurations/configurations/cache.py +1 -1
- wbcore/configurations/configurations/i18nl10n.py +2 -1
- wbcore/configurations/configurations/maintenance.py +1 -1
- wbcore/configurations/configurations/media.py +1 -1
- wbcore/configurations/configurations/middleware.py +1 -1
- wbcore/configurations/configurations/rest_framework.py +1 -1
- wbcore/configurations/configurations/static.py +3 -3
- wbcore/configurations/configurations/wbcore.py +1 -1
- wbcore/content_type/serializers.py +13 -5
- wbcore/content_type/utils.py +3 -3
- wbcore/content_type/viewsets.py +2 -2
- wbcore/contrib/agenda/filters/calendar_item.py +5 -4
- wbcore/contrib/agenda/locale/de/LC_MESSAGES/django.po +145 -52
- wbcore/contrib/agenda/locale/de/LC_MESSAGES/django.po.translated +236 -0
- wbcore/contrib/agenda/locale/en/LC_MESSAGES/django.po +200 -0
- wbcore/contrib/agenda/locale/fr/LC_MESSAGES/django.po +201 -0
- wbcore/contrib/agenda/viewsets/calendar_items.py +7 -7
- wbcore/contrib/agenda/viewsets/menu/calendar_items.py +0 -6
- wbcore/contrib/ai/exceptions.py +5 -5
- wbcore/contrib/ai/llm/config.py +76 -27
- wbcore/contrib/ai/llm/mixins.py +5 -8
- wbcore/contrib/ai/llm/utils.py +50 -26
- wbcore/contrib/authentication/admin.py +2 -2
- wbcore/contrib/authentication/factories/__init__.py +8 -1
- wbcore/contrib/authentication/factories/users.py +19 -0
- wbcore/contrib/authentication/filters.py +1 -2
- wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po +209 -187
- wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po.translated +634 -0
- wbcore/contrib/authentication/locale/en/LC_MESSAGES/django.po +590 -0
- wbcore/contrib/authentication/locale/fr/LC_MESSAGES/django.po +592 -0
- wbcore/contrib/authentication/models/users.py +3 -3
- wbcore/contrib/authentication/models/users_activities.py +1 -1
- wbcore/contrib/authentication/serializers/users.py +2 -2
- wbcore/contrib/authentication/tests/test_tokens.py +3 -3
- wbcore/contrib/authentication/tests/test_users.py +0 -1
- wbcore/contrib/authentication/urls.py +0 -4
- wbcore/contrib/authentication/viewsets/endpoints/user_activities.py +2 -11
- wbcore/contrib/authentication/viewsets/endpoints/users.py +0 -3
- wbcore/contrib/authentication/viewsets/user_activities.py +2 -1
- wbcore/contrib/authentication/viewsets/users.py +6 -4
- wbcore/contrib/color/models.py +2 -1
- wbcore/contrib/currency/factories.py +1 -1
- wbcore/contrib/currency/import_export/backends/fixerio/currency_fx_rates.py +3 -1
- wbcore/contrib/currency/models.py +30 -8
- wbcore/contrib/currency/serializers.py +5 -1
- wbcore/contrib/currency/tests/test_serializers.py +7 -3
- wbcore/contrib/currency/tests/test_viewsets.py +1 -1
- wbcore/contrib/currency/viewsets/currency.py +2 -2
- wbcore/contrib/currency/viewsets/endpoints/currency_fx_rates.py +0 -9
- wbcore/contrib/dataloader/tests/test/dataloaders/protocols.py +1 -2
- wbcore/contrib/dataloader/utils.py +2 -2
- wbcore/contrib/directory/factories/__init__.py +1 -1
- wbcore/contrib/directory/factories/entries.py +2 -1
- wbcore/contrib/directory/filters/entries.py +9 -0
- wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po +728 -714
- wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po.translated +1779 -0
- wbcore/contrib/directory/locale/en/LC_MESSAGES/django.po +1652 -0
- wbcore/contrib/directory/locale/fr/LC_MESSAGES/django.po +1654 -0
- wbcore/contrib/directory/migrations/0011_person_description_person_i18n.py +24 -0
- wbcore/contrib/directory/migrations/0012_alter_person_managers.py +20 -0
- wbcore/contrib/directory/migrations/0013_alter_clientmanagerrelationship_options.py +17 -0
- wbcore/contrib/directory/models/contacts.py +2 -2
- wbcore/contrib/directory/models/entries.py +31 -5
- wbcore/contrib/directory/models/relationships.py +31 -35
- wbcore/contrib/directory/permissions.py +6 -0
- wbcore/contrib/directory/serializers/companies.py +16 -8
- wbcore/contrib/directory/serializers/contacts.py +8 -8
- wbcore/contrib/directory/serializers/entries.py +26 -15
- wbcore/contrib/directory/serializers/entry_representations.py +4 -2
- wbcore/contrib/directory/serializers/persons.py +12 -10
- wbcore/contrib/directory/serializers/relationships.py +2 -2
- wbcore/contrib/directory/tests/conftest.py +2 -0
- wbcore/contrib/directory/tests/disable_signals.py +11 -1
- wbcore/contrib/directory/tests/signals.py +2 -2
- wbcore/contrib/directory/tests/test_models.py +88 -66
- wbcore/contrib/directory/tests/test_serializers.py +1 -1
- wbcore/contrib/directory/tests/test_viewsets.py +8 -8
- wbcore/contrib/directory/viewsets/buttons/__init__.py +1 -1
- wbcore/contrib/directory/viewsets/buttons/relationships.py +32 -0
- wbcore/contrib/directory/viewsets/contacts.py +6 -6
- wbcore/contrib/directory/viewsets/display/__init__.py +1 -1
- wbcore/contrib/directory/viewsets/display/contacts.py +1 -14
- wbcore/contrib/directory/viewsets/display/entries.py +68 -38
- wbcore/contrib/directory/viewsets/display/relationships.py +26 -50
- wbcore/contrib/directory/viewsets/endpoints/relationships.py +1 -26
- wbcore/contrib/directory/viewsets/entries.py +8 -6
- wbcore/contrib/directory/viewsets/previews/entries.py +3 -3
- wbcore/contrib/directory/viewsets/relationships.py +16 -2
- wbcore/contrib/directory/viewsets/titles/relationships.py +2 -3
- wbcore/contrib/documents/filters.py +0 -2
- wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po +103 -94
- wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po.translated +285 -0
- wbcore/contrib/documents/locale/en/LC_MESSAGES/django.po +271 -0
- wbcore/contrib/documents/locale/fr/LC_MESSAGES/django.po +270 -0
- wbcore/contrib/documents/tests/test_models.py +32 -28
- wbcore/contrib/documents/viewsets/endpoints/shareable_links.py +2 -21
- wbcore/contrib/dynamic_preferences/types.py +108 -0
- wbcore/contrib/dynamic_preferences/viewsets.py +27 -0
- wbcore/contrib/example_app/filters/event.py +3 -1
- wbcore/contrib/example_app/filters/match.py +1 -1
- wbcore/contrib/example_app/models.py +91 -22
- wbcore/contrib/example_app/serializers/person_team.py +4 -4
- wbcore/contrib/example_app/templates/example_app/embedded_view.html +19 -0
- wbcore/contrib/example_app/tests/e2e/test_teams.py +1 -1
- wbcore/contrib/example_app/tests/test_models/test_match.py +17 -7
- wbcore/contrib/example_app/urls.py +2 -0
- wbcore/contrib/example_app/views.py +7 -0
- wbcore/contrib/example_app/viewsets/displays/team.py +23 -4
- wbcore/contrib/example_app/viewsets/menu/menus.py +1 -1
- wbcore/contrib/example_app/viewsets/menus.py +1 -1
- wbcore/contrib/geography/tests/conftest.py +14 -0
- wbcore/contrib/geography/tests/test_models.py +23 -8
- wbcore/contrib/geography/tests/test_viewsets.py +96 -2
- wbcore/contrib/guardian/tests/test_model_mixins.py +3 -4
- wbcore/contrib/guardian/tests/test_tasks.py +9 -9
- wbcore/contrib/guardian/tests/test_viewsets.py +2 -2
- wbcore/contrib/guardian/viewsets/configs/__init__.py +1 -1
- wbcore/contrib/guardian/viewsets/configs/buttons.py +9 -0
- wbcore/contrib/guardian/viewsets/configs/endpoints.py +7 -0
- wbcore/contrib/guardian/viewsets/viewsets.py +2 -0
- wbcore/contrib/i18n/__init__.py +2 -0
- wbcore/contrib/i18n/buttons.py +33 -0
- wbcore/contrib/i18n/serializers/__init__.py +0 -0
- wbcore/contrib/i18n/serializers/fields.py +20 -0
- wbcore/contrib/i18n/serializers/mixins.py +13 -0
- wbcore/contrib/i18n/tests/conftest.py +11 -0
- wbcore/contrib/i18n/tests/test_viewsets.py +67 -0
- wbcore/contrib/i18n/translation.py +140 -0
- wbcore/contrib/i18n/viewsets.py +36 -0
- wbcore/contrib/icons/backends/default.py +1 -0
- wbcore/contrib/icons/backends/material.py +1 -0
- wbcore/contrib/icons/icons.py +5 -8
- wbcore/contrib/io/admin.py +1 -0
- wbcore/contrib/io/backends/mail.py +3 -2
- wbcore/contrib/io/backends/utils.py +14 -17
- wbcore/contrib/io/exceptions.py +8 -0
- wbcore/contrib/io/factories.py +1 -1
- wbcore/contrib/io/import_export/backends/mail.py +1 -0
- wbcore/contrib/io/import_export/backends/sftp.py +29 -20
- wbcore/contrib/io/import_export/backends/stream.py +2 -2
- wbcore/contrib/io/import_export/parsers/__init__.py +0 -0
- wbcore/contrib/io/import_export/parsers/base_csv.py +36 -0
- wbcore/contrib/io/import_export/parsers/resources.py +50 -0
- wbcore/contrib/io/imports.py +33 -25
- wbcore/contrib/io/locale/de/LC_MESSAGES/django.po +114 -22
- wbcore/contrib/io/locale/de/LC_MESSAGES/django.po.translated +103 -0
- wbcore/contrib/io/locale/en/LC_MESSAGES/django.po +138 -0
- wbcore/contrib/io/locale/fr/LC_MESSAGES/django.po +138 -0
- wbcore/contrib/io/migrations/0008_importsource_resource_kwargs.py +18 -0
- wbcore/contrib/io/models.py +65 -45
- wbcore/contrib/io/resources.py +0 -6
- wbcore/contrib/io/serializers.py +2 -2
- wbcore/contrib/io/signals.py +4 -0
- wbcore/contrib/io/tests/test_backends.py +19 -13
- wbcore/contrib/io/tests/test_exports.py +1 -1
- wbcore/contrib/io/tests/test_imports.py +1 -1
- wbcore/contrib/io/tests/test_models.py +47 -14
- wbcore/contrib/io/tests/test_viewsets.py +271 -0
- wbcore/contrib/io/viewset_mixins.py +41 -54
- wbcore/contrib/notifications/admin.py +1 -0
- wbcore/contrib/notifications/apps.py +2 -1
- wbcore/contrib/notifications/backends/abstract_backend.py +2 -4
- wbcore/contrib/notifications/backends/firebase/backends.py +5 -2
- wbcore/contrib/notifications/dispatch.py +18 -7
- wbcore/contrib/notifications/factories/notification_types.py +1 -0
- wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po +25 -19
- wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po.translated +63 -0
- wbcore/contrib/notifications/locale/en/LC_MESSAGES/django.po +61 -0
- wbcore/contrib/notifications/locale/fr/LC_MESSAGES/django.po +62 -0
- wbcore/contrib/notifications/migrations/0008_notificationtype_is_lock.py +18 -0
- wbcore/contrib/notifications/migrations/0009_alter_notificationtypesetting_options_and_more.py +32 -0
- wbcore/contrib/notifications/models/notification_types.py +67 -24
- wbcore/contrib/notifications/serializers/notification_types.py +16 -1
- wbcore/contrib/notifications/tests/test_models/test_tokens.py +8 -0
- wbcore/contrib/notifications/tests/test_serializers/test_notification_types.py +5 -0
- wbcore/contrib/notifications/tests/test_viewsets/test_notification_types.py +3 -5
- wbcore/contrib/notifications/utils.py +3 -2
- wbcore/contrib/notifications/viewsets/configs/notification_types.py +28 -6
- wbcore/contrib/notifications/viewsets/menus.py +1 -1
- wbcore/contrib/notifications/viewsets/notification_types.py +12 -2
- wbcore/contrib/pandas/fields.py +38 -10
- wbcore/contrib/pandas/filters.py +4 -1
- wbcore/contrib/pandas/filterset.py +8 -7
- wbcore/contrib/pandas/tests/test_fields/test_number_fields.py +2 -7
- wbcore/contrib/pandas/utils.py +1 -1
- wbcore/contrib/pandas/views.py +14 -13
- wbcore/contrib/tags/models/tags.py +4 -1
- wbcore/contrib/workflow/factories/display.py +2 -2
- wbcore/contrib/workflow/factories/transition.py +16 -15
- wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po +457 -566
- wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po.translated +1326 -0
- wbcore/contrib/workflow/locale/en/LC_MESSAGES/django.po +1102 -0
- wbcore/contrib/workflow/locale/fr/LC_MESSAGES/django.po +1114 -0
- wbcore/contrib/workflow/models/data.py +7 -4
- wbcore/contrib/workflow/models/process.py +2 -2
- wbcore/contrib/workflow/models/step.py +57 -15
- wbcore/contrib/workflow/serializers/data.py +8 -8
- wbcore/contrib/workflow/serializers/process.py +3 -2
- wbcore/contrib/workflow/tests/conftest.py +224 -0
- wbcore/contrib/workflow/tests/test_dispatch.py +82 -77
- wbcore/contrib/workflow/tests/test_displays.py +10 -88
- wbcore/contrib/workflow/tests/test_filters.py +57 -40
- wbcore/contrib/workflow/tests/test_models/step/test_decision_step.py +71 -68
- wbcore/contrib/workflow/tests/test_models/step/test_email_step.py +78 -38
- wbcore/contrib/workflow/tests/test_models/step/test_finish_step.py +152 -90
- wbcore/contrib/workflow/tests/test_models/step/test_join_step.py +100 -110
- wbcore/contrib/workflow/tests/test_models/step/test_step.py +168 -33
- wbcore/contrib/workflow/tests/test_models/test_condition.py +1 -1
- wbcore/contrib/workflow/tests/test_models/test_workflow.py +3 -3
- wbcore/contrib/workflow/tests/test_serializers.py +172 -150
- wbcore/contrib/workflow/tests/test_viewsets.py +264 -323
- wbcore/contrib/workflow/tests/test_workflow_assignees.py +215 -205
- wbcore/contrib/workflow/viewsets/process.py +4 -1
- wbcore/contrib/workflow/workflows/assignees.py +12 -7
- wbcore/dynamic_preferences_registry.py +102 -0
- wbcore/enums.py +2 -51
- wbcore/filters/fields/choices.py +4 -6
- wbcore/filters/fields/content_type.py +15 -4
- wbcore/filters/fields/datetime.py +50 -25
- wbcore/filters/fields/models.py +18 -9
- wbcore/filters/fields/numbers.py +9 -8
- wbcore/filters/filterset.py +27 -6
- wbcore/filters/mixins.py +41 -42
- wbcore/forms.py +6 -6
- wbcore/fsm/markdown_extensions.py +1 -1
- wbcore/fsm/mixins.py +20 -6
- wbcore/locale/de/LC_MESSAGES/django.po +982 -397
- wbcore/locale/de/LC_MESSAGES/django.po.translated +1580 -0
- wbcore/locale/en/LC_MESSAGES/django.po +1234 -0
- wbcore/locale/fr/LC_MESSAGES/django.po +1235 -0
- wbcore/markdown/models.py +8 -5
- wbcore/markdown/views.py +1 -1
- wbcore/menus/menus.py +2 -2
- wbcore/metadata/configs/buttons/bases.py +10 -7
- wbcore/metadata/configs/buttons/buttons.py +2 -1
- wbcore/metadata/configs/buttons/enums.py +50 -0
- wbcore/metadata/configs/buttons/view_config.py +13 -46
- wbcore/metadata/configs/display/display.py +2 -2
- wbcore/metadata/configs/display/formatting.py +6 -9
- wbcore/metadata/configs/display/instance_display/display.py +5 -2
- wbcore/metadata/configs/display/instance_display/pages.py +1 -1
- wbcore/metadata/configs/display/instance_display/shortcuts.py +1 -1
- wbcore/metadata/configs/display/list_display.py +54 -40
- wbcore/metadata/configs/display/models.py +6 -0
- wbcore/metadata/configs/display/view_config.py +11 -9
- wbcore/metadata/configs/endpoints.py +11 -4
- wbcore/metadata/configs/fields.py +6 -1
- wbcore/metadata/configs/filter_fields.py +12 -13
- wbcore/metadata/configs/identifiers.py +3 -1
- wbcore/metadata/tests/test_buttons.py +13 -16
- wbcore/models/fields.py +2 -2
- wbcore/pagination.py +1 -2
- wbcore/permissions/permissions.py +2 -2
- wbcore/permissions/utils.py +2 -2
- wbcore/release_notes/display.py +2 -8
- wbcore/release_notes/serializers.py +2 -9
- wbcore/release_notes/viewsets.py +8 -2
- wbcore/reversion/viewsets/titles.py +4 -3
- wbcore/serializers/__init__.py +2 -0
- wbcore/serializers/fields/__init__.py +2 -1
- wbcore/serializers/fields/boolean.py +1 -1
- wbcore/serializers/fields/choice.py +28 -4
- wbcore/serializers/fields/datetime.py +45 -36
- wbcore/serializers/fields/fields.py +1 -1
- wbcore/serializers/fields/fsm.py +1 -1
- wbcore/serializers/fields/list.py +2 -5
- wbcore/serializers/fields/mixins.py +24 -11
- wbcore/serializers/fields/number.py +6 -23
- wbcore/serializers/fields/other.py +2 -10
- wbcore/serializers/fields/related.py +4 -6
- wbcore/serializers/fields/text.py +1 -1
- wbcore/serializers/fields/types.py +2 -0
- wbcore/serializers/serializers.py +12 -3
- wbcore/signals/__init__.py +1 -0
- wbcore/signals/clone.py +4 -0
- wbcore/signals/models.py +2 -6
- wbcore/tasks.py +2 -2
- wbcore/templates/wbcore/email_base_template.html +3 -3
- wbcore/test/e2e_helpers_methods/e2e_checks.py +10 -4
- wbcore/test/e2e_helpers_methods/e2e_helper_methods.py +4 -2
- wbcore/test/mixins.py +52 -102
- wbcore/test/tests.py +6 -9
- wbcore/test/utils.py +3 -4
- wbcore/tests/e2e/test_e2e.py +2 -2
- wbcore/tests/test_cache/test_decorators.py +4 -7
- wbcore/tests/test_configs.py +2 -5
- wbcore/tests/test_enums.py +2 -1
- wbcore/tests/test_fields/test_choice_fields.py +9 -1
- wbcore/tests/test_fields/test_number_fields.py +7 -15
- wbcore/tests/test_fields/test_other_fields.py +1 -2
- wbcore/tests/test_filters/test_mixins.py +35 -35
- wbcore/tests/test_list_display.py +0 -2
- wbcore/tests/test_models/test_mixins.py +1 -1
- wbcore/tests/test_utils/test_date.py +1 -1
- wbcore/tests/test_utils/test_date_builder.py +25 -1
- wbcore/tests/test_utils/test_primary.py +1 -1
- wbcore/urls.py +4 -0
- wbcore/utils/date.py +18 -2
- wbcore/utils/figures.py +2 -2
- wbcore/utils/models.py +21 -4
- wbcore/utils/reportlab.py +7 -0
- wbcore/utils/rrules.py +3 -1
- wbcore/utils/string_loader.py +1 -1
- wbcore/utils/strings.py +3 -3
- wbcore/utils/views.py +8 -3
- wbcore/viewsets/mixins.py +9 -4
- {wbcore-1.46.0.dist-info → wbcore-1.58.2.dist-info}/METADATA +9 -5
- {wbcore-1.46.0.dist-info → wbcore-1.58.2.dist-info}/RECORD +317 -271
- wbcore/contrib/geography/tests/test_serializers.py +0 -7
- wbcore/contrib/geography/tests/tests.py +0 -13
- wbcore/contrib/io/tests/tests.py +0 -19
- wbcore/contrib/workflow/tests/tests.py +0 -25
- {wbcore-1.46.0.dist-info → wbcore-1.58.2.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,592 @@
|
|
|
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
|
+
#, fuzzy
|
|
7
|
+
msgid ""
|
|
8
|
+
msgstr ""
|
|
9
|
+
"Project-Id-Version: PACKAGE VERSION\n"
|
|
10
|
+
"Report-Msgid-Bugs-To: \n"
|
|
11
|
+
"POT-Creation-Date: 2025-05-30 11:37+0200\n"
|
|
12
|
+
"PO-Revision-Date: 2025-05-30 09:40+0000\n"
|
|
13
|
+
"Language-Team: French (https://app.transifex.com/stainly/teams/171242/fr/)\n"
|
|
14
|
+
"MIME-Version: 1.0\n"
|
|
15
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
16
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
17
|
+
"Language: fr\n"
|
|
18
|
+
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
|
19
|
+
|
|
20
|
+
#: contrib/authentication/admin.py:75
|
|
21
|
+
msgid "Main information"
|
|
22
|
+
msgstr ""
|
|
23
|
+
|
|
24
|
+
#: contrib/authentication/admin.py:76
|
|
25
|
+
msgid "Synchronization"
|
|
26
|
+
msgstr ""
|
|
27
|
+
|
|
28
|
+
#: contrib/authentication/admin.py:78
|
|
29
|
+
#: contrib/authentication/viewsets/display/users.py:68
|
|
30
|
+
msgid "Permissions"
|
|
31
|
+
msgstr ""
|
|
32
|
+
|
|
33
|
+
#: contrib/authentication/admin.py:151
|
|
34
|
+
msgid ""
|
|
35
|
+
"Your user does not have the \"Change user\" permission. In order to add "
|
|
36
|
+
"users, Django requires that your user account have both the \"Add user\" and"
|
|
37
|
+
" \"Change user\" permissions set."
|
|
38
|
+
msgstr ""
|
|
39
|
+
|
|
40
|
+
#: contrib/authentication/admin.py:175
|
|
41
|
+
#, python-format
|
|
42
|
+
msgid "%(name)s object with primary key %(key)r does not exist."
|
|
43
|
+
msgstr ""
|
|
44
|
+
|
|
45
|
+
#: contrib/authentication/admin.py:187
|
|
46
|
+
msgid "Password changed successfully."
|
|
47
|
+
msgstr ""
|
|
48
|
+
|
|
49
|
+
#: contrib/authentication/admin.py:208
|
|
50
|
+
#, python-format
|
|
51
|
+
msgid "Change password: %s"
|
|
52
|
+
msgstr ""
|
|
53
|
+
|
|
54
|
+
#: contrib/authentication/dynamic_preferences_registry.py:15
|
|
55
|
+
msgid "Immunity Period"
|
|
56
|
+
msgstr ""
|
|
57
|
+
|
|
58
|
+
#: contrib/authentication/dynamic_preferences_registry.py:16
|
|
59
|
+
msgid "Set the maximum number of hours a user can remain without registration"
|
|
60
|
+
msgstr ""
|
|
61
|
+
|
|
62
|
+
#: contrib/authentication/dynamic_preferences_registry.py:25
|
|
63
|
+
msgid "Default Token Validity (in Hours)"
|
|
64
|
+
msgstr ""
|
|
65
|
+
|
|
66
|
+
#: contrib/authentication/dynamic_preferences_registry.py:26
|
|
67
|
+
msgid ""
|
|
68
|
+
"If not specified, a newly created token will be valid for that amount of "
|
|
69
|
+
"hours"
|
|
70
|
+
msgstr ""
|
|
71
|
+
|
|
72
|
+
#: contrib/authentication/models/tokens.py:21
|
|
73
|
+
msgid "Valid Until"
|
|
74
|
+
msgstr ""
|
|
75
|
+
|
|
76
|
+
#: contrib/authentication/models/tokens.py:29
|
|
77
|
+
msgid "Number of allowed usage"
|
|
78
|
+
msgstr ""
|
|
79
|
+
|
|
80
|
+
#: contrib/authentication/models/tokens.py:30
|
|
81
|
+
msgid "Is Valid"
|
|
82
|
+
msgstr ""
|
|
83
|
+
|
|
84
|
+
#: contrib/authentication/models/tokens.py:32
|
|
85
|
+
#: contrib/authentication/viewsets/display/user_activities.py:18
|
|
86
|
+
#: contrib/authentication/viewsets/display/user_activities.py:64
|
|
87
|
+
#: contrib/authentication/viewsets/display/user_activities.py:80
|
|
88
|
+
msgid "User"
|
|
89
|
+
msgstr ""
|
|
90
|
+
|
|
91
|
+
#: contrib/authentication/models/tokens.py:138
|
|
92
|
+
msgid "Token"
|
|
93
|
+
msgstr ""
|
|
94
|
+
|
|
95
|
+
#: contrib/authentication/models/tokens.py:139
|
|
96
|
+
msgid "Tokens"
|
|
97
|
+
msgstr ""
|
|
98
|
+
|
|
99
|
+
#: contrib/authentication/models/users.py:25
|
|
100
|
+
msgid "No E-Mail provided"
|
|
101
|
+
msgstr ""
|
|
102
|
+
|
|
103
|
+
#: contrib/authentication/models/users.py:28
|
|
104
|
+
msgid "No Username provided"
|
|
105
|
+
msgstr ""
|
|
106
|
+
|
|
107
|
+
#: contrib/authentication/models/users.py:57
|
|
108
|
+
#: contrib/authentication/serializers/users.py:144
|
|
109
|
+
msgid "E-Mail"
|
|
110
|
+
msgstr ""
|
|
111
|
+
|
|
112
|
+
#: contrib/authentication/models/users.py:58
|
|
113
|
+
msgid "username"
|
|
114
|
+
msgstr ""
|
|
115
|
+
|
|
116
|
+
#: contrib/authentication/models/users.py:61
|
|
117
|
+
msgid "staff status"
|
|
118
|
+
msgstr ""
|
|
119
|
+
|
|
120
|
+
#: contrib/authentication/models/users.py:63
|
|
121
|
+
msgid "Specifies whether the user can log into this admin site."
|
|
122
|
+
msgstr ""
|
|
123
|
+
|
|
124
|
+
#: contrib/authentication/models/users.py:66
|
|
125
|
+
msgid "active"
|
|
126
|
+
msgstr ""
|
|
127
|
+
|
|
128
|
+
#: contrib/authentication/models/users.py:69
|
|
129
|
+
msgid ""
|
|
130
|
+
"Specifies whether this user should be treated as active. Unselect this "
|
|
131
|
+
"instead of deleting accounts."
|
|
132
|
+
msgstr ""
|
|
133
|
+
|
|
134
|
+
#: contrib/authentication/models/users.py:73
|
|
135
|
+
msgid "register"
|
|
136
|
+
msgstr ""
|
|
137
|
+
|
|
138
|
+
#: contrib/authentication/models/users.py:73
|
|
139
|
+
msgid "Specifies whether this user has registered its email. "
|
|
140
|
+
msgstr ""
|
|
141
|
+
|
|
142
|
+
#: contrib/authentication/models/users.py:75
|
|
143
|
+
msgid "date joined"
|
|
144
|
+
msgstr ""
|
|
145
|
+
|
|
146
|
+
#: contrib/authentication/models/users.py:84
|
|
147
|
+
msgid "user"
|
|
148
|
+
msgstr ""
|
|
149
|
+
|
|
150
|
+
#: contrib/authentication/models/users.py:85
|
|
151
|
+
msgid "users"
|
|
152
|
+
msgstr ""
|
|
153
|
+
|
|
154
|
+
#: contrib/authentication/models/users.py:140
|
|
155
|
+
msgid "You need to specify a username or a pair of first and last name"
|
|
156
|
+
msgstr ""
|
|
157
|
+
|
|
158
|
+
#: contrib/authentication/models/users_activities.py:18
|
|
159
|
+
#: contrib/authentication/models/users_activities.py:21
|
|
160
|
+
msgid "Success"
|
|
161
|
+
msgstr ""
|
|
162
|
+
|
|
163
|
+
#: contrib/authentication/models/users_activities.py:19
|
|
164
|
+
#: contrib/authentication/models/users_activities.py:21
|
|
165
|
+
msgid "Failed"
|
|
166
|
+
msgstr ""
|
|
167
|
+
|
|
168
|
+
#: contrib/authentication/models/users_activities.py:24
|
|
169
|
+
#: contrib/authentication/templates/password_reset_done.html:11
|
|
170
|
+
#: contrib/authentication/viewsets/users.py:172
|
|
171
|
+
msgid "Login"
|
|
172
|
+
msgstr ""
|
|
173
|
+
|
|
174
|
+
#: contrib/authentication/models/users_activities.py:38
|
|
175
|
+
#, python-brace-format
|
|
176
|
+
msgid "Activity of {user} at {date}"
|
|
177
|
+
msgstr ""
|
|
178
|
+
|
|
179
|
+
#: contrib/authentication/models/users_activities.py:41
|
|
180
|
+
msgid "User Login Activity"
|
|
181
|
+
msgstr ""
|
|
182
|
+
|
|
183
|
+
#: contrib/authentication/models/users_activities.py:42
|
|
184
|
+
msgid "User Login Activities"
|
|
185
|
+
msgstr ""
|
|
186
|
+
|
|
187
|
+
#: contrib/authentication/serializers/users.py:30
|
|
188
|
+
msgid "Old password"
|
|
189
|
+
msgstr ""
|
|
190
|
+
|
|
191
|
+
#: contrib/authentication/serializers/users.py:31
|
|
192
|
+
msgid "New Password"
|
|
193
|
+
msgstr ""
|
|
194
|
+
|
|
195
|
+
#: contrib/authentication/serializers/users.py:32
|
|
196
|
+
msgid "Confirm new Password"
|
|
197
|
+
msgstr ""
|
|
198
|
+
|
|
199
|
+
#: contrib/authentication/serializers/users.py:36
|
|
200
|
+
msgid "No request found"
|
|
201
|
+
msgstr ""
|
|
202
|
+
|
|
203
|
+
#: contrib/authentication/serializers/users.py:41
|
|
204
|
+
msgid "Wrong password"
|
|
205
|
+
msgstr ""
|
|
206
|
+
|
|
207
|
+
#: contrib/authentication/serializers/users.py:47
|
|
208
|
+
msgid "Password don't match"
|
|
209
|
+
msgstr ""
|
|
210
|
+
|
|
211
|
+
#: contrib/authentication/serializers/users.py:53
|
|
212
|
+
#: contrib/authentication/serializers/users.py:54
|
|
213
|
+
msgid "New and old password cannot be the same"
|
|
214
|
+
msgstr ""
|
|
215
|
+
|
|
216
|
+
#: contrib/authentication/serializers/users.py:141
|
|
217
|
+
#: contrib/authentication/viewsets/display/users.py:50
|
|
218
|
+
msgid "Is Active"
|
|
219
|
+
msgstr ""
|
|
220
|
+
|
|
221
|
+
#: contrib/authentication/serializers/users.py:143
|
|
222
|
+
msgid "Last Connection"
|
|
223
|
+
msgstr ""
|
|
224
|
+
|
|
225
|
+
#: contrib/authentication/serializers/users.py:145
|
|
226
|
+
msgid "Username"
|
|
227
|
+
msgstr ""
|
|
228
|
+
|
|
229
|
+
#: contrib/authentication/serializers/users.py:146
|
|
230
|
+
#: contrib/authentication/viewsets/buttons/users.py:55
|
|
231
|
+
msgid "Profile"
|
|
232
|
+
msgstr ""
|
|
233
|
+
|
|
234
|
+
#: contrib/authentication/serializers/users.py:208
|
|
235
|
+
msgid "You need to assign a profile or add a valid email address"
|
|
236
|
+
msgstr ""
|
|
237
|
+
|
|
238
|
+
#: contrib/authentication/serializers/users.py:210
|
|
239
|
+
msgid "You need to assign a profile or add a valid last name"
|
|
240
|
+
msgstr ""
|
|
241
|
+
|
|
242
|
+
#: contrib/authentication/templates/activate_confirm.html:5
|
|
243
|
+
msgid "Register Account"
|
|
244
|
+
msgstr ""
|
|
245
|
+
|
|
246
|
+
#: contrib/authentication/templates/base.html:12
|
|
247
|
+
#: contrib/authentication/templates/password_reset_done.html:6
|
|
248
|
+
#: contrib/authentication/templates/password_reset_form.html:6
|
|
249
|
+
#: contrib/authentication/templates/password_reset_form.html:18
|
|
250
|
+
#: contrib/authentication/templates/password_reset_sent.html:5
|
|
251
|
+
#: contrib/authentication/templates/reset_password.html:5
|
|
252
|
+
msgid "Password Reset"
|
|
253
|
+
msgstr ""
|
|
254
|
+
|
|
255
|
+
#: contrib/authentication/templates/base.html:128
|
|
256
|
+
msgid "if you see this, something is wrong!"
|
|
257
|
+
msgstr ""
|
|
258
|
+
|
|
259
|
+
#: contrib/authentication/templates/email_base_template.html:325
|
|
260
|
+
#: contrib/authentication/templates/password_reset_email.html:10
|
|
261
|
+
msgid ""
|
|
262
|
+
"This E-Mail is autogenerated by Stainly. If you need more information, "
|
|
263
|
+
"please visit the Stainly-Bench."
|
|
264
|
+
msgstr ""
|
|
265
|
+
|
|
266
|
+
#: contrib/authentication/templates/password_reset_done.html:8
|
|
267
|
+
msgid "Password reset complete"
|
|
268
|
+
msgstr ""
|
|
269
|
+
|
|
270
|
+
#: contrib/authentication/templates/password_reset_done.html:9
|
|
271
|
+
msgid "Your Password has been set. You may go ahead and login."
|
|
272
|
+
msgstr ""
|
|
273
|
+
|
|
274
|
+
#: contrib/authentication/templates/password_reset_email.html:3
|
|
275
|
+
#, python-format
|
|
276
|
+
msgid ""
|
|
277
|
+
"Reset Password You're receiving this email because you requested a password "
|
|
278
|
+
"reset for your user account at %(site_name)s. Please click and choose a new "
|
|
279
|
+
"password"
|
|
280
|
+
msgstr ""
|
|
281
|
+
|
|
282
|
+
#: contrib/authentication/templates/password_reset_email.html:8
|
|
283
|
+
#: contrib/authentication/templates/password_reset_email_html.html:8
|
|
284
|
+
#: contrib/authentication/templates/password_reset_email_html.html:29
|
|
285
|
+
#: contrib/authentication/viewsets/buttons/users.py:51
|
|
286
|
+
#: contrib/authentication/viewsets/buttons/users.py:52
|
|
287
|
+
msgid "Reset Password"
|
|
288
|
+
msgstr ""
|
|
289
|
+
|
|
290
|
+
#: contrib/authentication/templates/password_reset_email_html.html:16
|
|
291
|
+
#, python-format
|
|
292
|
+
msgid ""
|
|
293
|
+
"You're receiving this email because you requested a password reset for your "
|
|
294
|
+
"user account at %(site_name)s."
|
|
295
|
+
msgstr ""
|
|
296
|
+
|
|
297
|
+
#: contrib/authentication/templates/password_reset_email_html.html:17
|
|
298
|
+
msgid "Please click and choose a new password"
|
|
299
|
+
msgstr ""
|
|
300
|
+
|
|
301
|
+
#: contrib/authentication/templates/password_reset_form.html:8
|
|
302
|
+
msgid "Password Reset Form"
|
|
303
|
+
msgstr ""
|
|
304
|
+
|
|
305
|
+
#: contrib/authentication/templates/password_reset_form.html:9
|
|
306
|
+
msgid "Please enter your new password."
|
|
307
|
+
msgstr ""
|
|
308
|
+
|
|
309
|
+
#: contrib/authentication/templates/password_reset_form.html:20
|
|
310
|
+
msgid "Password reset failed"
|
|
311
|
+
msgstr ""
|
|
312
|
+
|
|
313
|
+
#: contrib/authentication/templates/password_reset_form.html:21
|
|
314
|
+
msgid ""
|
|
315
|
+
"The password reset link was invalid, possibly because it has already been "
|
|
316
|
+
"used. Please request a new password reset."
|
|
317
|
+
msgstr ""
|
|
318
|
+
|
|
319
|
+
#: contrib/authentication/templates/password_reset_sent.html:7
|
|
320
|
+
msgid "Password reset sent"
|
|
321
|
+
msgstr ""
|
|
322
|
+
|
|
323
|
+
#: contrib/authentication/templates/password_reset_sent.html:8
|
|
324
|
+
msgid ""
|
|
325
|
+
"We’ve emailed you instructions for setting your password, if an account "
|
|
326
|
+
"exists with the email you entered. You should receive them shortly."
|
|
327
|
+
msgstr ""
|
|
328
|
+
|
|
329
|
+
#: contrib/authentication/templates/password_reset_sent.html:9
|
|
330
|
+
msgid ""
|
|
331
|
+
"If you don’t receive an email, please make sure you’ve entered the address "
|
|
332
|
+
"you registered with, and check your spam folder."
|
|
333
|
+
msgstr ""
|
|
334
|
+
|
|
335
|
+
#: contrib/authentication/templates/user_registration_email.html:8
|
|
336
|
+
msgid "Confirm Your Email"
|
|
337
|
+
msgstr ""
|
|
338
|
+
|
|
339
|
+
#: contrib/authentication/templates/user_registration_email.html:16
|
|
340
|
+
msgid "Please click on the link to confirm your registration."
|
|
341
|
+
msgstr ""
|
|
342
|
+
|
|
343
|
+
#: contrib/authentication/templates/user_registration_email.html:28
|
|
344
|
+
msgid "Confirm Email"
|
|
345
|
+
msgstr ""
|
|
346
|
+
|
|
347
|
+
#: contrib/authentication/viewsets/buttons/users.py:15
|
|
348
|
+
msgid "See Profile"
|
|
349
|
+
msgstr ""
|
|
350
|
+
|
|
351
|
+
#: contrib/authentication/viewsets/buttons/users.py:19
|
|
352
|
+
msgid "Resetting Settings"
|
|
353
|
+
msgstr ""
|
|
354
|
+
|
|
355
|
+
#: contrib/authentication/viewsets/buttons/users.py:21
|
|
356
|
+
msgid "<p>This will reset all widgets on all pages.</p>"
|
|
357
|
+
msgstr ""
|
|
358
|
+
|
|
359
|
+
#: contrib/authentication/viewsets/buttons/users.py:23
|
|
360
|
+
#: contrib/authentication/viewsets/buttons/users.py:24
|
|
361
|
+
msgid "Reset Settings"
|
|
362
|
+
msgstr ""
|
|
363
|
+
|
|
364
|
+
#: contrib/authentication/viewsets/buttons/users.py:29
|
|
365
|
+
msgid "Changing Password"
|
|
366
|
+
msgstr ""
|
|
367
|
+
|
|
368
|
+
#: contrib/authentication/viewsets/buttons/users.py:31
|
|
369
|
+
msgid "<p>Change Password</p>"
|
|
370
|
+
msgstr ""
|
|
371
|
+
|
|
372
|
+
#: contrib/authentication/viewsets/buttons/users.py:34
|
|
373
|
+
#: contrib/authentication/viewsets/buttons/users.py:35
|
|
374
|
+
msgid "Change Password"
|
|
375
|
+
msgstr ""
|
|
376
|
+
|
|
377
|
+
#: contrib/authentication/viewsets/buttons/users.py:46
|
|
378
|
+
msgid "Resetting Password"
|
|
379
|
+
msgstr ""
|
|
380
|
+
|
|
381
|
+
#: contrib/authentication/viewsets/buttons/users.py:48
|
|
382
|
+
msgid "<p>Reset Password</p>"
|
|
383
|
+
msgstr ""
|
|
384
|
+
|
|
385
|
+
#: contrib/authentication/viewsets/buttons/users.py:54
|
|
386
|
+
#: contrib/authentication/viewsets/display/users.py:70
|
|
387
|
+
#: contrib/authentication/viewsets/menu/user_activities.py:6
|
|
388
|
+
#: contrib/authentication/viewsets/titles/user_activities.py:10
|
|
389
|
+
msgid "User Activity"
|
|
390
|
+
msgstr ""
|
|
391
|
+
|
|
392
|
+
#: contrib/authentication/viewsets/display/user_activities.py:17
|
|
393
|
+
#: contrib/authentication/viewsets/display/user_activities.py:63
|
|
394
|
+
msgid "IP"
|
|
395
|
+
msgstr ""
|
|
396
|
+
|
|
397
|
+
#: contrib/authentication/viewsets/display/user_activities.py:19
|
|
398
|
+
#: contrib/authentication/viewsets/display/user_activities.py:65
|
|
399
|
+
msgid "First Login"
|
|
400
|
+
msgstr ""
|
|
401
|
+
|
|
402
|
+
#: contrib/authentication/viewsets/display/user_activities.py:20
|
|
403
|
+
#: contrib/authentication/viewsets/display/user_activities.py:66
|
|
404
|
+
msgid "Latest Refresh"
|
|
405
|
+
msgstr ""
|
|
406
|
+
|
|
407
|
+
#: contrib/authentication/viewsets/display/user_activities.py:21
|
|
408
|
+
#: contrib/authentication/viewsets/display/user_activities.py:67
|
|
409
|
+
msgid "Time Online (Minutes)"
|
|
410
|
+
msgstr ""
|
|
411
|
+
|
|
412
|
+
#: contrib/authentication/viewsets/display/user_activities.py:22
|
|
413
|
+
#: contrib/authentication/viewsets/display/user_activities.py:68
|
|
414
|
+
msgid "Agent Info"
|
|
415
|
+
msgstr ""
|
|
416
|
+
|
|
417
|
+
#: contrib/authentication/viewsets/display/users.py:19
|
|
418
|
+
msgid "Name"
|
|
419
|
+
msgstr ""
|
|
420
|
+
|
|
421
|
+
#: contrib/authentication/viewsets/display/users.py:20
|
|
422
|
+
msgid "Code Name"
|
|
423
|
+
msgstr ""
|
|
424
|
+
|
|
425
|
+
#: contrib/authentication/viewsets/display/users.py:21
|
|
426
|
+
msgid "Content Type"
|
|
427
|
+
msgstr ""
|
|
428
|
+
|
|
429
|
+
#: contrib/authentication/viewsets/display/users.py:38
|
|
430
|
+
msgid "Token (Sensitive information: handle with care)"
|
|
431
|
+
msgstr ""
|
|
432
|
+
|
|
433
|
+
#: contrib/authentication/viewsets/display/users.py:49
|
|
434
|
+
msgid "Email"
|
|
435
|
+
msgstr ""
|
|
436
|
+
|
|
437
|
+
#: contrib/authentication/viewsets/display/users.py:51
|
|
438
|
+
msgid "Joined"
|
|
439
|
+
msgstr ""
|
|
440
|
+
|
|
441
|
+
#: contrib/authentication/viewsets/display/users.py:52
|
|
442
|
+
msgid "Latest Connection"
|
|
443
|
+
msgstr ""
|
|
444
|
+
|
|
445
|
+
#: contrib/authentication/viewsets/display/users.py:67
|
|
446
|
+
msgid "Groups"
|
|
447
|
+
msgstr ""
|
|
448
|
+
|
|
449
|
+
#: contrib/authentication/viewsets/menu/user_activities.py:18
|
|
450
|
+
#: contrib/authentication/viewsets/titles/user_activities.py:21
|
|
451
|
+
msgid "User Activity Table"
|
|
452
|
+
msgstr ""
|
|
453
|
+
|
|
454
|
+
#: contrib/authentication/viewsets/menu/user_activities.py:30
|
|
455
|
+
#: contrib/authentication/viewsets/titles/user_activities.py:26
|
|
456
|
+
msgid "User Activity Chart"
|
|
457
|
+
msgstr ""
|
|
458
|
+
|
|
459
|
+
#: contrib/authentication/viewsets/menu/users.py:7
|
|
460
|
+
#: contrib/authentication/viewsets/titles/users.py:24
|
|
461
|
+
msgid "Users"
|
|
462
|
+
msgstr ""
|
|
463
|
+
|
|
464
|
+
#: contrib/authentication/viewsets/menu/users.py:13
|
|
465
|
+
msgid "Create New User"
|
|
466
|
+
msgstr ""
|
|
467
|
+
|
|
468
|
+
#: contrib/authentication/viewsets/titles/user_activities.py:16
|
|
469
|
+
#: contrib/authentication/viewsets/titles/user_activities.py:32
|
|
470
|
+
#, python-brace-format
|
|
471
|
+
msgid "User Activity of {user}"
|
|
472
|
+
msgstr ""
|
|
473
|
+
|
|
474
|
+
#: contrib/authentication/viewsets/titles/users.py:11
|
|
475
|
+
#, python-brace-format
|
|
476
|
+
msgid "Permissions for {email}"
|
|
477
|
+
msgstr ""
|
|
478
|
+
|
|
479
|
+
#: contrib/authentication/viewsets/titles/users.py:16
|
|
480
|
+
msgid "Your Profile"
|
|
481
|
+
msgstr ""
|
|
482
|
+
|
|
483
|
+
#: contrib/authentication/viewsets/titles/users.py:21
|
|
484
|
+
msgid "User: {{email}}"
|
|
485
|
+
msgstr ""
|
|
486
|
+
|
|
487
|
+
#: contrib/authentication/viewsets/titles/users.py:27
|
|
488
|
+
msgid "New User"
|
|
489
|
+
msgstr ""
|
|
490
|
+
|
|
491
|
+
#: contrib/authentication/viewsets/user_activities.py:178
|
|
492
|
+
msgid "<b>User Activity</b>"
|
|
493
|
+
msgstr ""
|
|
494
|
+
|
|
495
|
+
#: contrib/authentication/viewsets/user_activities.py:179
|
|
496
|
+
msgid "Time"
|
|
497
|
+
msgstr ""
|
|
498
|
+
|
|
499
|
+
#: contrib/authentication/viewsets/user_activities.py:180
|
|
500
|
+
msgid "Cummulative time"
|
|
501
|
+
msgstr ""
|
|
502
|
+
|
|
503
|
+
#: contrib/authentication/viewsets/user_activities.py:191
|
|
504
|
+
msgid "Hour"
|
|
505
|
+
msgstr ""
|
|
506
|
+
|
|
507
|
+
#: contrib/authentication/viewsets/user_activities.py:196
|
|
508
|
+
msgid "Day"
|
|
509
|
+
msgstr ""
|
|
510
|
+
|
|
511
|
+
#: contrib/authentication/viewsets/user_activities.py:201
|
|
512
|
+
msgid "Week"
|
|
513
|
+
msgstr ""
|
|
514
|
+
|
|
515
|
+
#: contrib/authentication/viewsets/user_activities.py:206
|
|
516
|
+
msgid "Month"
|
|
517
|
+
msgstr ""
|
|
518
|
+
|
|
519
|
+
#: contrib/authentication/viewsets/users.py:77
|
|
520
|
+
msgid ""
|
|
521
|
+
"If the email matches a user, it will receive an email inviting him to reset "
|
|
522
|
+
"his password."
|
|
523
|
+
msgstr ""
|
|
524
|
+
|
|
525
|
+
#: contrib/authentication/viewsets/users.py:94
|
|
526
|
+
msgid "first and last name are too long. please provider a shorter name."
|
|
527
|
+
msgstr ""
|
|
528
|
+
|
|
529
|
+
#: contrib/authentication/viewsets/users.py:101
|
|
530
|
+
msgid ""
|
|
531
|
+
"password is too long. please provider a password shorter than 128 "
|
|
532
|
+
"characters."
|
|
533
|
+
msgstr ""
|
|
534
|
+
|
|
535
|
+
#: contrib/authentication/viewsets/users.py:109
|
|
536
|
+
msgid ""
|
|
537
|
+
"email is too long. please provider an email shorter than 255 characters."
|
|
538
|
+
msgstr ""
|
|
539
|
+
|
|
540
|
+
#: contrib/authentication/viewsets/users.py:128
|
|
541
|
+
msgid "Activate your account."
|
|
542
|
+
msgstr ""
|
|
543
|
+
|
|
544
|
+
#: contrib/authentication/viewsets/users.py:136
|
|
545
|
+
msgid "Please confirm your email address to complete the registration"
|
|
546
|
+
msgstr ""
|
|
547
|
+
|
|
548
|
+
#: contrib/authentication/viewsets/users.py:141
|
|
549
|
+
msgid "Your account already exists"
|
|
550
|
+
msgstr ""
|
|
551
|
+
|
|
552
|
+
#: contrib/authentication/viewsets/users.py:145
|
|
553
|
+
msgid "Something went wrong with the submitted data, please try again later"
|
|
554
|
+
msgstr ""
|
|
555
|
+
|
|
556
|
+
#: contrib/authentication/viewsets/users.py:149
|
|
557
|
+
msgid "email, first_name, last_name and password must be provided"
|
|
558
|
+
msgstr ""
|
|
559
|
+
|
|
560
|
+
#: contrib/authentication/viewsets/users.py:170
|
|
561
|
+
msgid "Activation Successful"
|
|
562
|
+
msgstr ""
|
|
563
|
+
|
|
564
|
+
#: contrib/authentication/viewsets/users.py:171
|
|
565
|
+
msgid "You are successfully registered. Please login"
|
|
566
|
+
msgstr ""
|
|
567
|
+
|
|
568
|
+
#: contrib/authentication/viewsets/users.py:184
|
|
569
|
+
msgid "Activation Failed"
|
|
570
|
+
msgstr ""
|
|
571
|
+
|
|
572
|
+
#: contrib/authentication/viewsets/users.py:186
|
|
573
|
+
msgid ""
|
|
574
|
+
"The registration link you clicked was probably expired or your account is "
|
|
575
|
+
"already activated. Please try to register again."
|
|
576
|
+
msgstr ""
|
|
577
|
+
|
|
578
|
+
#: contrib/authentication/viewsets/users.py:188
|
|
579
|
+
msgid "Register"
|
|
580
|
+
msgstr ""
|
|
581
|
+
|
|
582
|
+
#: contrib/authentication/viewsets/users.py:276
|
|
583
|
+
msgid "Password changed."
|
|
584
|
+
msgstr ""
|
|
585
|
+
|
|
586
|
+
#: contrib/authentication/viewsets/users.py:319
|
|
587
|
+
msgid "Reset Password E-Mail sent: Check your mailbox"
|
|
588
|
+
msgstr ""
|
|
589
|
+
|
|
590
|
+
#: contrib/authentication/viewsets/users.py:321
|
|
591
|
+
msgid "Reset Password Failed. Please contact an administrator"
|
|
592
|
+
msgstr ""
|
|
@@ -166,7 +166,7 @@ class User(AbstractBaseUser, PermissionsMixin):
|
|
|
166
166
|
return self.profile.last_name
|
|
167
167
|
|
|
168
168
|
@classmethod
|
|
169
|
-
def get_endpoint_basename(
|
|
169
|
+
def get_endpoint_basename(cls):
|
|
170
170
|
return "wbcore:authentication:user"
|
|
171
171
|
|
|
172
172
|
@classmethod
|
|
@@ -187,7 +187,7 @@ class Group(DjangoBaseGroup):
|
|
|
187
187
|
proxy = True
|
|
188
188
|
|
|
189
189
|
@classmethod
|
|
190
|
-
def get_endpoint_basename(
|
|
190
|
+
def get_endpoint_basename(cls):
|
|
191
191
|
return "wbcore:authentication:group"
|
|
192
192
|
|
|
193
193
|
@classmethod
|
|
@@ -208,7 +208,7 @@ class Permission(DjangoBasePermission):
|
|
|
208
208
|
proxy = True
|
|
209
209
|
|
|
210
210
|
@classmethod
|
|
211
|
-
def get_endpoint_basename(
|
|
211
|
+
def get_endpoint_basename(cls):
|
|
212
212
|
return "wbcore:authentication:permission"
|
|
213
213
|
|
|
214
214
|
@classmethod
|
|
@@ -59,7 +59,7 @@ class UserActivity(models.Model):
|
|
|
59
59
|
return Subquery(qs.order_by("-latest_refresh").values("latest_refresh")[:1], output_field=DateTimeField())
|
|
60
60
|
|
|
61
61
|
@classmethod
|
|
62
|
-
def get_endpoint_basename(
|
|
62
|
+
def get_endpoint_basename(cls):
|
|
63
63
|
return "wbcore:authentication:useractivity"
|
|
64
64
|
|
|
65
65
|
@classmethod
|
|
@@ -60,7 +60,7 @@ class ChangePasswordSerializer(wb_serializers.Serializer):
|
|
|
60
60
|
validate_password(new_password)
|
|
61
61
|
return super().validate(data)
|
|
62
62
|
except serializers.ValidationError as e:
|
|
63
|
-
raise serializers.ValidationError({"new_password": e, "confirm_password": e})
|
|
63
|
+
raise serializers.ValidationError({"new_password": e, "confirm_password": e}) from e
|
|
64
64
|
|
|
65
65
|
class Meta:
|
|
66
66
|
fields = ("current_password", "new_password", "confirm_password")
|
|
@@ -336,7 +336,7 @@ class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
|
|
|
336
336
|
raise exceptions.AuthenticationFailed(
|
|
337
337
|
self.error_messages["no_active_account"],
|
|
338
338
|
"no_active_account",
|
|
339
|
-
)
|
|
339
|
+
) from None
|
|
340
340
|
return data
|
|
341
341
|
|
|
342
342
|
|
|
@@ -9,7 +9,7 @@ from rest_framework import exceptions
|
|
|
9
9
|
from rest_framework.test import APIRequestFactory
|
|
10
10
|
|
|
11
11
|
from wbcore.contrib.authentication.authentication import inject_short_lived_token
|
|
12
|
-
from wbcore.contrib.authentication.models import Token
|
|
12
|
+
from wbcore.contrib.authentication.models import Token, User
|
|
13
13
|
|
|
14
14
|
fake = Faker()
|
|
15
15
|
now = datetime.now()
|
|
@@ -17,9 +17,9 @@ now = datetime.now()
|
|
|
17
17
|
|
|
18
18
|
class TestTokenUnitTests:
|
|
19
19
|
@pytest.fixture
|
|
20
|
-
def request_with_user(
|
|
20
|
+
def request_with_user(self: User):
|
|
21
21
|
request = APIRequestFactory().get("/")
|
|
22
|
-
request.user =
|
|
22
|
+
request.user = self
|
|
23
23
|
return request
|
|
24
24
|
|
|
25
25
|
def setup_method(self):
|
|
@@ -155,7 +155,6 @@ class TestRegistrationAndActivationViews:
|
|
|
155
155
|
# Arrange
|
|
156
156
|
mock_get_user = mocker.patch(
|
|
157
157
|
"wbcore.contrib.authentication.models.users.UserManager.get",
|
|
158
|
-
side_effect=Exception if should_fail else None,
|
|
159
158
|
return_value=None if should_fail else test_user,
|
|
160
159
|
)
|
|
161
160
|
mock_reset_password = mocker.patch.object(test_user, "reset_password")
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from django.contrib.auth import views as auth_views
|
|
2
2
|
from django.urls import include, path, reverse_lazy
|
|
3
|
-
from dynamic_preferences.api.viewsets import GlobalPreferencesViewSet
|
|
4
|
-
from dynamic_preferences.users.viewsets import UserPreferencesViewSet
|
|
5
3
|
from rest_framework_simplejwt.views import ( # TokenObtainPairView,; TokenRefreshView,
|
|
6
4
|
TokenVerifyView,
|
|
7
5
|
)
|
|
@@ -36,8 +34,6 @@ router.register(r"group", GroupViewSet)
|
|
|
36
34
|
router.register(r"permission", PermissionViewSet)
|
|
37
35
|
router.register(r"user", UserModelViewSet, basename="user")
|
|
38
36
|
router.register(r"userprofile", UserProfileModelViewSet, basename="userprofile")
|
|
39
|
-
router.register(r"global_preferences", GlobalPreferencesViewSet, basename="global_preferences")
|
|
40
|
-
router.register(r"user_preferences", UserPreferencesViewSet, basename="user_preferences")
|
|
41
37
|
|
|
42
38
|
router.register(r"useractivitychart", UserActivityChart, basename="useractivitychart")
|
|
43
39
|
router.register(r"useractivity", UserActivityModelViewSet, basename="useractivity")
|