openwisp-users 1.2.3__tar.gz → 1.3.1__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.
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/CHANGES.rst +90 -1
- {openwisp_users-1.2.3/openwisp_users.egg-info → openwisp_users-1.3.1}/PKG-INFO +10 -9
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/README.rst +2 -2
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/__init__.py +1 -1
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/locale/de/LC_MESSAGES/django.po +56 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/locale/it/LC_MESSAGES/django.po +53 -0
- openwisp_users-1.3.1/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po +153 -0
- openwisp_users-1.3.1/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po +125 -0
- openwisp_users-1.3.1/openwisp_users/accounts/templates/account/email/account_expiration_reminder_message.html +14 -0
- openwisp_users-1.3.1/openwisp_users/accounts/templates/account/email/account_expiration_reminder_message.txt +10 -0
- openwisp_users-1.3.1/openwisp_users/accounts/templates/account/email/account_expired_message.html +12 -0
- openwisp_users-1.3.1/openwisp_users/accounts/templates/account/email/account_expired_message.txt +8 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/admin.py +213 -29
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/serializers.py +97 -4
- openwisp_users-1.3.1/openwisp_users/api/throttling.py +18 -0
- openwisp_users-1.3.1/openwisp_users/api/urls.py +75 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/views.py +90 -14
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/apps.py +35 -0
- openwisp_users-1.3.1/openwisp_users/auth.py +135 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/backends.py +1 -1
- openwisp_users-1.3.1/openwisp_users/base/forms.py +102 -0
- openwisp_users-1.3.1/openwisp_users/base/models.py +573 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/locale/it/LC_MESSAGES/django.po +16 -4
- openwisp_users-1.3.1/openwisp_users/management/commands/export_users.py +197 -0
- openwisp_users-1.3.1/openwisp_users/middleware.py +129 -0
- openwisp_users-1.3.1/openwisp_users/migrations/0022_user_expiration_date.py +31 -0
- openwisp_users-1.3.1/openwisp_users/migrations/0023_add_auth_token_permissions_to_admins.py +18 -0
- openwisp_users-1.3.1/openwisp_users/migrations/0024_apikey.py +26 -0
- openwisp_users-1.3.1/openwisp_users/migrations/0025_alter_organizationuser_is_admin.py +20 -0
- openwisp_users-1.3.1/openwisp_users/migrations/0026_user_password_based_token.py +31 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/__init__.py +27 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/models.py +3 -0
- openwisp_users-1.3.1/openwisp_users/settings.py +97 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/static/openwisp-users/css/admin.css +5 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tasks.py +14 -11
- openwisp_users-1.3.1/openwisp_users/templates/admin/action_confirmation.html +1 -0
- openwisp_users-1.3.1/openwisp_users/templates/admin/login.html +1 -0
- {openwisp_users-1.2.3/openwisp_users/templates/admin → openwisp_users-1.3.1/openwisp_users/templates/admin/openwisp_users}/login.html +1 -0
- openwisp_users-1.3.1/openwisp_users/templates/custom_password_reset_email.html +11 -0
- openwisp_users-1.3.1/openwisp_users/templates/custom_password_reset_email.txt +8 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_accounts.py +88 -2
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_admin.py +459 -8
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_api/test_api.py +99 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_api/test_authentication.py +21 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_api/test_password_reset.py +309 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_api/test_throttling.py +80 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_api/test_urls.py +42 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_api/test_views.py +124 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_auth.py +203 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_backends.py +3 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_commands.py +368 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_middlewares.py +203 -0
- openwisp_users-1.3.1/openwisp_users/tests/test_models.py +1197 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/utils.py +22 -4
- {openwisp_users-1.2.3 → openwisp_users-1.3.1/openwisp_users.egg-info}/PKG-INFO +10 -9
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users.egg-info/SOURCES.txt +18 -0
- openwisp_users-1.3.1/openwisp_users.egg-info/requires.txt +9 -0
- openwisp_users-1.3.1/requirements.txt +9 -0
- openwisp_users-1.2.3/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po +0 -88
- openwisp_users-1.2.3/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po +0 -58
- openwisp_users-1.2.3/openwisp_users/api/throttling.py +0 -7
- openwisp_users-1.2.3/openwisp_users/api/urls.py +0 -54
- openwisp_users-1.2.3/openwisp_users/base/models.py +0 -300
- openwisp_users-1.2.3/openwisp_users/management/commands/export_users.py +0 -79
- openwisp_users-1.2.3/openwisp_users/middleware.py +0 -49
- openwisp_users-1.2.3/openwisp_users/settings.py +0 -60
- openwisp_users-1.2.3/openwisp_users/tests/test_api/test_throttling.py +0 -21
- openwisp_users-1.2.3/openwisp_users/tests/test_api/test_views.py +0 -26
- openwisp_users-1.2.3/openwisp_users/tests/test_commands.py +0 -106
- openwisp_users-1.2.3/openwisp_users/tests/test_middlewares.py +0 -49
- openwisp_users-1.2.3/openwisp_users/tests/test_models.py +0 -499
- openwisp_users-1.2.3/openwisp_users.egg-info/requires.txt +0 -8
- openwisp_users-1.2.3/requirements.txt +0 -8
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/LICENSE +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/MANIFEST.in +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/adapter.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/locale/fur/LC_MESSAGES/django.po +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/static/openwisp-users/accounts/css/change-password.css +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/static/openwisp-users/accounts/css/non-admin.css +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email/base_message.txt +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email/email_confirmation_message.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email/email_confirmation_message.txt +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email/email_confirmation_signup_message.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email/password_expiration_message.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email/password_expiration_message.txt +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email_confirm.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/email_verification_success.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/login.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/logout_success.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/password_change.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/password_change_success.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/account/password_not_required.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/templates/allauth/layouts/base.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/urls.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/accounts/views.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/authentication.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/filters.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/mixins.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/permissions.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/api/swagger.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/base/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/locale/de/LC_MESSAGES/django.po +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/locale/fur/LC_MESSAGES/django.po +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/locale/ru/LC_MESSAGES/django.po +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/locale/sl/LC_MESSAGES/django.po +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/management/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/management/commands/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0001_initial.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0002_auto_20180508_2017.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0003_default_organization.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0004_default_groups.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0005_user_phone_number.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0006_id_email_index_together.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0007_unique_email.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0008_update_admins_permissions.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0009_create_organization_owners.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0010_allow_admins_change_organization.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0011_user_first_name_150_max_length.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0012_user_location_max_length_256.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0013_user_birth_date.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0014_user_notes.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0015_alter_organization_users_alter_organizationuser_user.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0016_organizationinvitation.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0017_user_language.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0018_allow_operator_view_organisation.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0019_user_password_updated.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0020_populate_password_updated_field.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/migrations/0021_rename_user_id_email_openwisp_us_id_06c07a_idx.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/mixins.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/multitenancy.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/password_validation.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/static/openwisp-users/css/change-password.css +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/static/openwisp-users/js/addform.js +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/static/openwisp-users/js/org-autocomplete.js +0 -0
- {openwisp_users-1.2.3/openwisp_users/templates/admin → openwisp_users-1.3.1/openwisp_users/templates/admin/openwisp_users}/action_confirmation.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/templates/admin/openwisp_users/user/change_form.html +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_adapter.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/test_api/__init__.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/tests/utils.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/views.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users/widgets.py +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users.egg-info/dependency_links.txt +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users.egg-info/not-zip-safe +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/openwisp_users.egg-info/top_level.txt +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/pyproject.toml +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/setup.cfg +0 -0
- {openwisp_users-1.2.3 → openwisp_users-1.3.1}/setup.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
Version 1.
|
|
4
|
+
Version 1.3.1 [2026-09-09]
|
|
5
5
|
--------------------------
|
|
6
6
|
|
|
7
7
|
Bugfixes
|
|
@@ -9,6 +9,95 @@ Bugfixes
|
|
|
9
9
|
|
|
10
10
|
- Prevented autocomplete loop without an organization field
|
|
11
11
|
|
|
12
|
+
Version 1.3.0 [2026-09-02]
|
|
13
|
+
--------------------------
|
|
14
|
+
|
|
15
|
+
Features
|
|
16
|
+
~~~~~~~~
|
|
17
|
+
|
|
18
|
+
- Added `user account expiration
|
|
19
|
+
<https://github.com/openwisp/openwisp-users/issues/499>`_ with automatic
|
|
20
|
+
deactivation and reminder emails.
|
|
21
|
+
- Allowed `customizing the password reset form
|
|
22
|
+
<https://github.com/openwisp/openwisp-users/issues/511>`_.
|
|
23
|
+
- Added `password self-service REST API endpoints
|
|
24
|
+
<https://github.com/openwisp/openwisp-users/issues/511>`_.
|
|
25
|
+
- Added `API key management to the user admin
|
|
26
|
+
<https://github.com/openwisp/openwisp-users/issues/240>`_. Authorized
|
|
27
|
+
administrators can create and delete API keys for users, while users can
|
|
28
|
+
always delete their own API keys. API keys belonging to other users are
|
|
29
|
+
masked.
|
|
30
|
+
- Added `extensible field serialization to the export_users command
|
|
31
|
+
<https://github.com/openwisp/openwisp-users/issues/497>`_, including
|
|
32
|
+
custom serializers, related object extraction and relation traversal.
|
|
33
|
+
|
|
34
|
+
This changes the structure of the generated CSV output and may require
|
|
35
|
+
updates to scripts which parse it.
|
|
36
|
+
|
|
37
|
+
- Added ``OPENWISP_USERS_SOCIALACCOUNT_ADMIN_NEEDED`` to `support custom
|
|
38
|
+
allauth OAuth/SAML providers
|
|
39
|
+
<https://github.com/openwisp/openwisp-users/issues/501>`_ when automatic
|
|
40
|
+
detection is not sufficient.
|
|
41
|
+
|
|
42
|
+
Changes
|
|
43
|
+
~~~~~~~
|
|
44
|
+
|
|
45
|
+
Other changes
|
|
46
|
+
+++++++++++++
|
|
47
|
+
|
|
48
|
+
- Improved `password expiration handling with SSO and REST API
|
|
49
|
+
authentication
|
|
50
|
+
<https://github.com/openwisp/openwisp-users/issues/511>`_. Users
|
|
51
|
+
authenticated through passwordless methods such as SAML, OAuth and
|
|
52
|
+
sesame magic links are no longer prompted to update an expired local
|
|
53
|
+
password. REST API clients now receive a JSON ``403`` response instead
|
|
54
|
+
of an HTML redirect.
|
|
55
|
+
- Renamed the `"Is admin" label to "Organization manager"
|
|
56
|
+
<https://github.com/openwisp/openwisp-users/issues/540>`_.
|
|
57
|
+
- Improved `admin theme consistency
|
|
58
|
+
<https://github.com/openwisp/openwisp-users/issues/473>`_ by using
|
|
59
|
+
shared theme colors provided by OpenWISP Utils.
|
|
60
|
+
|
|
61
|
+
Dependencies
|
|
62
|
+
++++++++++++
|
|
63
|
+
|
|
64
|
+
- Added `dj-rest-auth>=7.2.0,<7.3
|
|
65
|
+
<https://github.com/iMerica/dj-rest-auth/releases/tag/7.2.0>`_.
|
|
66
|
+
- Bumped ``django-organizations`` from ``>=2.5.0,<2.6.0`` to
|
|
67
|
+
`>=2.7.0,<2.8.0
|
|
68
|
+
<https://github.com/bennylope/django-organizations/blob/master/HISTORY.rst>`_.
|
|
69
|
+
- Bumped ``django-extensions`` from ``>=3.2,<4.2`` to `>=4.1,<4.2
|
|
70
|
+
<https://github.com/django-extensions/django-extensions/releases/tag/4.1>`_.
|
|
71
|
+
- Bumped ``django-allauth[socialaccount]`` from ``>=65.12.0,<65.14.0`` to
|
|
72
|
+
`>=65.19.1,<65.20.0
|
|
73
|
+
<https://docs.allauth.org/en/latest/release-notes/recent.html>`_.
|
|
74
|
+
- Bumped ``django-phonenumber-field`` from ``>=8.1.0,<8.2.0`` to
|
|
75
|
+
`>=8.5.0,<8.6.0
|
|
76
|
+
<https://github.com/django-phonenumber-field/django-phonenumber-field/releases/tag/8.5.0>`_.
|
|
77
|
+
- Bumped ``phonenumbers`` from ``>=9.0.10,<9.1.0`` to `>=9.0.38,<9.1.0
|
|
78
|
+
<https://github.com/daviddrysdale/python-phonenumbers/releases/tag/v9.0.38>`_.
|
|
79
|
+
- Bumped ``django-reversion`` from ``~=6.0.0`` to `~=6.3.0
|
|
80
|
+
<https://django-reversion.readthedocs.io/en/latest/changelog.html>`_.
|
|
81
|
+
- Bumped ``django-redis`` from ``~=6.0.0`` to `~=7.0.0
|
|
82
|
+
<https://github.com/jazzband/django-redis/releases/tag/7.0.0>`_.
|
|
83
|
+
- Bumped ``openwisp-utils[rest,celery]`` from ``~=1.2.0`` to `~=1.3.0
|
|
84
|
+
<https://github.com/openwisp/openwisp-utils/releases/tag/1.3.0>`_.
|
|
85
|
+
- Dropped support for Django ``4.2.0``.
|
|
86
|
+
- Dropped support for Python ``3.9``.
|
|
87
|
+
|
|
88
|
+
Bugfixes
|
|
89
|
+
~~~~~~~~
|
|
90
|
+
|
|
91
|
+
- Fixed `custom REST API view overrides
|
|
92
|
+
<https://github.com/openwisp/openwisp-users/issues/553>`_ so
|
|
93
|
+
``get_api_urls()`` correctly uses callbacks from custom view modules
|
|
94
|
+
while falling back to the default views when an override is not
|
|
95
|
+
provided.
|
|
96
|
+
- Fixed infinite recursion when custom API views subclass
|
|
97
|
+
``ChangePasswordView``.
|
|
98
|
+
- Fixed `template loader ordering and template extensibility
|
|
99
|
+
<https://github.com/openwisp/openwisp-users/issues/489>`_.
|
|
100
|
+
|
|
12
101
|
Version 1.2.2 [2026-04-25]
|
|
13
102
|
--------------------------
|
|
14
103
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openwisp-users
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Provides basic multi-tenancy features for OpenWISP (using the Django web-framework)
|
|
5
5
|
Home-page: http://openwisp.org
|
|
6
6
|
Download-URL: https://github.com/openwisp/openwisp-users/releases
|
|
@@ -18,12 +18,13 @@ Classifier: Operating System :: OS Independent
|
|
|
18
18
|
Classifier: Framework :: Django
|
|
19
19
|
Classifier: Programming Language :: Python :: 3
|
|
20
20
|
License-File: LICENSE
|
|
21
|
-
Requires-Dist: django-organizations<2.
|
|
22
|
-
Requires-Dist: django-extensions<4.2,>=
|
|
23
|
-
Requires-Dist: django-allauth[socialaccount]<65.
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: django-organizations<2.8.0,>=2.7.0
|
|
22
|
+
Requires-Dist: django-extensions<4.2,>=4.1
|
|
23
|
+
Requires-Dist: django-allauth[socialaccount]<65.20.0,>=65.19.1
|
|
24
|
+
Requires-Dist: dj-rest-auth<7.3,>=7.2.0
|
|
25
|
+
Requires-Dist: django-phonenumber-field<8.6.0,>=8.5.0
|
|
26
|
+
Requires-Dist: phonenumbers<9.1.0,>=9.0.38
|
|
27
|
+
Requires-Dist: openwisp-utils[celery,rest]~=1.3.0
|
|
27
28
|
Requires-Dist: packaging
|
|
28
29
|
Requires-Dist: django-sesame<3.3.0,>=3.2.3
|
|
29
30
|
Dynamic: author
|
|
@@ -42,8 +43,8 @@ Dynamic: summary
|
|
|
42
43
|
openwisp-users
|
|
43
44
|
==============
|
|
44
45
|
|
|
45
|
-
.. image:: https://github.com/openwisp/openwisp-users/workflows/
|
|
46
|
-
:target: https://github.com/openwisp/openwisp-users/actions
|
|
46
|
+
.. image:: https://github.com/openwisp/openwisp-users/actions/workflows/ci.yml/badge.svg
|
|
47
|
+
:target: https://github.com/openwisp/openwisp-users/actions/workflows/ci.yml
|
|
47
48
|
|
|
48
49
|
.. image:: https://coveralls.io/repos/openwisp/openwisp-users/badge.svg
|
|
49
50
|
:target: https://coveralls.io/r/openwisp/openwisp-users
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
openwisp-users
|
|
2
2
|
==============
|
|
3
3
|
|
|
4
|
-
.. image:: https://github.com/openwisp/openwisp-users/workflows/
|
|
5
|
-
:target: https://github.com/openwisp/openwisp-users/actions
|
|
4
|
+
.. image:: https://github.com/openwisp/openwisp-users/actions/workflows/ci.yml/badge.svg
|
|
5
|
+
:target: https://github.com/openwisp/openwisp-users/actions/workflows/ci.yml
|
|
6
6
|
|
|
7
7
|
.. image:: https://coveralls.io/repos/openwisp/openwisp-users/badge.svg
|
|
8
8
|
:target: https://coveralls.io/r/openwisp/openwisp-users
|
|
@@ -24,6 +24,62 @@ msgstr ""
|
|
|
24
24
|
"Sie bekommen diese E-Mail, weil diese E-Mail-Adresse von einem Benutzer "
|
|
25
25
|
"<b>%(user_display)s</b> auf <b>%(site_name)s</b> registriert wurde.\n"
|
|
26
26
|
|
|
27
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:5
|
|
28
|
+
#, python-format
|
|
29
|
+
msgid ""
|
|
30
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
31
|
+
"%(days)s day on %(expiry_date)s."
|
|
32
|
+
msgid_plural ""
|
|
33
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
34
|
+
"%(days)s days on %(expiry_date)s."
|
|
35
|
+
msgstr[0] ""
|
|
36
|
+
"Wir informieren Sie, dass Ihr Konto <strong>%(username)s</strong> in "
|
|
37
|
+
"%(days)s Tag am %(expiry_date)s abläuft."
|
|
38
|
+
msgstr[1] ""
|
|
39
|
+
"Wir informieren Sie, dass Ihr Konto <strong>%(username)s</strong> in "
|
|
40
|
+
"%(days)s Tagen am %(expiry_date)s abläuft."
|
|
41
|
+
|
|
42
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:13
|
|
43
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:10
|
|
44
|
+
msgid "Please contact your administrator if you need to extend your access."
|
|
45
|
+
msgstr ""
|
|
46
|
+
"Bitte kontaktieren Sie Ihren Administrator, wenn Sie Ihren Zugang verlängern "
|
|
47
|
+
"möchten."
|
|
48
|
+
|
|
49
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:4
|
|
50
|
+
#, python-format
|
|
51
|
+
msgid ""
|
|
52
|
+
"We inform you that your account %(username)s will expire in %(days)s day on "
|
|
53
|
+
"%(expiry_date)s."
|
|
54
|
+
msgid_plural ""
|
|
55
|
+
"We inform you that your account %(username)s will expire in %(days)s days on "
|
|
56
|
+
"%(expiry_date)s."
|
|
57
|
+
msgstr[0] ""
|
|
58
|
+
"Wir informieren Sie, dass Ihr Konto %(username)s in %(days)s Tag am "
|
|
59
|
+
"%(expiry_date)s abläuft."
|
|
60
|
+
msgstr[1] ""
|
|
61
|
+
"Wir informieren Sie, dass Ihr Konto %(username)s in %(days)s Tagen am "
|
|
62
|
+
"%(expiry_date)s abläuft."
|
|
63
|
+
|
|
64
|
+
#: accounts/templates/account/email/account_expired_message.html:5
|
|
65
|
+
#: accounts/templates/account/email/account_expired_message.txt:4
|
|
66
|
+
#, python-format
|
|
67
|
+
msgid ""
|
|
68
|
+
"We inform you that your account %(username)s has been deactivated because it "
|
|
69
|
+
"expired on %(expiry_date)s."
|
|
70
|
+
msgstr ""
|
|
71
|
+
"Wir informieren Sie, dass Ihr Konto %(username)s deaktiviert wurde, weil es "
|
|
72
|
+
"am %(expiry_date)s abgelaufen ist."
|
|
73
|
+
|
|
74
|
+
#: accounts/templates/account/email/account_expired_message.html:11
|
|
75
|
+
#: accounts/templates/account/email/account_expired_message.txt:8
|
|
76
|
+
msgid ""
|
|
77
|
+
"Please contact your administrator if you need to reactivate your account."
|
|
78
|
+
msgstr ""
|
|
79
|
+
"Bitte kontaktieren Sie Ihren Administrator, wenn Sie Ihr Konto "
|
|
80
|
+
"reaktivieren möchten."
|
|
81
|
+
|
|
82
|
+
|
|
27
83
|
#: accounts/templates/account/email/email_confirmation_message.html:9
|
|
28
84
|
msgid "To confirm this is correct, please click on the button below."
|
|
29
85
|
msgstr "Um zu bestätigen, dass dies korrekt ist, klicken Sie bitte auf die Schaltfläche unten."
|
|
@@ -22,6 +22,59 @@ msgstr "Conferma l'indirizzo E-mail"
|
|
|
22
22
|
msgid "Confirm"
|
|
23
23
|
msgstr "Confermo"
|
|
24
24
|
|
|
25
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:5
|
|
26
|
+
#, python-format
|
|
27
|
+
msgid ""
|
|
28
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
29
|
+
"%(days)s day on %(expiry_date)s."
|
|
30
|
+
msgid_plural ""
|
|
31
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
32
|
+
"%(days)s days on %(expiry_date)s."
|
|
33
|
+
msgstr[0] ""
|
|
34
|
+
"Ti informiamo che il tuo account <strong>%(username)s</strong> scadrà tra "
|
|
35
|
+
"%(days)s giorno, precisamente il %(expiry_date)s."
|
|
36
|
+
msgstr[1] ""
|
|
37
|
+
"Ti informiamo che il tuo account <strong>%(username)s</strong> scadrà tra "
|
|
38
|
+
"%(days)s giorni, precisamente il %(expiry_date)s."
|
|
39
|
+
|
|
40
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:13
|
|
41
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:10
|
|
42
|
+
msgid "Please contact your administrator if you need to extend your access."
|
|
43
|
+
msgstr ""
|
|
44
|
+
"Contatta il tuo amministratore se hai bisogno di estendere il tuo accesso."
|
|
45
|
+
|
|
46
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:4
|
|
47
|
+
#, python-format
|
|
48
|
+
msgid ""
|
|
49
|
+
"We inform you that your account %(username)s will expire in %(days)s day on "
|
|
50
|
+
"%(expiry_date)s."
|
|
51
|
+
msgid_plural ""
|
|
52
|
+
"We inform you that your account %(username)s will expire in %(days)s days on "
|
|
53
|
+
"%(expiry_date)s."
|
|
54
|
+
msgstr[0] ""
|
|
55
|
+
"Ti informiamo che il tuo account %(username)s scadrà tra %(days)s giorno, "
|
|
56
|
+
"precisamente il %(expiry_date)s."
|
|
57
|
+
msgstr[1] ""
|
|
58
|
+
"Ti informiamo che il tuo account %(username)s scadrà tra %(days)s giorni, "
|
|
59
|
+
"precisamente il %(expiry_date)s."
|
|
60
|
+
|
|
61
|
+
#: accounts/templates/account/email/account_expired_message.html:5
|
|
62
|
+
#: accounts/templates/account/email/account_expired_message.txt:4
|
|
63
|
+
#, python-format
|
|
64
|
+
msgid ""
|
|
65
|
+
"We inform you that your account %(username)s has been deactivated because it "
|
|
66
|
+
"expired on %(expiry_date)s."
|
|
67
|
+
msgstr ""
|
|
68
|
+
"Ti informiamo che il tuo account %(username)s è stato disattivato perché è "
|
|
69
|
+
"scaduto il %(expiry_date)s."
|
|
70
|
+
|
|
71
|
+
#: accounts/templates/account/email/account_expired_message.html:11
|
|
72
|
+
#: accounts/templates/account/email/account_expired_message.txt:8
|
|
73
|
+
msgid ""
|
|
74
|
+
"Please contact your administrator if you need to reactivate your account."
|
|
75
|
+
msgstr ""
|
|
76
|
+
"Contatta il tuo amministratore se hai bisogno di riattivare il tuo account."
|
|
77
|
+
|
|
25
78
|
#: accounts/templates/account/email/base_message.txt:1
|
|
26
79
|
#, python-format
|
|
27
80
|
msgid "Welcome to %(site_name)s!"
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# OpenWISP RADIUS
|
|
2
|
+
# Copyright (C) 2021
|
|
3
|
+
# This file is distributed under the same license as the PACKAGE package.
|
|
4
|
+
# Federico Capoano support@openwisp.io, 2021.
|
|
5
|
+
#
|
|
6
|
+
msgid ""
|
|
7
|
+
msgstr ""
|
|
8
|
+
"POT-Creation-Date: 2021-09-01 18:32-0500\n"
|
|
9
|
+
"Language: ru\n"
|
|
10
|
+
"MIME-Version: 1.0\n"
|
|
11
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
12
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
13
|
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 "
|
|
14
|
+
"&& n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
15
|
+
|
|
16
|
+
#: templates/account/email/base_message.txt:1
|
|
17
|
+
#, python-format
|
|
18
|
+
msgid "Welcome to %(site_name)s!"
|
|
19
|
+
msgstr "Добро пожаловат на %(site_name)s!"
|
|
20
|
+
|
|
21
|
+
#: templates/account/email/base_message.txt:5
|
|
22
|
+
#, python-format
|
|
23
|
+
msgid ""
|
|
24
|
+
"Thank you for using %(site_name)s!\n"
|
|
25
|
+
"%(site_domain)s"
|
|
26
|
+
msgstr ""
|
|
27
|
+
"Спасибо за использование %(site_name)s!\n"
|
|
28
|
+
"%(site_domain)s"
|
|
29
|
+
|
|
30
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:5
|
|
31
|
+
#, python-format
|
|
32
|
+
msgid ""
|
|
33
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
34
|
+
"%(days)s day on %(expiry_date)s."
|
|
35
|
+
msgid_plural ""
|
|
36
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
37
|
+
"%(days)s days on %(expiry_date)s."
|
|
38
|
+
msgstr[0] ""
|
|
39
|
+
"Сообщаем вам, что срок действия вашей учетной записи "
|
|
40
|
+
"<strong>%(username)s</strong> истечет через %(days)s день, а именно "
|
|
41
|
+
"%(expiry_date)s."
|
|
42
|
+
msgstr[1] ""
|
|
43
|
+
"Сообщаем вам, что срок действия вашей учетной записи "
|
|
44
|
+
"<strong>%(username)s</strong> истечет через %(days)s дня, а именно "
|
|
45
|
+
"%(expiry_date)s."
|
|
46
|
+
msgstr[2] ""
|
|
47
|
+
"Сообщаем вам, что срок действия вашей учетной записи "
|
|
48
|
+
"<strong>%(username)s</strong> истечет через %(days)s дней, а именно "
|
|
49
|
+
"%(expiry_date)s."
|
|
50
|
+
|
|
51
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:13
|
|
52
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:10
|
|
53
|
+
msgid "Please contact your administrator if you need to extend your access."
|
|
54
|
+
msgstr ""
|
|
55
|
+
"Пожалуйста, свяжитесь с вашим администратором, если вам нужно продлить "
|
|
56
|
+
"доступ."
|
|
57
|
+
|
|
58
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:4
|
|
59
|
+
#, python-format
|
|
60
|
+
msgid ""
|
|
61
|
+
"We inform you that your account %(username)s will expire in %(days)s day on "
|
|
62
|
+
"%(expiry_date)s."
|
|
63
|
+
msgid_plural ""
|
|
64
|
+
"We inform you that your account %(username)s will expire in %(days)s days on "
|
|
65
|
+
"%(expiry_date)s."
|
|
66
|
+
msgstr[0] ""
|
|
67
|
+
"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет "
|
|
68
|
+
"через %(days)s день, а именно %(expiry_date)s."
|
|
69
|
+
msgstr[1] ""
|
|
70
|
+
"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет "
|
|
71
|
+
"через %(days)s дня, а именно %(expiry_date)s."
|
|
72
|
+
msgstr[2] ""
|
|
73
|
+
"Сообщаем вам, что срок действия вашей учетной записи %(username)s истечет "
|
|
74
|
+
"через %(days)s дней, а именно %(expiry_date)s."
|
|
75
|
+
|
|
76
|
+
#: accounts/templates/account/email/account_expired_message.html:5
|
|
77
|
+
#: accounts/templates/account/email/account_expired_message.txt:4
|
|
78
|
+
#, python-format
|
|
79
|
+
msgid ""
|
|
80
|
+
"We inform you that your account %(username)s has been deactivated because it "
|
|
81
|
+
"expired on %(expiry_date)s."
|
|
82
|
+
msgstr ""
|
|
83
|
+
"Сообщаем вам, что ваша учетная запись %(username)s была деактивирована, "
|
|
84
|
+
"поскольку срок ее действия истек %(expiry_date)s."
|
|
85
|
+
|
|
86
|
+
#: accounts/templates/account/email/account_expired_message.html:11
|
|
87
|
+
#: accounts/templates/account/email/account_expired_message.txt:8
|
|
88
|
+
msgid ""
|
|
89
|
+
"Please contact your administrator if you need to reactivate your account."
|
|
90
|
+
msgstr ""
|
|
91
|
+
"Пожалуйста, свяжитесь с вашим администратором, если вам нужно "
|
|
92
|
+
"повторно активировать вашу учетную запись."
|
|
93
|
+
|
|
94
|
+
#: accounts/templates/account/email/email_confirmation_message.html:5
|
|
95
|
+
#, python-format
|
|
96
|
+
msgid ""
|
|
97
|
+
"\n"
|
|
98
|
+
"You're receiving this e-mail because user <b>%(user_display)s</b> registered "
|
|
99
|
+
"this e-mail address to create an account on <b>%(site_name)s</b>.\n"
|
|
100
|
+
msgstr ""
|
|
101
|
+
"\n"
|
|
102
|
+
"Вы получаете это письмо, потому что пользователь <b>%(user_display)s</b> зарегистрировал это "
|
|
103
|
+
"емейл на <b>%(site_name)s</b>.\n"
|
|
104
|
+
|
|
105
|
+
#: accounts/templates/account/email/email_confirmation_message.html:9
|
|
106
|
+
msgid "To confirm this is correct, please click on the button below."
|
|
107
|
+
msgstr "Чтобы убедиться, что это правильно, нажмите кнопку ниже."
|
|
108
|
+
|
|
109
|
+
#: templates/account/email_confirm.html:6 templates/account/email_confirm.html:9
|
|
110
|
+
msgid "Confirm E-mail Address"
|
|
111
|
+
msgstr "Подтверждать емейл адрес"
|
|
112
|
+
|
|
113
|
+
#: templates/account/email_confirm.html:15
|
|
114
|
+
#, python-format
|
|
115
|
+
msgid ""
|
|
116
|
+
"Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail address for "
|
|
117
|
+
"user %(user_display)s."
|
|
118
|
+
msgstr ""
|
|
119
|
+
"Подтвердите, что это <a href=\"mailto:%(email)s\">%(email)s</a> адрес электронной почты "
|
|
120
|
+
"пользователя %(user_display)s."
|
|
121
|
+
|
|
122
|
+
#: templates/account/email_verification_success.html:18
|
|
123
|
+
msgid "Your email has been verified successfully."
|
|
124
|
+
msgstr "Емейл адрес успешно подтверждён"
|
|
125
|
+
|
|
126
|
+
#: templates/account/email_verification_success.html:19
|
|
127
|
+
msgid "This web page can be closed."
|
|
128
|
+
msgstr "Вы можете закрывать страницу"
|
|
129
|
+
|
|
130
|
+
#: templates/account/email_confirm.html:20
|
|
131
|
+
msgid "Confirm"
|
|
132
|
+
msgstr "Подтверждать"
|
|
133
|
+
|
|
134
|
+
#: accounts/templates/account/logout_success.html:18
|
|
135
|
+
msgid "Logout successful."
|
|
136
|
+
msgstr "Выход прошел успешно."
|
|
137
|
+
|
|
138
|
+
#: accounts/templates/account/email/password_expiration_message.html:3
|
|
139
|
+
#: accounts/templates/account/email/password_expiration_message.txt:3
|
|
140
|
+
#, python-format
|
|
141
|
+
msgid ""
|
|
142
|
+
"We inform you that the password for your account %(username)s will expire in "
|
|
143
|
+
"7 days, precisely on %(expiry_date)s."
|
|
144
|
+
msgstr ""
|
|
145
|
+
"Мы информируем вас о том, что пароль для вашей учетной записи %(username)s "
|
|
146
|
+
"истекает через 7 дней, точно %(expiry_date)s."
|
|
147
|
+
|
|
148
|
+
#: accounts/templates/account/email/password_expiration_message.html:5
|
|
149
|
+
#: accounts/templates/account/email/password_expiration_message.txt:5
|
|
150
|
+
msgid ""
|
|
151
|
+
"Kindly proceed with updating your password by clicking on the button below."
|
|
152
|
+
msgstr ""
|
|
153
|
+
"Просим вас обновить ваш пароль, нажав на кнопку ниже."
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# OpenWISP Users
|
|
2
|
+
# Copyright (C) 2021
|
|
3
|
+
# This file is distributed under the same license as the PACKAGE package.
|
|
4
|
+
# Federico Capoano support@openwisp.io, 2021.
|
|
5
|
+
#
|
|
6
|
+
msgid ""
|
|
7
|
+
msgstr ""
|
|
8
|
+
"Report-Msgid-Bugs-To: \n"
|
|
9
|
+
"POT-Creation-Date: 2021-11-11 21:36-0500\n"
|
|
10
|
+
"Language: sl\n"
|
|
11
|
+
"MIME-Version: 1.0\n"
|
|
12
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
13
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
14
|
+
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : "
|
|
15
|
+
"n%100==3 || n%100==4 ? 2 : 3);\n"
|
|
16
|
+
|
|
17
|
+
#: accounts/templates/account/email/email_confirmation_message.html:5
|
|
18
|
+
#, python-format
|
|
19
|
+
msgid ""
|
|
20
|
+
"\n"
|
|
21
|
+
"You're receiving this e-mail because user <b>%(user_display)s</b> registered "
|
|
22
|
+
"this e-mail address to create an account on <b>%(site_name)s</b>.\n"
|
|
23
|
+
msgstr ""
|
|
24
|
+
"\n"
|
|
25
|
+
"To e-pošto ste prejeli, ker je registriran uporabnik <b>%(user_display)s</b>"
|
|
26
|
+
"ta e-poštni naslov za ustvarjanje računa na <b>%(site_name)s</b>.\n"
|
|
27
|
+
|
|
28
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:5
|
|
29
|
+
#, python-format
|
|
30
|
+
msgid ""
|
|
31
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
32
|
+
"%(days)s day on %(expiry_date)s."
|
|
33
|
+
msgid_plural ""
|
|
34
|
+
"We inform you that your account <strong>%(username)s</strong> will expire in "
|
|
35
|
+
"%(days)s days on %(expiry_date)s."
|
|
36
|
+
msgstr[0] ""
|
|
37
|
+
"Obveščamo vas, da bo vaš račun <strong>%(username)s</strong> potekel čez "
|
|
38
|
+
"%(days)s dan, in sicer %(expiry_date)s."
|
|
39
|
+
msgstr[1] ""
|
|
40
|
+
"Obveščamo vas, da bo vaš račun <strong>%(username)s</strong> potekel čez "
|
|
41
|
+
"%(days)s dni, in sicer %(expiry_date)s."
|
|
42
|
+
msgstr[2] ""
|
|
43
|
+
"Obveščamo vas, da bo vaš račun <strong>%(username)s</strong> potekel čez "
|
|
44
|
+
"%(days)s dni, in sicer %(expiry_date)s."
|
|
45
|
+
msgstr[3] ""
|
|
46
|
+
"Obveščamo vas, da bo vaš račun <strong>%(username)s</strong> potekel čez "
|
|
47
|
+
"%(days)s dni, in sicer %(expiry_date)s."
|
|
48
|
+
|
|
49
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.html:13
|
|
50
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:10
|
|
51
|
+
msgid "Please contact your administrator if you need to extend your access."
|
|
52
|
+
msgstr ""
|
|
53
|
+
"Če želite podaljšati svoj dostop, se obrnite na svojega administratorja."
|
|
54
|
+
|
|
55
|
+
#: accounts/templates/account/email/account_expiration_reminder_message.txt:4
|
|
56
|
+
#, python-format
|
|
57
|
+
msgid ""
|
|
58
|
+
"We inform you that your account %(username)s will expire in %(days)s day on "
|
|
59
|
+
"%(expiry_date)s."
|
|
60
|
+
msgid_plural ""
|
|
61
|
+
"We inform you that your account %(username)s will expire in %(days)s days on "
|
|
62
|
+
"%(expiry_date)s."
|
|
63
|
+
msgstr[0] ""
|
|
64
|
+
"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dan, in "
|
|
65
|
+
"sicer %(expiry_date)s."
|
|
66
|
+
msgstr[1] ""
|
|
67
|
+
"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dni, in "
|
|
68
|
+
"sicer %(expiry_date)s."
|
|
69
|
+
msgstr[2] ""
|
|
70
|
+
"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dni, in "
|
|
71
|
+
"sicer %(expiry_date)s."
|
|
72
|
+
msgstr[3] ""
|
|
73
|
+
"Obveščamo vas, da bo vaš račun %(username)s potekel čez %(days)s dni, in "
|
|
74
|
+
"sicer %(expiry_date)s."
|
|
75
|
+
|
|
76
|
+
#: accounts/templates/account/email/account_expired_message.html:5
|
|
77
|
+
#: accounts/templates/account/email/account_expired_message.txt:4
|
|
78
|
+
#, python-format
|
|
79
|
+
msgid ""
|
|
80
|
+
"We inform you that your account %(username)s has been deactivated because it "
|
|
81
|
+
"expired on %(expiry_date)s."
|
|
82
|
+
msgstr ""
|
|
83
|
+
"Obveščamo vas, da je bil vaš račun %(username)s deaktiviran, ker je potekel "
|
|
84
|
+
"dne %(expiry_date)s."
|
|
85
|
+
|
|
86
|
+
#: accounts/templates/account/email/account_expired_message.html:11
|
|
87
|
+
#: accounts/templates/account/email/account_expired_message.txt:8
|
|
88
|
+
msgid ""
|
|
89
|
+
"Please contact your administrator if you need to reactivate your account."
|
|
90
|
+
msgstr ""
|
|
91
|
+
"Če želite ponovno aktivirati svoj račun, se obrnite na svojega "
|
|
92
|
+
"administratorja."
|
|
93
|
+
|
|
94
|
+
#: accounts/templates/account/email/email_confirmation_message.html:9
|
|
95
|
+
msgid "To confirm this is correct, please click on the button below."
|
|
96
|
+
msgstr "Če želite potrditi, da je to pravilno, kliknite spodnji gumb."
|
|
97
|
+
|
|
98
|
+
#: accounts/templates/account/email_verification_success.html:18
|
|
99
|
+
msgid "Your email has been verified successfully."
|
|
100
|
+
msgstr "Preverjanje naslova e-pošte je bilo uspešno."
|
|
101
|
+
|
|
102
|
+
#: accounts/templates/account/email_verification_success.html:19
|
|
103
|
+
#: accounts/templates/account/logout_success.html:19
|
|
104
|
+
msgid "This web page can be closed."
|
|
105
|
+
msgstr "Lahko zaprete stran."
|
|
106
|
+
|
|
107
|
+
#: accounts/templates/account/logout_success.html:18
|
|
108
|
+
msgid "Logout successful."
|
|
109
|
+
msgstr "Odjava uspešna."
|
|
110
|
+
|
|
111
|
+
#: accounts/templates/account/email/password_expiration_message.html:3
|
|
112
|
+
#: accounts/templates/account/email/password_expiration_message.txt:3
|
|
113
|
+
#, python-format
|
|
114
|
+
msgid ""
|
|
115
|
+
"We inform you that the password for your account %(username)s will expire in "
|
|
116
|
+
"7 days, precisely on %(expiry_date)s."
|
|
117
|
+
msgstr ""
|
|
118
|
+
"Obveščamo vas, da bo geslo za vaš račun %(username)s poteklo v 7 dneh, natančneje dne %(expiry_date)s."
|
|
119
|
+
|
|
120
|
+
#: accounts/templates/account/email/password_expiration_message.html:5
|
|
121
|
+
#: accounts/templates/account/email/password_expiration_message.txt:5
|
|
122
|
+
msgid ""
|
|
123
|
+
"Kindly proceed with updating your password by clicking on the button below."
|
|
124
|
+
msgstr ""
|
|
125
|
+
"Prosimo, da nadaljujete z posodabljanjem svojega gesla tako, da kliknete na spodnji gumb."
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
{% load l10n %}
|
|
3
|
+
|
|
4
|
+
<p>
|
|
5
|
+
{% blocktrans trimmed count days=days_remaining with username=username expiry_date=expiration_date|localize %}
|
|
6
|
+
We inform you that your account <strong>{{ username }}</strong> will expire in {{ days }} day on {{ expiry_date }}.
|
|
7
|
+
{% plural %}
|
|
8
|
+
We inform you that your account <strong>{{ username }}</strong> will expire in {{ days }} days on {{ expiry_date }}.
|
|
9
|
+
{% endblocktrans %}
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p>
|
|
13
|
+
{% trans "Please contact your administrator if you need to extend your access." %}
|
|
14
|
+
</p>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
{% load l10n %}
|
|
3
|
+
|
|
4
|
+
{% blocktrans trimmed count days=days_remaining with username=username expiry_date=expiration_date|localize %}
|
|
5
|
+
We inform you that your account "{{ username }}" will expire in {{ days }} day on {{ expiry_date }}.
|
|
6
|
+
{% plural %}
|
|
7
|
+
We inform you that your account "{{ username }}" will expire in {{ days }} days on {{ expiry_date }}.
|
|
8
|
+
{% endblocktrans %}
|
|
9
|
+
|
|
10
|
+
{% trans "Please contact your administrator if you need to extend your access." %}
|
openwisp_users-1.3.1/openwisp_users/accounts/templates/account/email/account_expired_message.html
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
{% load l10n %}
|
|
3
|
+
|
|
4
|
+
<p>
|
|
5
|
+
{% blocktrans trimmed with username=username expiry_date=expiration_date|localize %}
|
|
6
|
+
We inform you that your account <strong>{{ username }}</strong> has been deactivated because it expired on {{ expiry_date }}.
|
|
7
|
+
{% endblocktrans %}
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p>
|
|
11
|
+
{% trans "Please contact your administrator if you need to reactivate your account." %}
|
|
12
|
+
</p>
|
openwisp_users-1.3.1/openwisp_users/accounts/templates/account/email/account_expired_message.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
{% load l10n %}
|
|
3
|
+
|
|
4
|
+
{% blocktrans trimmed with username=username expiry_date=expiration_date|localize %}
|
|
5
|
+
We inform you that your account "{{ username }}" has been deactivated because it expired on {{ expiry_date }}.
|
|
6
|
+
{% endblocktrans %}
|
|
7
|
+
|
|
8
|
+
{% trans "Please contact your administrator if you need to reactivate your account." %}
|