openwisp-users 1.0.2__tar.gz → 1.2.0__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.0.2 → openwisp_users-1.2.0}/CHANGES.rst +180 -71
- openwisp_users-1.2.0/PKG-INFO +107 -0
- openwisp_users-1.2.0/README.rst +66 -0
- openwisp_users-1.2.0/openwisp_users/__init__.py +14 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/adapter.py +10 -9
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/locale/de/LC_MESSAGES/django.po +18 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/locale/fur/LC_MESSAGES/django.po +17 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/locale/it/LC_MESSAGES/django.po +18 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.po +17 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.po +16 -0
- openwisp_users-1.2.0/openwisp_users/accounts/static/openwisp-users/accounts/css/change-password.css +62 -0
- openwisp_users-1.2.0/openwisp_users/accounts/static/openwisp-users/accounts/css/non-admin.css +7 -0
- openwisp_users-1.2.0/openwisp_users/accounts/templates/account/email/password_expiration_message.html +6 -0
- openwisp_users-1.2.0/openwisp_users/accounts/templates/account/email/password_expiration_message.txt +6 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/email_confirm.html +1 -1
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/email_verification_success.html +1 -1
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/login.html +15 -3
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/logout_success.html +1 -1
- openwisp_users-1.2.0/openwisp_users/accounts/templates/account/password_change.html +52 -0
- openwisp_users-1.2.0/openwisp_users/accounts/templates/account/password_change_success.html +20 -0
- openwisp_users-1.2.0/openwisp_users/accounts/templates/account/password_not_required.html +21 -0
- openwisp_users-1.2.0/openwisp_users/accounts/templates/allauth/layouts/base.html +9 -0
- openwisp_users-1.2.0/openwisp_users/accounts/urls.py +88 -0
- openwisp_users-1.2.0/openwisp_users/accounts/views.py +41 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/admin.py +129 -135
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/authentication.py +6 -6
- openwisp_users-1.2.0/openwisp_users/api/filters.py +43 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/mixins.py +120 -17
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/permissions.py +25 -25
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/serializers.py +159 -134
- openwisp_users-1.2.0/openwisp_users/api/urls.py +54 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/views.py +49 -58
- openwisp_users-1.2.0/openwisp_users/apps.py +219 -0
- openwisp_users-1.2.0/openwisp_users/backends.py +41 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/base/models.py +99 -42
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/locale/de/LC_MESSAGES/django.po +8 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/locale/fur/LC_MESSAGES/django.po +8 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/locale/it/LC_MESSAGES/django.po +8 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/locale/ru/LC_MESSAGES/django.po +8 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/locale/sl/LC_MESSAGES/django.po +8 -0
- openwisp_users-1.2.0/openwisp_users/management/commands/__init__.py +0 -0
- openwisp_users-1.2.0/openwisp_users/management/commands/export_users.py +79 -0
- openwisp_users-1.2.0/openwisp_users/middleware.py +49 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0001_initial.py +108 -112
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0002_auto_20180508_2017.py +4 -5
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0003_default_organization.py +1 -2
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0004_default_groups.py +1 -2
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0005_user_phone_number.py +4 -5
- openwisp_users-1.2.0/openwisp_users/migrations/0006_id_email_index_together.py +17 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0007_unique_email.py +9 -10
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0008_update_admins_permissions.py +1 -2
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0009_create_organization_owners.py +1 -2
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0010_allow_admins_change_organization.py +1 -2
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0011_user_first_name_150_max_length.py +4 -5
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0012_user_location_max_length_256.py +4 -5
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0013_user_birth_date.py +4 -5
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0014_user_notes.py +5 -6
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0015_alter_organization_users_alter_organizationuser_user.py +9 -10
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0016_organizationinvitation.py +19 -20
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0017_user_language.py +3 -4
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/0018_allow_operator_view_organisation.py +1 -2
- openwisp_users-1.2.0/openwisp_users/migrations/0019_user_password_updated.py +19 -0
- openwisp_users-1.2.0/openwisp_users/migrations/0020_populate_password_updated_field.py +24 -0
- openwisp_users-1.2.0/openwisp_users/migrations/0021_rename_user_id_email_openwisp_us_id_06c07a_idx.py +17 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/migrations/__init__.py +41 -41
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/mixins.py +11 -11
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/models.py +5 -5
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/multitenancy.py +48 -33
- openwisp_users-1.2.0/openwisp_users/password_validation.py +21 -0
- openwisp_users-1.2.0/openwisp_users/settings.py +51 -0
- openwisp_users-1.2.0/openwisp_users/static/openwisp-users/css/admin.css +4 -0
- openwisp_users-1.2.0/openwisp_users/static/openwisp-users/css/change-password.css +26 -0
- openwisp_users-1.2.0/openwisp_users/static/openwisp-users/js/addform.js +33 -0
- openwisp_users-1.2.0/openwisp_users/static/openwisp-users/js/org-autocomplete.js +64 -0
- openwisp_users-1.2.0/openwisp_users/tasks.py +102 -0
- openwisp_users-1.2.0/openwisp_users/tests/__init__.py +0 -0
- openwisp_users-1.2.0/openwisp_users/tests/test_accounts.py +167 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/tests/test_adapter.py +11 -11
- openwisp_users-1.2.0/openwisp_users/tests/test_admin.py +2097 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/tests/test_api/__init__.py +4 -4
- openwisp_users-1.2.0/openwisp_users/tests/test_api/test_api.py +736 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/tests/test_api/test_authentication.py +18 -18
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/tests/test_api/test_throttling.py +2 -2
- openwisp_users-1.2.0/openwisp_users/tests/test_api/test_views.py +26 -0
- openwisp_users-1.2.0/openwisp_users/tests/test_backends.py +155 -0
- openwisp_users-1.2.0/openwisp_users/tests/test_commands.py +106 -0
- openwisp_users-1.2.0/openwisp_users/tests/test_middlewares.py +49 -0
- openwisp_users-1.2.0/openwisp_users/tests/test_models.py +499 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/tests/utils.py +138 -128
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/utils.py +7 -7
- openwisp_users-1.2.0/openwisp_users/views.py +47 -0
- openwisp_users-1.2.0/openwisp_users/widgets.py +28 -0
- openwisp_users-1.2.0/openwisp_users.egg-info/PKG-INFO +107 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users.egg-info/SOURCES.txt +27 -11
- openwisp_users-1.2.0/openwisp_users.egg-info/requires.txt +8 -0
- openwisp_users-1.2.0/pyproject.toml +23 -0
- openwisp_users-1.2.0/requirements.txt +8 -0
- openwisp_users-1.2.0/setup.cfg +14 -0
- openwisp_users-1.2.0/setup.py +68 -0
- openwisp-users-1.0.2/PKG-INFO +0 -1405
- openwisp-users-1.0.2/README.rst +0 -1382
- openwisp-users-1.0.2/openwisp_users/__init__.py +0 -16
- openwisp-users-1.0.2/openwisp_users/accounts/locale/de/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/accounts/locale/fur/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/accounts/locale/it/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/accounts/locale/ru/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/accounts/locale/sl/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/accounts/templates/account/base.html +0 -2
- openwisp-users-1.0.2/openwisp_users/accounts/urls.py +0 -75
- openwisp-users-1.0.2/openwisp_users/api/urls.py +0 -54
- openwisp-users-1.0.2/openwisp_users/apps.py +0 -158
- openwisp-users-1.0.2/openwisp_users/backends.py +0 -42
- openwisp-users-1.0.2/openwisp_users/locale/de/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/locale/fur/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/locale/it/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/locale/ru/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/locale/sl/LC_MESSAGES/django.mo +0 -0
- openwisp-users-1.0.2/openwisp_users/migrations/0006_id_email_index_together.py +0 -12
- openwisp-users-1.0.2/openwisp_users/settings.py +0 -14
- openwisp-users-1.0.2/openwisp_users/static/openwisp-users/css/admin.css +0 -4
- openwisp-users-1.0.2/openwisp_users/static/openwisp-users/js/addform.js +0 -33
- openwisp-users-1.0.2/openwisp_users/tests/test_admin.py +0 -1808
- openwisp-users-1.0.2/openwisp_users/tests/test_api/test_api.py +0 -691
- openwisp-users-1.0.2/openwisp_users/tests/test_api/test_views.py +0 -17
- openwisp-users-1.0.2/openwisp_users/tests/test_backends.py +0 -151
- openwisp-users-1.0.2/openwisp_users/tests/test_models.py +0 -270
- openwisp-users-1.0.2/openwisp_users.egg-info/PKG-INFO +0 -1405
- openwisp-users-1.0.2/openwisp_users.egg-info/requires.txt +0 -8
- openwisp-users-1.0.2/requirements.txt +0 -8
- openwisp-users-1.0.2/setup.cfg +0 -23
- openwisp-users-1.0.2/setup.py +0 -68
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/LICENSE +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/MANIFEST.in +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/__init__.py +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/email/base_message.txt +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/email/email_confirmation_message.html +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/email/email_confirmation_message.txt +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/accounts/templates/account/email/email_confirmation_signup_message.html +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/__init__.py +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/swagger.py +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/api/throttling.py +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/base/__init__.py +0 -0
- {openwisp-users-1.0.2/openwisp_users/tests → openwisp_users-1.2.0/openwisp_users/management}/__init__.py +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/templates/admin/action_confirmation.html +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/templates/admin/login.html +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users/templates/admin/openwisp_users/user/change_form.html +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users.egg-info/dependency_links.txt +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users.egg-info/not-zip-safe +0 -0
- {openwisp-users-1.0.2 → openwisp_users-1.2.0}/openwisp_users.egg-info/top_level.txt +0 -0
|
@@ -1,12 +1,97 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
Version 1.2.0 [2025-10-23]
|
|
5
|
+
--------------------------
|
|
6
|
+
|
|
7
|
+
Changes
|
|
8
|
+
~~~~~~~
|
|
9
|
+
|
|
10
|
+
Dependencies
|
|
11
|
+
++++++++++++
|
|
12
|
+
|
|
13
|
+
- Bumped ``django-organizations>=2.5.0,<2.6.0``.
|
|
14
|
+
- Bumped ``django-extensions>=3.2,<4.2``.
|
|
15
|
+
- Bumped ``django-allauth[socialaccount]>=65.12.0,<65.13.0``.
|
|
16
|
+
- Bumped ``django-phonenumber-field>=8.1.0,<8.2.0``.
|
|
17
|
+
- Bumped ``phonenumbers>=9.0.10,<9.1.0``.
|
|
18
|
+
- Bumped ``openwisp-utils[rest,celery]~=1.2.0``.
|
|
19
|
+
- Removed ``coveralls`` in favor of ``coverage`` package.
|
|
20
|
+
- Added support for Django ``5.x``.
|
|
21
|
+
- Dropped support for Django ``3.2.0`` and Django ``4.1.0``.
|
|
22
|
+
- Added support for Python ``3.11``, ``3.12``, and ``3.13``.
|
|
23
|
+
- Dropped support for Python ``3.8``.
|
|
24
|
+
|
|
25
|
+
Version 1.1.0 [2024-11-20]
|
|
26
|
+
--------------------------
|
|
27
|
+
|
|
28
|
+
Features
|
|
29
|
+
~~~~~~~~
|
|
30
|
+
|
|
31
|
+
- Added support for `password expiration
|
|
32
|
+
<https://openwisp.io/docs/stable/users/user/settings.html#openwisp-users-user-password-expiration>`_,
|
|
33
|
+
allowing user passwords to automatically expire after a set period.
|
|
34
|
+
- Added `multi-tenant Django filters
|
|
35
|
+
<https://openwisp.io/docs/stable/users/developer/django-rest-framework-utils.html#filtering-items-by-organization>`_.
|
|
36
|
+
- Added `MultitenantOrgFilter
|
|
37
|
+
<https://openwisp.io/docs/stable/users/developer/admin-utils.html#multitenantorgfilter>`_
|
|
38
|
+
to add autocomplete filter in ``ModelAdmin``.
|
|
39
|
+
- Added `export-users
|
|
40
|
+
<https://openwisp.io/docs/stable/users/user/management-commands.html#export-users>`_
|
|
41
|
+
command line utility to export users.
|
|
42
|
+
- Added `ProtectedApiMixin
|
|
43
|
+
<https://openwisp.io/docs/stable/users/developer/django-rest-framework-utils.html#protectedapimixin>`_.
|
|
44
|
+
- Added `PasswordReuseValidator
|
|
45
|
+
<https://openwisp.io/docs/stable/users/developer/misc-utils.html#passwordreusevalidator>`_
|
|
46
|
+
which prevents users from reusing their current password when setting a
|
|
47
|
+
new one.
|
|
48
|
+
- Allowed creating users with a verified email via REST API.
|
|
49
|
+
|
|
50
|
+
Changes
|
|
51
|
+
~~~~~~~
|
|
52
|
+
|
|
53
|
+
- Added autocomplete fields in ``OrganizationOwner`` admin.
|
|
54
|
+
- Enabled ``OrganizationUserAdmin`` by default.
|
|
55
|
+
|
|
56
|
+
**Dependencies**:
|
|
57
|
+
|
|
58
|
+
- Bumped ``django-organizations~=2.4.1``.
|
|
59
|
+
- Bumped ``django-extensions~=3.2.3``.
|
|
60
|
+
- Bumped ``django-allauth[socialaccount]~=0.63.6``.
|
|
61
|
+
- Bumped ``django-phonenumber-field~=8.13.48``.
|
|
62
|
+
- Bumped ``django-reversion~=5.1.0``.
|
|
63
|
+
- Bumped ``phonenumbers~=8.13.48``.
|
|
64
|
+
- Bumped ``django-sesame~=3.2.2``.
|
|
65
|
+
- Bumped ``openwisp-utils[rest,celery]~=1.1.1``.
|
|
66
|
+
- Added support for Django ``4.1.x`` and ``4.2.x``.
|
|
67
|
+
- Added support for Python ``3.10``.
|
|
68
|
+
- Dropped support for Python ``3.7``.
|
|
69
|
+
- Dropped support for Django ``3.0.x`` and ``3.1.x``.
|
|
70
|
+
|
|
71
|
+
Bugfixes
|
|
72
|
+
~~~~~~~~
|
|
73
|
+
|
|
74
|
+
- User need to have required model permissions to perform admin actions.
|
|
75
|
+
- Don't allow organization admin to create shared object.
|
|
76
|
+
- Fixed user's organization cache invalidation.
|
|
77
|
+
- Invalidate org membership cache when organization's active status
|
|
78
|
+
changes.
|
|
79
|
+
- Fixed an issue where the organization admin would see multiple entries
|
|
80
|
+
for the same user in the user changelist.
|
|
81
|
+
- Fixed admin unregistration failures for ``EmailAddress`` and
|
|
82
|
+
``TokenProxy`` models.
|
|
83
|
+
- Fixed an ``IntegrityError`` that occurred when adding the first user to
|
|
84
|
+
an organization via ``Organization.add_user``.
|
|
85
|
+
- Fixed `UsersAuthenticationBackend
|
|
86
|
+
<https://openwisp.io/docs/stable/users/developer/misc-utils.html#usersauthenticationbackend>`_
|
|
87
|
+
to support phone numbers with leading zero.
|
|
88
|
+
- Prevented users registered via social login from setting a password.
|
|
89
|
+
|
|
4
90
|
Version 1.0.2 [2022-06-28]
|
|
5
91
|
--------------------------
|
|
6
92
|
|
|
7
|
-
- Bumped django-all-auth from 0.46.0 to 0.51.0
|
|
8
|
-
|
|
9
|
-
of django-all-auth for more information
|
|
93
|
+
- Bumped django-all-auth from 0.46.0 to 0.51.0 to fix mild security issues
|
|
94
|
+
(see the `change log of django-all-auth for more information
|
|
10
95
|
<https://github.com/pennersr/django-allauth/blob/master/ChangeLog.rst>`_)
|
|
11
96
|
- The ``@classmethod`` decorator was mistakenly forgotten and hence
|
|
12
97
|
missing from the following methods of
|
|
@@ -14,8 +99,9 @@ Version 1.0.2 [2022-06-28]
|
|
|
14
99
|
|
|
15
100
|
- ``update_organizations_dict``
|
|
16
101
|
- ``create_organization_owner``
|
|
17
|
-
|
|
18
|
-
|
|
102
|
+
|
|
103
|
+
- Fixed a broken example in the DRF Permission Classes section of the
|
|
104
|
+
documentation
|
|
19
105
|
|
|
20
106
|
Version 1.0.1 [2022-05-24]
|
|
21
107
|
--------------------------
|
|
@@ -30,9 +116,10 @@ Features
|
|
|
30
116
|
|
|
31
117
|
- Added `UsersAuthenticationBackend class
|
|
32
118
|
<https://github.com/openwisp/openwisp-users#authentication-backend>`_
|
|
33
|
-
that allows users to authenticate using either email, phone_number or
|
|
34
|
-
|
|
35
|
-
|
|
119
|
+
that allows users to authenticate using either email, phone_number or
|
|
120
|
+
username.
|
|
121
|
+
- Added the possibility to filter users by their organization in the user
|
|
122
|
+
administration section.
|
|
36
123
|
- Added `REST API endpoints for openwisp-users
|
|
37
124
|
<https://github.com/openwisp/openwisp-users#list-of-endpoints>`_.
|
|
38
125
|
- Added various `Django REST Framework mixins and utilities
|
|
@@ -63,19 +150,19 @@ Changes
|
|
|
63
150
|
- Added `User.language field
|
|
64
151
|
<https://github.com/openwisp/openwisp-users/issues/261>`_.
|
|
65
152
|
- Made `User.email case insensitive
|
|
66
|
-
<https://github.com/openwisp/openwisp-users/issues/227>`_.
|
|
67
|
-
|
|
68
|
-
|
|
153
|
+
<https://github.com/openwisp/openwisp-users/issues/227>`_. Email
|
|
154
|
+
addresses will always get converted to lower case before storage and
|
|
155
|
+
comparison.
|
|
69
156
|
|
|
70
157
|
- Updated ``OrganizationOwnerInline`` to use ``raw_id`` field for
|
|
71
158
|
``organization_user`` field.
|
|
72
|
-
- Updated ``OrganizationUserInline`` to use ``autocomplete`` field
|
|
73
|
-
|
|
159
|
+
- Updated ``OrganizationUserInline`` to use ``autocomplete`` field for
|
|
160
|
+
``organization`` field.
|
|
74
161
|
- **Backward incompatible:** removed `custom permission helpers
|
|
75
162
|
<https://github.com/openwisp/openwisp-users/issues/266>`_.
|
|
76
163
|
- **Backward incompatible:** the REST API endpoint ``/api/v1/user/token/``
|
|
77
|
-
has been changed to ``/api/v1/users/token/`` for consistency
|
|
78
|
-
|
|
164
|
+
has been changed to ``/api/v1/users/token/`` for consistency with the
|
|
165
|
+
rest of the API.
|
|
79
166
|
|
|
80
167
|
**Dependencies**:
|
|
81
168
|
|
|
@@ -94,14 +181,14 @@ Bugfixes
|
|
|
94
181
|
~~~~~~~~
|
|
95
182
|
|
|
96
183
|
- Fixed `internal server error on "/accounts/login/" page
|
|
97
|
-
<https://github.com/openwisp/openwisp-users/issues/218>`_
|
|
98
|
-
|
|
184
|
+
<https://github.com/openwisp/openwisp-users/issues/218>`_ when the
|
|
185
|
+
social account app is disabled.
|
|
99
186
|
- Fixed `error on restoring "Group" object with django-reversion
|
|
100
187
|
<https://github.com/openwisp/openwisp-users/issues/214>`_.
|
|
101
188
|
- Fixed `error on visiting Django admin URL for non-existing users
|
|
102
189
|
<https://github.com/openwisp/openwisp-users/issues/228>`_.
|
|
103
|
-
- Fixed `organization managers could escalate their privileges to
|
|
104
|
-
<https://github.com/openwisp/openwisp-users/issues/284>`_.
|
|
190
|
+
- Fixed `organization managers could escalate their privileges to
|
|
191
|
+
superuser <https://github.com/openwisp/openwisp-users/issues/284>`_.
|
|
105
192
|
|
|
106
193
|
Version 0.5.1 [2020-12-13]
|
|
107
194
|
--------------------------
|
|
@@ -110,15 +197,16 @@ Changes
|
|
|
110
197
|
~~~~~~~
|
|
111
198
|
|
|
112
199
|
- Updated django-allauth to 0.44.x
|
|
113
|
-
- Copied the template ``account/login.html`` from django-allauth
|
|
114
|
-
|
|
200
|
+
- Copied the template ``account/login.html`` from django-allauth in order
|
|
201
|
+
to remove the sign up link, which we do not support
|
|
115
202
|
- Updated django-extensions to 3.1
|
|
116
203
|
|
|
117
204
|
Bugfixes
|
|
118
205
|
~~~~~~~~
|
|
119
206
|
|
|
120
207
|
- Updating django-allauth to 0.44.x also fixes an `issue affecting
|
|
121
|
-
OpenWISP Users in production deployment (experienced in
|
|
208
|
+
OpenWISP Users in production deployment (experienced in
|
|
209
|
+
ansible-openwisp2)
|
|
122
210
|
<https://github.com/openwisp/ansible-openwisp2/issues/233>`_
|
|
123
211
|
|
|
124
212
|
Version 0.5.0 [2020-11-18]
|
|
@@ -133,9 +221,10 @@ Changes
|
|
|
133
221
|
~~~~~~~
|
|
134
222
|
|
|
135
223
|
- [change] Extend ``admin/base_site.html`` in ``confirm_email.html``
|
|
136
|
-
- [change] Updated to openwisp-utils 0.7 and switched to new
|
|
137
|
-
|
|
138
|
-
|
|
224
|
+
- [change] Updated to openwisp-utils 0.7 and switched to new
|
|
225
|
+
``register_menu_items``
|
|
226
|
+
- [change] Removed typographic error in settings which was maintained for
|
|
227
|
+
backward compatibility
|
|
139
228
|
- [change] Removed deprecated ``organizations_pk``
|
|
140
229
|
|
|
141
230
|
Bugfixes
|
|
@@ -148,8 +237,9 @@ Bugfixes
|
|
|
148
237
|
Version 0.4.1 [2020-10-08]
|
|
149
238
|
--------------------------
|
|
150
239
|
|
|
151
|
-
- [chores] Allow passing a string or uuid to the
|
|
152
|
-
|
|
240
|
+
- [chores] Allow passing a string or uuid to the `Organization membership
|
|
241
|
+
helpers
|
|
242
|
+
<https://github.com/openwisp/openwisp-users#organization-membership-helpers>`_
|
|
153
243
|
- [fix] The ``OrganizationUser`` instance of an ``OrganizationOwner``
|
|
154
244
|
won't be allowed to be ``is_admin=False``
|
|
155
245
|
- [fix] Fixed mutable class attribute in MultitenantAdminMixin
|
|
@@ -162,26 +252,28 @@ Version 0.4.0 [2020-08-23]
|
|
|
162
252
|
Features
|
|
163
253
|
~~~~~~~~
|
|
164
254
|
|
|
165
|
-
- [models] Added `organizations_managed
|
|
166
|
-
|
|
255
|
+
- [models] Added `organizations_managed
|
|
256
|
+
<https://github.com/openwisp/openwisp-users#organizations-managed>`_
|
|
257
|
+
helper
|
|
258
|
+
- [models] Added `organizations_owned
|
|
259
|
+
<https://github.com/openwisp/openwisp-users#organizations-owned>`_
|
|
260
|
+
helper
|
|
167
261
|
|
|
168
262
|
Changes
|
|
169
263
|
~~~~~~~
|
|
170
264
|
|
|
171
|
-
- [admin]: **Potentially backward incompatible change**:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
is
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
able to change also items of other organizations where
|
|
184
|
-
they are only members and not managers.
|
|
265
|
+
- [admin]: **Potentially backward incompatible change**: Multi-tenant
|
|
266
|
+
admin classes now allow only org managers. Before this version, a user
|
|
267
|
+
needed to be only org member to see items of that organization in the
|
|
268
|
+
admin, but this is wrong! An ``OrganizationUser`` which has
|
|
269
|
+
``is_admin=False`` is only an end-user of that organization. Instead, an
|
|
270
|
+
``OrganizationUser`` which has ``is_admin=True`` is also a manager and
|
|
271
|
+
only this type of user shall be allowed to manage items of the
|
|
272
|
+
organization through the django admin site. This is needed in order to
|
|
273
|
+
support users being simple end-users in one organization but
|
|
274
|
+
administrators in others, otherwise a staff user who is administrator of
|
|
275
|
+
one organization would be able to change also items of other
|
|
276
|
+
organizations where they are only members and not managers.
|
|
185
277
|
- [dependencies] Added support for django 3.1
|
|
186
278
|
- [dependencies] django-phonenumber-field 5.0
|
|
187
279
|
|
|
@@ -189,7 +281,8 @@ Version 0.3.1 [2020-08-17]
|
|
|
189
281
|
--------------------------
|
|
190
282
|
|
|
191
283
|
- [deps] Updated openwisp-utils to 0.6.0
|
|
192
|
-
- [test] Added functions to add inline fields in extended app's
|
|
284
|
+
- [test] Added functions to add inline fields in extended app's
|
|
285
|
+
integration testing
|
|
193
286
|
|
|
194
287
|
Version 0.3.0 [2020-08-14]
|
|
195
288
|
--------------------------
|
|
@@ -197,21 +290,34 @@ Version 0.3.0 [2020-08-14]
|
|
|
197
290
|
Features
|
|
198
291
|
~~~~~~~~
|
|
199
292
|
|
|
200
|
-
- [models] Added `swappable models and extensible classes
|
|
201
|
-
|
|
293
|
+
- [models] Added `swappable models and extensible classes
|
|
294
|
+
<https://github.com/openwisp/openwisp-users#extend-openwisp-users>`_
|
|
295
|
+
- [admin] Added support for `organization owners
|
|
296
|
+
<https://github.com/openwisp/openwisp-users#organization-owners>`_
|
|
202
297
|
- [admin] Added default owner to each organization
|
|
203
|
-
- [api] Added `ObtainTokenView REST API endpoint
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
- [
|
|
207
|
-
|
|
298
|
+
- [api] Added `ObtainTokenView REST API endpoint
|
|
299
|
+
<https://github.com/openwisp/openwisp-users#obtain-authentication-token>`_
|
|
300
|
+
for bearer authentication
|
|
301
|
+
- [api] Added `OPENWISP_USERS_AUTH_API
|
|
302
|
+
<https://github.com/openwisp/openwisp-users#openwisp-users-auth-api>`_
|
|
303
|
+
and `OPENWISP_USERS_AUTH_THROTTLE_RATE
|
|
304
|
+
<https://github.com/openwisp/openwisp-users#openwisp-users-auth-throttle-rate>`_
|
|
305
|
+
settings
|
|
306
|
+
- [api] Added `Django REST Framework permission classes
|
|
307
|
+
<https://github.com/openwisp/openwisp-users#django-rest-framework-permission-classes>`_
|
|
308
|
+
- [models] Added `Organization membership helpers
|
|
309
|
+
<https://github.com/openwisp/openwisp-users#organization-membership-helpers>`_
|
|
310
|
+
- [models] Added `User permission helpers
|
|
311
|
+
<https://github.com/openwisp/openwisp-users#permissions-helpers>`_
|
|
208
312
|
|
|
209
313
|
Changes
|
|
210
314
|
~~~~~~~
|
|
211
315
|
|
|
212
|
-
- Enabled `organization owner admin
|
|
213
|
-
-
|
|
214
|
-
|
|
316
|
+
- Enabled `organization owner admin
|
|
317
|
+
<https://github.com/openwisp/openwisp-users#openwisp-organization-owner-admin>`_
|
|
318
|
+
by default
|
|
319
|
+
- [dependencies] Upgraded ``django-allauth 0.42.0``, ``django-extensions
|
|
320
|
+
3.0.2``, ``openwisp-utils 0.5[rest]`` and ``phonenumbers 8.12.0``
|
|
215
321
|
|
|
216
322
|
Bugfixes
|
|
217
323
|
~~~~~~~~
|
|
@@ -222,8 +328,8 @@ Bugfixes
|
|
|
222
328
|
Version 0.2.2 [2020-05-04]
|
|
223
329
|
--------------------------
|
|
224
330
|
|
|
225
|
-
- [admin] Fixed regression that caused superusers to
|
|
226
|
-
|
|
331
|
+
- [admin] Fixed regression that caused superusers to not be able to delete
|
|
332
|
+
regular users
|
|
227
333
|
- [admin] Do not de-register socialaccount if not enabled
|
|
228
334
|
|
|
229
335
|
Version 0.2.1 [2020-04-07]
|
|
@@ -234,9 +340,10 @@ Version 0.2.1 [2020-04-07]
|
|
|
234
340
|
- [admin] Show latest items first in "recovery deleted <object>" pages
|
|
235
341
|
|
|
236
342
|
Version 0.2.0 [2020-01-17]
|
|
237
|
-
|
|
343
|
+
--------------------------
|
|
238
344
|
|
|
239
|
-
- [dependencies] Added support for django 3.0, dropped support for django
|
|
345
|
+
- [dependencies] Added support for django 3.0, dropped support for django
|
|
346
|
+
< 2.1
|
|
240
347
|
- [python] Dropped support for python 2.7
|
|
241
348
|
|
|
242
349
|
Version 0.1.12 [2019-12-20]
|
|
@@ -251,14 +358,16 @@ Version 0.1.11 [2019-12-13]
|
|
|
251
358
|
- [admin] Allow adding organization in user creation form
|
|
252
359
|
- [admin] ``UserCreationForm`` encourages to select the organization
|
|
253
360
|
- [admin] Non-superusers now can manage the users of their organization
|
|
254
|
-
- [admin] Made ``OrganizationOwner`` and ``OrganizationUser`` admins
|
|
361
|
+
- [admin] Made ``OrganizationOwner`` and ``OrganizationUser`` admins
|
|
362
|
+
multi-tenant
|
|
255
363
|
- [admin] Disabled ``OrganizationOwnerAdmin`` by default
|
|
256
364
|
- [admin] Disabled ``OrganizationUserAdmin`` by default
|
|
257
365
|
- [admin] Disabled ``view_on_site`` for ``OrganizationUserInline``
|
|
258
366
|
- [admin] Added menu items
|
|
259
367
|
- [admin] Avoid 500 error in case of SMTP error when adding a new user
|
|
260
368
|
- [urls] Added social login views URLs
|
|
261
|
-
- [mixins] Moved ``MultitenantAdminMixin`` from openwisp-utils to
|
|
369
|
+
- [mixins] Moved ``MultitenantAdminMixin`` from openwisp-utils to
|
|
370
|
+
openwisp-users
|
|
262
371
|
- [models] Add possibility to validate inverse relations
|
|
263
372
|
- [model] Added phone_number field to User
|
|
264
373
|
- [models] Add unique constraint on user.email
|
|
@@ -268,20 +377,20 @@ Version 0.1.11 [2019-12-13]
|
|
|
268
377
|
Version 0.1.10 [2018-08-01]
|
|
269
378
|
---------------------------
|
|
270
379
|
|
|
271
|
-
- `#26 <https://github.com/openwisp/openwisp-users/pull/26>`_:
|
|
272
|
-
|
|
273
|
-
|
|
380
|
+
- `#26 <https://github.com/openwisp/openwisp-users/pull/26>`_: [admin]
|
|
381
|
+
Fixed Integrity error if trying to change email that exists (thanks to
|
|
382
|
+
`@R9295 <https://github.com/R9295>`_)
|
|
274
383
|
- `#27 <https://github.com/openwisp/openwisp-users/issues/27>`_:
|
|
275
384
|
[requirements] Added support for django 2.1 rc
|
|
276
385
|
|
|
277
386
|
Version 0.1.9 [2018-07-27]
|
|
278
387
|
--------------------------
|
|
279
388
|
|
|
280
|
-
- `#25 <https://github.com/openwisp/openwisp-users/pull/25>`_:
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
- `#20 <https://github.com/openwisp/openwisp-users/issues/20>`_:
|
|
284
|
-
|
|
389
|
+
- `#25 <https://github.com/openwisp/openwisp-users/pull/25>`_: [docs]
|
|
390
|
+
Updated setup instructions in README (thanks to `@AlmogCohen
|
|
391
|
+
<https://github.com/AlmogCohen>`_)
|
|
392
|
+
- `#20 <https://github.com/openwisp/openwisp-users/issues/20>`_: [tests]
|
|
393
|
+
Fixed pending migration check
|
|
285
394
|
- [requirements] Updated dependencies
|
|
286
395
|
|
|
287
396
|
Version 0.1.8 [2018-02-19]
|
|
@@ -303,9 +412,9 @@ Version 0.1.6 [2017-12-02]
|
|
|
303
412
|
Version 0.1.5 [2017-08-29]
|
|
304
413
|
--------------------------
|
|
305
414
|
|
|
306
|
-
- `#3 <https://github.com/openwisp/openwisp-users/issues/3>`_:
|
|
307
|
-
|
|
308
|
-
|
|
415
|
+
- `#3 <https://github.com/openwisp/openwisp-users/issues/3>`_: [admin]
|
|
416
|
+
Allow operators to manage users without being able to change superuser
|
|
417
|
+
related details
|
|
309
418
|
- `31b13bb <https://github.com/openwisp/openwisp-users/commit/31b13bb>`_:
|
|
310
419
|
[requirements] Updated django-allauth to 0.33.0
|
|
311
420
|
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: openwisp-users
|
|
3
|
+
Version: 1.2.0
|
|
4
|
+
Summary: Provides basic multi-tenancy features for OpenWISP (using the Django web-framework)
|
|
5
|
+
Home-page: http://openwisp.org
|
|
6
|
+
Download-URL: https://github.com/openwisp/openwisp-users/releases
|
|
7
|
+
Author: OpenWISP
|
|
8
|
+
Author-email: support@openwisp.io
|
|
9
|
+
License: BSD
|
|
10
|
+
Keywords: openwisp,django,organizations,users
|
|
11
|
+
Platform: Platform Independent
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Web Environment
|
|
14
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Framework :: Django
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: django-organizations<2.6.0,>=2.5.0
|
|
22
|
+
Requires-Dist: django-extensions<4.2,>=3.2
|
|
23
|
+
Requires-Dist: django-allauth[socialaccount]<65.13.0,>=65.12.0
|
|
24
|
+
Requires-Dist: django-phonenumber-field<8.2.0,>=8.1.0
|
|
25
|
+
Requires-Dist: phonenumbers<9.1.0,>=9.0.10
|
|
26
|
+
Requires-Dist: openwisp-utils[celery,rest]~=1.2.0
|
|
27
|
+
Requires-Dist: packaging
|
|
28
|
+
Requires-Dist: django-sesame<3.3.0,>=3.2.3
|
|
29
|
+
Dynamic: author
|
|
30
|
+
Dynamic: author-email
|
|
31
|
+
Dynamic: classifier
|
|
32
|
+
Dynamic: description
|
|
33
|
+
Dynamic: download-url
|
|
34
|
+
Dynamic: home-page
|
|
35
|
+
Dynamic: keywords
|
|
36
|
+
Dynamic: license
|
|
37
|
+
Dynamic: license-file
|
|
38
|
+
Dynamic: platform
|
|
39
|
+
Dynamic: requires-dist
|
|
40
|
+
Dynamic: summary
|
|
41
|
+
|
|
42
|
+
openwisp-users
|
|
43
|
+
==============
|
|
44
|
+
|
|
45
|
+
.. image:: https://github.com/openwisp/openwisp-users/workflows/OpenWISP%20Users%20CI%20Build/badge.svg?branch=master
|
|
46
|
+
:target: https://github.com/openwisp/openwisp-users/actions?query=workflow%3A%22OpenWISP+Users+CI+Build%22
|
|
47
|
+
|
|
48
|
+
.. image:: https://coveralls.io/repos/openwisp/openwisp-users/badge.svg
|
|
49
|
+
:target: https://coveralls.io/r/openwisp/openwisp-users
|
|
50
|
+
|
|
51
|
+
.. image:: https://img.shields.io/librariesio/release/github/openwisp/openwisp-users
|
|
52
|
+
:target: https://libraries.io/github/openwisp/openwisp-users#repository_dependencies
|
|
53
|
+
:alt: Dependency monitoring
|
|
54
|
+
|
|
55
|
+
.. image:: https://badge.fury.io/py/openwisp-users.svg
|
|
56
|
+
:target: http://badge.fury.io/py/openwisp-users
|
|
57
|
+
|
|
58
|
+
.. image:: https://pepy.tech/badge/openwisp-users
|
|
59
|
+
:target: https://pepy.tech/project/openwisp-users
|
|
60
|
+
:alt: downloads
|
|
61
|
+
|
|
62
|
+
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
63
|
+
:target: https://pypi.org/project/black/
|
|
64
|
+
:alt: code style: black
|
|
65
|
+
|
|
66
|
+
----
|
|
67
|
+
|
|
68
|
+
Implementation of user management and multi-tenancy for OpenWISP (built
|
|
69
|
+
with python & django).
|
|
70
|
+
|
|
71
|
+
**Need a quick overview?** `Try the OpenWISP Demo
|
|
72
|
+
<https://openwisp.org/demo.html>`_.
|
|
73
|
+
|
|
74
|
+
.. image:: https://raw.githubusercontent.com/openwisp/openwisp2-docs/master/assets/design/openwisp-logo-black.svg
|
|
75
|
+
:target: http://openwisp.org
|
|
76
|
+
|
|
77
|
+
----
|
|
78
|
+
|
|
79
|
+
Documentation
|
|
80
|
+
-------------
|
|
81
|
+
|
|
82
|
+
- `Usage documentation <https://openwisp.io/docs/stable/users/>`_
|
|
83
|
+
- `Developer documentation
|
|
84
|
+
<https://openwisp.io/docs/stable/users/developer/>`_
|
|
85
|
+
|
|
86
|
+
Contributing
|
|
87
|
+
------------
|
|
88
|
+
|
|
89
|
+
Please refer to the `OpenWISP contributing guidelines
|
|
90
|
+
<http://openwisp.io/docs/developer/contributing.html>`_.
|
|
91
|
+
|
|
92
|
+
Support
|
|
93
|
+
-------
|
|
94
|
+
|
|
95
|
+
See `OpenWISP Support Channels <http://openwisp.org/support.html>`_.
|
|
96
|
+
|
|
97
|
+
Changelog
|
|
98
|
+
---------
|
|
99
|
+
|
|
100
|
+
See `CHANGES
|
|
101
|
+
<https://github.com/openwisp/openwisp-users/blob/master/CHANGES.rst>`_.
|
|
102
|
+
|
|
103
|
+
License
|
|
104
|
+
-------
|
|
105
|
+
|
|
106
|
+
See `LICENSE
|
|
107
|
+
<https://github.com/openwisp/openwisp-users/blob/master/LICENSE>`_.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
openwisp-users
|
|
2
|
+
==============
|
|
3
|
+
|
|
4
|
+
.. image:: https://github.com/openwisp/openwisp-users/workflows/OpenWISP%20Users%20CI%20Build/badge.svg?branch=master
|
|
5
|
+
:target: https://github.com/openwisp/openwisp-users/actions?query=workflow%3A%22OpenWISP+Users+CI+Build%22
|
|
6
|
+
|
|
7
|
+
.. image:: https://coveralls.io/repos/openwisp/openwisp-users/badge.svg
|
|
8
|
+
:target: https://coveralls.io/r/openwisp/openwisp-users
|
|
9
|
+
|
|
10
|
+
.. image:: https://img.shields.io/librariesio/release/github/openwisp/openwisp-users
|
|
11
|
+
:target: https://libraries.io/github/openwisp/openwisp-users#repository_dependencies
|
|
12
|
+
:alt: Dependency monitoring
|
|
13
|
+
|
|
14
|
+
.. image:: https://badge.fury.io/py/openwisp-users.svg
|
|
15
|
+
:target: http://badge.fury.io/py/openwisp-users
|
|
16
|
+
|
|
17
|
+
.. image:: https://pepy.tech/badge/openwisp-users
|
|
18
|
+
:target: https://pepy.tech/project/openwisp-users
|
|
19
|
+
:alt: downloads
|
|
20
|
+
|
|
21
|
+
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
22
|
+
:target: https://pypi.org/project/black/
|
|
23
|
+
:alt: code style: black
|
|
24
|
+
|
|
25
|
+
----
|
|
26
|
+
|
|
27
|
+
Implementation of user management and multi-tenancy for OpenWISP (built
|
|
28
|
+
with python & django).
|
|
29
|
+
|
|
30
|
+
**Need a quick overview?** `Try the OpenWISP Demo
|
|
31
|
+
<https://openwisp.org/demo.html>`_.
|
|
32
|
+
|
|
33
|
+
.. image:: https://raw.githubusercontent.com/openwisp/openwisp2-docs/master/assets/design/openwisp-logo-black.svg
|
|
34
|
+
:target: http://openwisp.org
|
|
35
|
+
|
|
36
|
+
----
|
|
37
|
+
|
|
38
|
+
Documentation
|
|
39
|
+
-------------
|
|
40
|
+
|
|
41
|
+
- `Usage documentation <https://openwisp.io/docs/stable/users/>`_
|
|
42
|
+
- `Developer documentation
|
|
43
|
+
<https://openwisp.io/docs/stable/users/developer/>`_
|
|
44
|
+
|
|
45
|
+
Contributing
|
|
46
|
+
------------
|
|
47
|
+
|
|
48
|
+
Please refer to the `OpenWISP contributing guidelines
|
|
49
|
+
<http://openwisp.io/docs/developer/contributing.html>`_.
|
|
50
|
+
|
|
51
|
+
Support
|
|
52
|
+
-------
|
|
53
|
+
|
|
54
|
+
See `OpenWISP Support Channels <http://openwisp.org/support.html>`_.
|
|
55
|
+
|
|
56
|
+
Changelog
|
|
57
|
+
---------
|
|
58
|
+
|
|
59
|
+
See `CHANGES
|
|
60
|
+
<https://github.com/openwisp/openwisp-users/blob/master/CHANGES.rst>`_.
|
|
61
|
+
|
|
62
|
+
License
|
|
63
|
+
-------
|
|
64
|
+
|
|
65
|
+
See `LICENSE
|
|
66
|
+
<https://github.com/openwisp/openwisp-users/blob/master/LICENSE>`_.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
VERSION = (1, 2, 0, "final")
|
|
2
|
+
__version__ = VERSION # alias
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def get_version():
|
|
6
|
+
version = "%s.%s.%s" % (VERSION[0], VERSION[1], VERSION[2])
|
|
7
|
+
if VERSION[3] != "final":
|
|
8
|
+
first_letter = VERSION[3][0:1]
|
|
9
|
+
try:
|
|
10
|
+
suffix = VERSION[4]
|
|
11
|
+
except IndexError:
|
|
12
|
+
suffix = 0
|
|
13
|
+
version = "%s%s%s" % (version, first_letter, suffix)
|
|
14
|
+
return version
|
|
@@ -2,6 +2,7 @@ from allauth.account.adapter import DefaultAccountAdapter
|
|
|
2
2
|
from django.template import TemplateDoesNotExist
|
|
3
3
|
from django.template.loader import render_to_string
|
|
4
4
|
from django.utils.translation import gettext as _
|
|
5
|
+
|
|
5
6
|
from openwisp_utils.admin_theme.email import send_email
|
|
6
7
|
|
|
7
8
|
|
|
@@ -12,21 +13,21 @@ class EmailAdapter(DefaultAccountAdapter):
|
|
|
12
13
|
subject = self.format_email_subject(subject)
|
|
13
14
|
content = {}
|
|
14
15
|
errors = {}
|
|
15
|
-
for ext in [
|
|
16
|
-
template_name =
|
|
17
|
-
if
|
|
18
|
-
context[
|
|
19
|
-
context[
|
|
16
|
+
for ext in ["html", "txt"]:
|
|
17
|
+
template_name = "{0}_message.{1}".format(template_prefix, ext)
|
|
18
|
+
if "activate_url" in context:
|
|
19
|
+
context["call_to_action_url"] = context["activate_url"]
|
|
20
|
+
context["call_to_action_text"] = _("Confirm")
|
|
20
21
|
try:
|
|
21
|
-
template_name =
|
|
22
|
+
template_name = "{0}_message.{1}".format(template_prefix, ext)
|
|
22
23
|
content[ext] = render_to_string(
|
|
23
24
|
template_name, context, self.request
|
|
24
25
|
).strip()
|
|
25
26
|
except TemplateDoesNotExist as e:
|
|
26
27
|
errors[ext] = e
|
|
27
|
-
text = content.get(
|
|
28
|
-
html = content.get(
|
|
28
|
+
text = content.get("txt", "")
|
|
29
|
+
html = content.get("html", "")
|
|
29
30
|
# both templates fail to load, raise the exception
|
|
30
31
|
if len(errors.keys()) >= 2:
|
|
31
|
-
raise errors[
|
|
32
|
+
raise errors["txt"] from errors["html"]
|
|
32
33
|
send_email(subject, text, html, [email], context)
|
|
@@ -40,3 +40,21 @@ msgstr "Die Seite kann geschlossen werden."
|
|
|
40
40
|
#: accounts/templates/account/logout_success.html:18
|
|
41
41
|
msgid "Logout successful."
|
|
42
42
|
msgstr "Sie wurden erfolgreich abgemeldet."
|
|
43
|
+
|
|
44
|
+
#: accounts/templates/account/email/password_expiration_message.html:3
|
|
45
|
+
#: accounts/templates/account/email/password_expiration_message.txt:3
|
|
46
|
+
#, python-format
|
|
47
|
+
msgid ""
|
|
48
|
+
"We inform you that the password for your account %(username)s will expire in "
|
|
49
|
+
"7 days, precisely on %(expiry_date)s."
|
|
50
|
+
msgstr ""
|
|
51
|
+
"Wir informieren Sie darüber, dass das Passwort für Ihr Konto %(username)s in "
|
|
52
|
+
"7 Tagen abläuft, genau am %(expiry_date)s."
|
|
53
|
+
|
|
54
|
+
#: accounts/templates/account/email/password_expiration_message.html:5
|
|
55
|
+
#: accounts/templates/account/email/password_expiration_message.txt:5
|
|
56
|
+
msgid ""
|
|
57
|
+
"Kindly proceed with updating your password by clicking on the button below."
|
|
58
|
+
msgstr ""
|
|
59
|
+
"Bitte aktualisieren Sie Ihr Passwort, indem Sie auf die Schaltfläche unten "
|
|
60
|
+
"klicken."
|