wbcore 1.59.16__py2.py3-none-any.whl → 1.60.1__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/admin.py +0 -1
- wbcore/configurations/configurations/apps.py +1 -0
- wbcore/contrib/agenda/locale/de/LC_MESSAGES/django.po +17 -18
- wbcore/contrib/agenda/locale/en/LC_MESSAGES/django.po +17 -17
- wbcore/contrib/agenda/locale/fr/LC_MESSAGES/django.po +17 -18
- wbcore/contrib/agenda/models/calendar_item.py +9 -0
- wbcore/contrib/authentication/authentication.py +1 -3
- wbcore/contrib/authentication/configurations.py +0 -1
- wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po +47 -48
- wbcore/contrib/authentication/locale/en/LC_MESSAGES/django.po +47 -47
- wbcore/contrib/authentication/locale/fr/LC_MESSAGES/django.po +47 -48
- wbcore/contrib/authentication/models/users.py +18 -0
- wbcore/contrib/color/admin.py +1 -0
- wbcore/contrib/color/factories.py +1 -0
- wbcore/contrib/content_type/__init__.py +0 -0
- wbcore/contrib/content_type/apps.py +5 -0
- wbcore/{filters/fields/content_type.py → contrib/content_type/filters.py} +18 -0
- wbcore/{content_type → contrib/content_type}/serializers.py +2 -2
- wbcore/contrib/content_type/urls.py +15 -0
- wbcore/contrib/directory/factories/contacts.py +1 -0
- wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po +307 -271
- wbcore/contrib/directory/locale/en/LC_MESSAGES/django.po +305 -268
- wbcore/contrib/directory/locale/fr/LC_MESSAGES/django.po +305 -269
- wbcore/contrib/directory/migrations/0015_alter_emailcontact_address_and_more.py +47 -0
- wbcore/contrib/directory/models/contacts.py +15 -22
- wbcore/contrib/directory/models/entries.py +82 -2
- wbcore/contrib/directory/models/relationships.py +5 -9
- wbcore/contrib/directory/tests/test_models.py +5 -3
- wbcore/contrib/directory/viewsets/endpoints/__init__.py +2 -0
- wbcore/contrib/directory/viewsets/endpoints/entries.py +10 -0
- wbcore/contrib/directory/viewsets/entries.py +9 -2
- wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po +26 -23
- wbcore/contrib/documents/locale/en/LC_MESSAGES/django.po +26 -22
- wbcore/contrib/documents/locale/fr/LC_MESSAGES/django.po +26 -23
- wbcore/contrib/documents/serializers/document_model_relationships.py +1 -1
- wbcore/contrib/documents/viewsets/documents.py +1 -1
- wbcore/contrib/guardian/__init__.py +0 -0
- wbcore/contrib/guardian/filters.py +1 -0
- wbcore/contrib/guardian/models/mixins.py +1 -0
- wbcore/contrib/guardian/tasks.py +1 -0
- wbcore/contrib/guardian/tests/test_model_mixins.py +1 -0
- wbcore/contrib/guardian/tests/test_tasks.py +1 -0
- wbcore/contrib/guardian/tests/test_utils.py +1 -0
- wbcore/contrib/guardian/tests/test_viewsets.py +1 -0
- wbcore/contrib/guardian/urls.py +1 -0
- wbcore/contrib/guardian/utils.py +1 -0
- wbcore/contrib/guardian/viewsets/configs/buttons.py +1 -0
- wbcore/contrib/guardian/viewsets/configs/endpoints.py +1 -0
- wbcore/contrib/guardian/viewsets/viewsets.py +1 -0
- wbcore/contrib/io/locale/de/LC_MESSAGES/django.po +28 -28
- wbcore/contrib/io/locale/en/LC_MESSAGES/django.po +28 -28
- wbcore/contrib/io/locale/fr/LC_MESSAGES/django.po +28 -28
- wbcore/contrib/notifications/dispatch.py +1 -3
- wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po +2 -3
- wbcore/contrib/notifications/locale/en/LC_MESSAGES/django.po +2 -2
- wbcore/contrib/notifications/locale/fr/LC_MESSAGES/django.po +2 -3
- wbcore/contrib/notifications/models/notification_types.py +5 -7
- wbcore/contrib/notifications/models/notifications.py +2 -2
- wbcore/contrib/notifications/models/tokens.py +2 -2
- wbcore/contrib/tags/filters.py +2 -2
- wbcore/contrib/tags/serializers.py +2 -2
- wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po +75 -76
- wbcore/contrib/workflow/locale/en/LC_MESSAGES/django.po +75 -75
- wbcore/contrib/workflow/locale/fr/LC_MESSAGES/django.po +75 -76
- wbcore/contrib/workflow/serializers/process.py +4 -4
- wbcore/contrib/workflow/serializers/workflow.py +1 -1
- wbcore/filters/__init__.py +0 -1
- wbcore/filters/fields/__init__.py +0 -1
- wbcore/frontend_user_configuration.py +3 -2
- wbcore/locale/de/LC_MESSAGES/django.po +159 -129
- wbcore/locale/en/LC_MESSAGES/django.po +158 -129
- wbcore/locale/fr/LC_MESSAGES/django.po +159 -129
- wbcore/menus/menus.py +8 -5
- wbcore/metadata/configs/buttons/view_config.py +4 -1
- wbcore/metadata/configs/display/models.py +4 -5
- wbcore/metadata/configs/endpoints.py +7 -5
- wbcore/migrations/0015_delete_genericmodel.py +16 -0
- wbcore/models/base.py +0 -11
- wbcore/release_notes/models.py +2 -4
- wbcore/serializers/fields/fields.py +4 -2
- wbcore/serializers/fields/number.py +9 -0
- wbcore/shares/config.py +2 -2
- wbcore/signals/merge.py +1 -0
- wbcore/test/utils.py +3 -1
- wbcore/tests/test_permissions/test_backend.py +1 -3
- wbcore/tests/test_something.py +2 -2
- wbcore/urls.py +5 -10
- wbcore/utils/models.py +73 -4
- wbcore/utils/views.py +54 -53
- wbcore/viewsets/mixins.py +1 -1
- wbcore/viewsets/viewsets.py +1 -1
- {wbcore-1.59.16.dist-info → wbcore-1.60.1.dist-info}/METADATA +1 -1
- {wbcore-1.59.16.dist-info → wbcore-1.60.1.dist-info}/RECORD +98 -98
- wbcore/content_type/filters.py +0 -20
- wbcore/pandas/__init__.py +0 -53
- wbcore/pandas/fields.py +0 -25
- wbcore/pandas/filterset.py +0 -9
- wbcore/pandas/utils.py +0 -25
- wbcore/pandas/views.py +0 -9
- /wbcore/{content_type → contrib/color}/__init__.py +0 -0
- /wbcore/{content_type → contrib/content_type}/admin.py +0 -0
- /wbcore/{content_type → contrib/content_type}/utils.py +0 -0
- /wbcore/{content_type → contrib/content_type}/viewsets.py +0 -0
- {wbcore-1.59.16.dist-info → wbcore-1.60.1.dist-info}/WHEEL +0 -0
|
@@ -7,7 +7,7 @@ msgid ""
|
|
|
7
7
|
msgstr ""
|
|
8
8
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
|
-
"POT-Creation-Date:
|
|
10
|
+
"POT-Creation-Date: 2026-01-16 14:04+0100\n"
|
|
11
11
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
12
12
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
13
13
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
@@ -95,91 +95,91 @@ msgstr ""
|
|
|
95
95
|
msgid "Tokens"
|
|
96
96
|
msgstr ""
|
|
97
97
|
|
|
98
|
-
#: contrib/authentication/models/users.py:
|
|
98
|
+
#: contrib/authentication/models/users.py:30
|
|
99
99
|
msgid "No E-Mail provided"
|
|
100
100
|
msgstr ""
|
|
101
101
|
|
|
102
|
-
#: contrib/authentication/models/users.py:
|
|
102
|
+
#: contrib/authentication/models/users.py:33
|
|
103
103
|
msgid "No Username provided"
|
|
104
104
|
msgstr ""
|
|
105
105
|
|
|
106
|
-
#: contrib/authentication/models/users.py:
|
|
106
|
+
#: contrib/authentication/models/users.py:62
|
|
107
107
|
#: contrib/authentication/serializers/users.py:144
|
|
108
108
|
msgid "E-Mail"
|
|
109
109
|
msgstr ""
|
|
110
110
|
|
|
111
|
-
#: contrib/authentication/models/users.py:
|
|
111
|
+
#: contrib/authentication/models/users.py:63
|
|
112
112
|
msgid "username"
|
|
113
113
|
msgstr ""
|
|
114
114
|
|
|
115
|
-
#: contrib/authentication/models/users.py:
|
|
115
|
+
#: contrib/authentication/models/users.py:66
|
|
116
116
|
msgid "staff status"
|
|
117
117
|
msgstr ""
|
|
118
118
|
|
|
119
|
-
#: contrib/authentication/models/users.py:
|
|
119
|
+
#: contrib/authentication/models/users.py:68
|
|
120
120
|
msgid "Specifies whether the user can log into this admin site."
|
|
121
121
|
msgstr ""
|
|
122
122
|
|
|
123
|
-
#: contrib/authentication/models/users.py:
|
|
123
|
+
#: contrib/authentication/models/users.py:71
|
|
124
124
|
msgid "active"
|
|
125
125
|
msgstr ""
|
|
126
126
|
|
|
127
|
-
#: contrib/authentication/models/users.py:
|
|
127
|
+
#: contrib/authentication/models/users.py:74
|
|
128
128
|
msgid ""
|
|
129
129
|
"Specifies whether this user should be treated as active. Unselect this "
|
|
130
130
|
"instead of deleting accounts."
|
|
131
131
|
msgstr ""
|
|
132
132
|
|
|
133
|
-
#: contrib/authentication/models/users.py:
|
|
133
|
+
#: contrib/authentication/models/users.py:78
|
|
134
134
|
msgid "register"
|
|
135
135
|
msgstr ""
|
|
136
136
|
|
|
137
|
-
#: contrib/authentication/models/users.py:
|
|
137
|
+
#: contrib/authentication/models/users.py:78
|
|
138
138
|
msgid "Specifies whether this user has registered its email. "
|
|
139
139
|
msgstr ""
|
|
140
140
|
|
|
141
|
-
#: contrib/authentication/models/users.py:
|
|
141
|
+
#: contrib/authentication/models/users.py:80
|
|
142
142
|
msgid "date joined"
|
|
143
143
|
msgstr ""
|
|
144
144
|
|
|
145
|
-
#: contrib/authentication/models/users.py:
|
|
145
|
+
#: contrib/authentication/models/users.py:89
|
|
146
146
|
msgid "user"
|
|
147
147
|
msgstr ""
|
|
148
148
|
|
|
149
|
-
#: contrib/authentication/models/users.py:
|
|
149
|
+
#: contrib/authentication/models/users.py:90
|
|
150
150
|
msgid "users"
|
|
151
151
|
msgstr ""
|
|
152
152
|
|
|
153
|
-
#: contrib/authentication/models/users.py:
|
|
153
|
+
#: contrib/authentication/models/users.py:145
|
|
154
154
|
msgid "You need to specify a username or a pair of first and last name"
|
|
155
155
|
msgstr ""
|
|
156
156
|
|
|
157
|
-
#: contrib/authentication/models/users_activities.py:
|
|
158
|
-
#: contrib/authentication/models/users_activities.py:
|
|
157
|
+
#: contrib/authentication/models/users_activities.py:20
|
|
158
|
+
#: contrib/authentication/models/users_activities.py:23
|
|
159
159
|
msgid "Success"
|
|
160
160
|
msgstr ""
|
|
161
161
|
|
|
162
|
-
#: contrib/authentication/models/users_activities.py:19
|
|
163
162
|
#: contrib/authentication/models/users_activities.py:21
|
|
163
|
+
#: contrib/authentication/models/users_activities.py:23
|
|
164
164
|
msgid "Failed"
|
|
165
165
|
msgstr ""
|
|
166
166
|
|
|
167
|
-
#: contrib/authentication/models/users_activities.py:
|
|
167
|
+
#: contrib/authentication/models/users_activities.py:26
|
|
168
168
|
#: contrib/authentication/templates/password_reset_done.html:11
|
|
169
|
-
#: contrib/authentication/viewsets/users.py:
|
|
169
|
+
#: contrib/authentication/viewsets/users.py:174
|
|
170
170
|
msgid "Login"
|
|
171
171
|
msgstr ""
|
|
172
172
|
|
|
173
|
-
#: contrib/authentication/models/users_activities.py:
|
|
173
|
+
#: contrib/authentication/models/users_activities.py:40
|
|
174
174
|
#, python-brace-format
|
|
175
175
|
msgid "Activity of {user} at {date}"
|
|
176
176
|
msgstr ""
|
|
177
177
|
|
|
178
|
-
#: contrib/authentication/models/users_activities.py:
|
|
178
|
+
#: contrib/authentication/models/users_activities.py:43
|
|
179
179
|
msgid "User Login Activity"
|
|
180
180
|
msgstr ""
|
|
181
181
|
|
|
182
|
-
#: contrib/authentication/models/users_activities.py:
|
|
182
|
+
#: contrib/authentication/models/users_activities.py:44
|
|
183
183
|
msgid "User Login Activities"
|
|
184
184
|
msgstr ""
|
|
185
185
|
|
|
@@ -487,104 +487,104 @@ msgstr ""
|
|
|
487
487
|
msgid "New User"
|
|
488
488
|
msgstr ""
|
|
489
489
|
|
|
490
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
490
|
+
#: contrib/authentication/viewsets/user_activities.py:179
|
|
491
491
|
msgid "<b>User Activity</b>"
|
|
492
492
|
msgstr ""
|
|
493
493
|
|
|
494
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
494
|
+
#: contrib/authentication/viewsets/user_activities.py:180
|
|
495
495
|
msgid "Time"
|
|
496
496
|
msgstr ""
|
|
497
497
|
|
|
498
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
498
|
+
#: contrib/authentication/viewsets/user_activities.py:181
|
|
499
499
|
msgid "Cummulative time"
|
|
500
500
|
msgstr ""
|
|
501
501
|
|
|
502
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
502
|
+
#: contrib/authentication/viewsets/user_activities.py:192
|
|
503
503
|
msgid "Hour"
|
|
504
504
|
msgstr ""
|
|
505
505
|
|
|
506
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
506
|
+
#: contrib/authentication/viewsets/user_activities.py:197
|
|
507
507
|
msgid "Day"
|
|
508
508
|
msgstr ""
|
|
509
509
|
|
|
510
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
510
|
+
#: contrib/authentication/viewsets/user_activities.py:202
|
|
511
511
|
msgid "Week"
|
|
512
512
|
msgstr ""
|
|
513
513
|
|
|
514
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
514
|
+
#: contrib/authentication/viewsets/user_activities.py:207
|
|
515
515
|
msgid "Month"
|
|
516
516
|
msgstr ""
|
|
517
517
|
|
|
518
|
-
#: contrib/authentication/viewsets/users.py:
|
|
518
|
+
#: contrib/authentication/viewsets/users.py:79
|
|
519
519
|
msgid ""
|
|
520
520
|
"If the email matches a user, it will receive an email inviting him to reset "
|
|
521
521
|
"his password."
|
|
522
522
|
msgstr ""
|
|
523
523
|
|
|
524
|
-
#: contrib/authentication/viewsets/users.py:
|
|
524
|
+
#: contrib/authentication/viewsets/users.py:96
|
|
525
525
|
msgid "first and last name are too long. please provider a shorter name."
|
|
526
526
|
msgstr ""
|
|
527
527
|
|
|
528
|
-
#: contrib/authentication/viewsets/users.py:
|
|
528
|
+
#: contrib/authentication/viewsets/users.py:103
|
|
529
529
|
msgid ""
|
|
530
530
|
"password is too long. please provider a password shorter than 128 characters."
|
|
531
531
|
msgstr ""
|
|
532
532
|
|
|
533
|
-
#: contrib/authentication/viewsets/users.py:
|
|
533
|
+
#: contrib/authentication/viewsets/users.py:111
|
|
534
534
|
msgid ""
|
|
535
535
|
"email is too long. please provider an email shorter than 255 characters."
|
|
536
536
|
msgstr ""
|
|
537
537
|
|
|
538
|
-
#: contrib/authentication/viewsets/users.py:
|
|
538
|
+
#: contrib/authentication/viewsets/users.py:130
|
|
539
539
|
msgid "Activate your account."
|
|
540
540
|
msgstr ""
|
|
541
541
|
|
|
542
|
-
#: contrib/authentication/viewsets/users.py:
|
|
542
|
+
#: contrib/authentication/viewsets/users.py:138
|
|
543
543
|
msgid "Please confirm your email address to complete the registration"
|
|
544
544
|
msgstr ""
|
|
545
545
|
|
|
546
|
-
#: contrib/authentication/viewsets/users.py:
|
|
546
|
+
#: contrib/authentication/viewsets/users.py:143
|
|
547
547
|
msgid "Your account already exists"
|
|
548
548
|
msgstr ""
|
|
549
549
|
|
|
550
|
-
#: contrib/authentication/viewsets/users.py:
|
|
550
|
+
#: contrib/authentication/viewsets/users.py:147
|
|
551
551
|
msgid "Something went wrong with the submitted data, please try again later"
|
|
552
552
|
msgstr ""
|
|
553
553
|
|
|
554
|
-
#: contrib/authentication/viewsets/users.py:
|
|
554
|
+
#: contrib/authentication/viewsets/users.py:151
|
|
555
555
|
msgid "email, first_name, last_name and password must be provided"
|
|
556
556
|
msgstr ""
|
|
557
557
|
|
|
558
|
-
#: contrib/authentication/viewsets/users.py:
|
|
558
|
+
#: contrib/authentication/viewsets/users.py:172
|
|
559
559
|
msgid "Activation Successful"
|
|
560
560
|
msgstr ""
|
|
561
561
|
|
|
562
|
-
#: contrib/authentication/viewsets/users.py:
|
|
562
|
+
#: contrib/authentication/viewsets/users.py:173
|
|
563
563
|
msgid "You are successfully registered. Please login"
|
|
564
564
|
msgstr ""
|
|
565
565
|
|
|
566
|
-
#: contrib/authentication/viewsets/users.py:
|
|
566
|
+
#: contrib/authentication/viewsets/users.py:186
|
|
567
567
|
msgid "Activation Failed"
|
|
568
568
|
msgstr ""
|
|
569
569
|
|
|
570
|
-
#: contrib/authentication/viewsets/users.py:
|
|
570
|
+
#: contrib/authentication/viewsets/users.py:188
|
|
571
571
|
msgid ""
|
|
572
572
|
"The registration link you clicked was probably expired or your account is "
|
|
573
573
|
"already activated. Please try to register again."
|
|
574
574
|
msgstr ""
|
|
575
575
|
|
|
576
|
-
#: contrib/authentication/viewsets/users.py:
|
|
576
|
+
#: contrib/authentication/viewsets/users.py:190
|
|
577
577
|
msgid "Register"
|
|
578
578
|
msgstr ""
|
|
579
579
|
|
|
580
|
-
#: contrib/authentication/viewsets/users.py:
|
|
580
|
+
#: contrib/authentication/viewsets/users.py:278
|
|
581
581
|
msgid "Password changed."
|
|
582
582
|
msgstr ""
|
|
583
583
|
|
|
584
|
-
#: contrib/authentication/viewsets/users.py:
|
|
584
|
+
#: contrib/authentication/viewsets/users.py:321
|
|
585
585
|
msgid "Reset Password E-Mail sent: Check your mailbox"
|
|
586
586
|
msgstr ""
|
|
587
587
|
|
|
588
|
-
#: contrib/authentication/viewsets/users.py:
|
|
588
|
+
#: contrib/authentication/viewsets/users.py:323
|
|
589
589
|
msgid "Reset Password Failed. Please contact an administrator"
|
|
590
590
|
msgstr ""
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
# This file is distributed under the same license as the PACKAGE package.
|
|
4
4
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
5
5
|
#
|
|
6
|
-
#, fuzzy
|
|
7
6
|
msgid ""
|
|
8
7
|
msgstr ""
|
|
9
8
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
10
9
|
"Report-Msgid-Bugs-To: \n"
|
|
11
|
-
"POT-Creation-Date:
|
|
10
|
+
"POT-Creation-Date: 2026-01-16 14:04+0100\n"
|
|
12
11
|
"PO-Revision-Date: 2025-05-30 09:40+0000\n"
|
|
13
12
|
"Language-Team: French (https://app.transifex.com/stainly/teams/171242/fr/)\n"
|
|
14
13
|
"MIME-Version: 1.0\n"
|
|
@@ -96,91 +95,91 @@ msgstr ""
|
|
|
96
95
|
msgid "Tokens"
|
|
97
96
|
msgstr ""
|
|
98
97
|
|
|
99
|
-
#: contrib/authentication/models/users.py:
|
|
98
|
+
#: contrib/authentication/models/users.py:30
|
|
100
99
|
msgid "No E-Mail provided"
|
|
101
100
|
msgstr ""
|
|
102
101
|
|
|
103
|
-
#: contrib/authentication/models/users.py:
|
|
102
|
+
#: contrib/authentication/models/users.py:33
|
|
104
103
|
msgid "No Username provided"
|
|
105
104
|
msgstr ""
|
|
106
105
|
|
|
107
|
-
#: contrib/authentication/models/users.py:
|
|
106
|
+
#: contrib/authentication/models/users.py:62
|
|
108
107
|
#: contrib/authentication/serializers/users.py:144
|
|
109
108
|
msgid "E-Mail"
|
|
110
109
|
msgstr ""
|
|
111
110
|
|
|
112
|
-
#: contrib/authentication/models/users.py:
|
|
111
|
+
#: contrib/authentication/models/users.py:63
|
|
113
112
|
msgid "username"
|
|
114
113
|
msgstr ""
|
|
115
114
|
|
|
116
|
-
#: contrib/authentication/models/users.py:
|
|
115
|
+
#: contrib/authentication/models/users.py:66
|
|
117
116
|
msgid "staff status"
|
|
118
117
|
msgstr ""
|
|
119
118
|
|
|
120
|
-
#: contrib/authentication/models/users.py:
|
|
119
|
+
#: contrib/authentication/models/users.py:68
|
|
121
120
|
msgid "Specifies whether the user can log into this admin site."
|
|
122
121
|
msgstr ""
|
|
123
122
|
|
|
124
|
-
#: contrib/authentication/models/users.py:
|
|
123
|
+
#: contrib/authentication/models/users.py:71
|
|
125
124
|
msgid "active"
|
|
126
125
|
msgstr ""
|
|
127
126
|
|
|
128
|
-
#: contrib/authentication/models/users.py:
|
|
127
|
+
#: contrib/authentication/models/users.py:74
|
|
129
128
|
msgid ""
|
|
130
129
|
"Specifies whether this user should be treated as active. Unselect this "
|
|
131
130
|
"instead of deleting accounts."
|
|
132
131
|
msgstr ""
|
|
133
132
|
|
|
134
|
-
#: contrib/authentication/models/users.py:
|
|
133
|
+
#: contrib/authentication/models/users.py:78
|
|
135
134
|
msgid "register"
|
|
136
135
|
msgstr ""
|
|
137
136
|
|
|
138
|
-
#: contrib/authentication/models/users.py:
|
|
137
|
+
#: contrib/authentication/models/users.py:78
|
|
139
138
|
msgid "Specifies whether this user has registered its email. "
|
|
140
139
|
msgstr ""
|
|
141
140
|
|
|
142
|
-
#: contrib/authentication/models/users.py:
|
|
141
|
+
#: contrib/authentication/models/users.py:80
|
|
143
142
|
msgid "date joined"
|
|
144
143
|
msgstr ""
|
|
145
144
|
|
|
146
|
-
#: contrib/authentication/models/users.py:
|
|
145
|
+
#: contrib/authentication/models/users.py:89
|
|
147
146
|
msgid "user"
|
|
148
147
|
msgstr ""
|
|
149
148
|
|
|
150
|
-
#: contrib/authentication/models/users.py:
|
|
149
|
+
#: contrib/authentication/models/users.py:90
|
|
151
150
|
msgid "users"
|
|
152
151
|
msgstr ""
|
|
153
152
|
|
|
154
|
-
#: contrib/authentication/models/users.py:
|
|
153
|
+
#: contrib/authentication/models/users.py:145
|
|
155
154
|
msgid "You need to specify a username or a pair of first and last name"
|
|
156
155
|
msgstr ""
|
|
157
156
|
|
|
158
|
-
#: contrib/authentication/models/users_activities.py:
|
|
159
|
-
#: contrib/authentication/models/users_activities.py:
|
|
157
|
+
#: contrib/authentication/models/users_activities.py:20
|
|
158
|
+
#: contrib/authentication/models/users_activities.py:23
|
|
160
159
|
msgid "Success"
|
|
161
160
|
msgstr ""
|
|
162
161
|
|
|
163
|
-
#: contrib/authentication/models/users_activities.py:19
|
|
164
162
|
#: contrib/authentication/models/users_activities.py:21
|
|
163
|
+
#: contrib/authentication/models/users_activities.py:23
|
|
165
164
|
msgid "Failed"
|
|
166
165
|
msgstr ""
|
|
167
166
|
|
|
168
|
-
#: contrib/authentication/models/users_activities.py:
|
|
167
|
+
#: contrib/authentication/models/users_activities.py:26
|
|
169
168
|
#: contrib/authentication/templates/password_reset_done.html:11
|
|
170
|
-
#: contrib/authentication/viewsets/users.py:
|
|
169
|
+
#: contrib/authentication/viewsets/users.py:174
|
|
171
170
|
msgid "Login"
|
|
172
171
|
msgstr ""
|
|
173
172
|
|
|
174
|
-
#: contrib/authentication/models/users_activities.py:
|
|
173
|
+
#: contrib/authentication/models/users_activities.py:40
|
|
175
174
|
#, python-brace-format
|
|
176
175
|
msgid "Activity of {user} at {date}"
|
|
177
176
|
msgstr ""
|
|
178
177
|
|
|
179
|
-
#: contrib/authentication/models/users_activities.py:
|
|
178
|
+
#: contrib/authentication/models/users_activities.py:43
|
|
180
179
|
msgid "User Login Activity"
|
|
181
180
|
msgstr ""
|
|
182
181
|
|
|
183
|
-
#: contrib/authentication/models/users_activities.py:
|
|
182
|
+
#: contrib/authentication/models/users_activities.py:44
|
|
184
183
|
msgid "User Login Activities"
|
|
185
184
|
msgstr ""
|
|
186
185
|
|
|
@@ -488,105 +487,105 @@ msgstr ""
|
|
|
488
487
|
msgid "New User"
|
|
489
488
|
msgstr ""
|
|
490
489
|
|
|
491
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
490
|
+
#: contrib/authentication/viewsets/user_activities.py:179
|
|
492
491
|
msgid "<b>User Activity</b>"
|
|
493
492
|
msgstr ""
|
|
494
493
|
|
|
495
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
494
|
+
#: contrib/authentication/viewsets/user_activities.py:180
|
|
496
495
|
msgid "Time"
|
|
497
496
|
msgstr ""
|
|
498
497
|
|
|
499
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
498
|
+
#: contrib/authentication/viewsets/user_activities.py:181
|
|
500
499
|
msgid "Cummulative time"
|
|
501
500
|
msgstr ""
|
|
502
501
|
|
|
503
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
502
|
+
#: contrib/authentication/viewsets/user_activities.py:192
|
|
504
503
|
msgid "Hour"
|
|
505
504
|
msgstr ""
|
|
506
505
|
|
|
507
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
506
|
+
#: contrib/authentication/viewsets/user_activities.py:197
|
|
508
507
|
msgid "Day"
|
|
509
508
|
msgstr ""
|
|
510
509
|
|
|
511
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
510
|
+
#: contrib/authentication/viewsets/user_activities.py:202
|
|
512
511
|
msgid "Week"
|
|
513
512
|
msgstr ""
|
|
514
513
|
|
|
515
|
-
#: contrib/authentication/viewsets/user_activities.py:
|
|
514
|
+
#: contrib/authentication/viewsets/user_activities.py:207
|
|
516
515
|
msgid "Month"
|
|
517
516
|
msgstr ""
|
|
518
517
|
|
|
519
|
-
#: contrib/authentication/viewsets/users.py:
|
|
518
|
+
#: contrib/authentication/viewsets/users.py:79
|
|
520
519
|
msgid ""
|
|
521
520
|
"If the email matches a user, it will receive an email inviting him to reset "
|
|
522
521
|
"his password."
|
|
523
522
|
msgstr ""
|
|
524
523
|
|
|
525
|
-
#: contrib/authentication/viewsets/users.py:
|
|
524
|
+
#: contrib/authentication/viewsets/users.py:96
|
|
526
525
|
msgid "first and last name are too long. please provider a shorter name."
|
|
527
526
|
msgstr ""
|
|
528
527
|
|
|
529
|
-
#: contrib/authentication/viewsets/users.py:
|
|
528
|
+
#: contrib/authentication/viewsets/users.py:103
|
|
530
529
|
msgid ""
|
|
531
530
|
"password is too long. please provider a password shorter than 128 "
|
|
532
531
|
"characters."
|
|
533
532
|
msgstr ""
|
|
534
533
|
|
|
535
|
-
#: contrib/authentication/viewsets/users.py:
|
|
534
|
+
#: contrib/authentication/viewsets/users.py:111
|
|
536
535
|
msgid ""
|
|
537
536
|
"email is too long. please provider an email shorter than 255 characters."
|
|
538
537
|
msgstr ""
|
|
539
538
|
|
|
540
|
-
#: contrib/authentication/viewsets/users.py:
|
|
539
|
+
#: contrib/authentication/viewsets/users.py:130
|
|
541
540
|
msgid "Activate your account."
|
|
542
541
|
msgstr ""
|
|
543
542
|
|
|
544
|
-
#: contrib/authentication/viewsets/users.py:
|
|
543
|
+
#: contrib/authentication/viewsets/users.py:138
|
|
545
544
|
msgid "Please confirm your email address to complete the registration"
|
|
546
545
|
msgstr ""
|
|
547
546
|
|
|
548
|
-
#: contrib/authentication/viewsets/users.py:
|
|
547
|
+
#: contrib/authentication/viewsets/users.py:143
|
|
549
548
|
msgid "Your account already exists"
|
|
550
549
|
msgstr ""
|
|
551
550
|
|
|
552
|
-
#: contrib/authentication/viewsets/users.py:
|
|
551
|
+
#: contrib/authentication/viewsets/users.py:147
|
|
553
552
|
msgid "Something went wrong with the submitted data, please try again later"
|
|
554
553
|
msgstr ""
|
|
555
554
|
|
|
556
|
-
#: contrib/authentication/viewsets/users.py:
|
|
555
|
+
#: contrib/authentication/viewsets/users.py:151
|
|
557
556
|
msgid "email, first_name, last_name and password must be provided"
|
|
558
557
|
msgstr ""
|
|
559
558
|
|
|
560
|
-
#: contrib/authentication/viewsets/users.py:
|
|
559
|
+
#: contrib/authentication/viewsets/users.py:172
|
|
561
560
|
msgid "Activation Successful"
|
|
562
561
|
msgstr ""
|
|
563
562
|
|
|
564
|
-
#: contrib/authentication/viewsets/users.py:
|
|
563
|
+
#: contrib/authentication/viewsets/users.py:173
|
|
565
564
|
msgid "You are successfully registered. Please login"
|
|
566
565
|
msgstr ""
|
|
567
566
|
|
|
568
|
-
#: contrib/authentication/viewsets/users.py:
|
|
567
|
+
#: contrib/authentication/viewsets/users.py:186
|
|
569
568
|
msgid "Activation Failed"
|
|
570
569
|
msgstr ""
|
|
571
570
|
|
|
572
|
-
#: contrib/authentication/viewsets/users.py:
|
|
571
|
+
#: contrib/authentication/viewsets/users.py:188
|
|
573
572
|
msgid ""
|
|
574
573
|
"The registration link you clicked was probably expired or your account is "
|
|
575
574
|
"already activated. Please try to register again."
|
|
576
575
|
msgstr ""
|
|
577
576
|
|
|
578
|
-
#: contrib/authentication/viewsets/users.py:
|
|
577
|
+
#: contrib/authentication/viewsets/users.py:190
|
|
579
578
|
msgid "Register"
|
|
580
579
|
msgstr ""
|
|
581
580
|
|
|
582
|
-
#: contrib/authentication/viewsets/users.py:
|
|
581
|
+
#: contrib/authentication/viewsets/users.py:278
|
|
583
582
|
msgid "Password changed."
|
|
584
583
|
msgstr ""
|
|
585
584
|
|
|
586
|
-
#: contrib/authentication/viewsets/users.py:
|
|
585
|
+
#: contrib/authentication/viewsets/users.py:321
|
|
587
586
|
msgid "Reset Password E-Mail sent: Check your mailbox"
|
|
588
587
|
msgstr ""
|
|
589
588
|
|
|
590
|
-
#: contrib/authentication/viewsets/users.py:
|
|
589
|
+
#: contrib/authentication/viewsets/users.py:323
|
|
591
590
|
msgid "Reset Password Failed. Please contact an administrator"
|
|
592
591
|
msgstr ""
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
import unicodedata
|
|
3
3
|
import uuid
|
|
4
|
+
from contextlib import suppress
|
|
4
5
|
|
|
5
6
|
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
|
6
7
|
from django.contrib.auth.models import Group as DjangoBaseGroup
|
|
7
8
|
from django.contrib.auth.models import Permission as DjangoBasePermission
|
|
8
9
|
from django.contrib.auth.tokens import PasswordResetTokenGenerator
|
|
9
10
|
from django.db import models
|
|
11
|
+
from django.dispatch import receiver
|
|
10
12
|
from django.utils import timezone
|
|
11
13
|
from django.utils.encoding import force_str
|
|
12
14
|
from django.utils.translation import gettext
|
|
13
15
|
from django.utils.translation import gettext_lazy as _
|
|
14
16
|
|
|
17
|
+
from wbcore.signals import pre_merge
|
|
18
|
+
from wbcore.utils.models import MergeError
|
|
19
|
+
|
|
15
20
|
|
|
16
21
|
class UserManager(BaseUserManager):
|
|
17
22
|
use_in_migrations = True
|
|
@@ -222,3 +227,16 @@ class Permission(DjangoBasePermission):
|
|
|
222
227
|
@classmethod
|
|
223
228
|
def get_representation_label_key(cls):
|
|
224
229
|
return "{{name}}"
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
@receiver(pre_merge, sender="directory.Person")
|
|
233
|
+
def pre_merge_person_user(sender: models.Model, merged_object, main_object, **kwargs):
|
|
234
|
+
with suppress(User.DoesNotExist):
|
|
235
|
+
user = User.objects.get(profile=merged_object)
|
|
236
|
+
if User.objects.filter(profile=main_object).exists():
|
|
237
|
+
raise MergeError(
|
|
238
|
+
f"we cannot safely merge person {merged_object} into {main_object}: A user profile already exists for {main_object}"
|
|
239
|
+
)
|
|
240
|
+
else:
|
|
241
|
+
user.profile = main_object
|
|
242
|
+
user.save()
|
wbcore/contrib/color/admin.py
CHANGED
|
File without changes
|
|
@@ -4,13 +4,31 @@ from functools import reduce
|
|
|
4
4
|
|
|
5
5
|
import django_filters
|
|
6
6
|
from django.contrib.contenttypes.models import ContentType
|
|
7
|
+
from django.core.exceptions import FieldError
|
|
7
8
|
from django.db.models import Q
|
|
8
9
|
from django_filters.constants import EMPTY_VALUES
|
|
9
10
|
|
|
11
|
+
from wbcore import filters as wb_filters
|
|
10
12
|
from wbcore.filters.mixins import WBCoreFilterMixin
|
|
11
13
|
from wbcore.forms import ContentTypeMultiValueField
|
|
12
14
|
|
|
13
15
|
|
|
16
|
+
class ContentTypeFilterSet(wb_filters.FilterSet):
|
|
17
|
+
related_name_isnull = wb_filters.CharFilter(method="filter_related_name_isnull")
|
|
18
|
+
|
|
19
|
+
def filter_related_name_isnull(self, queryset, label, value):
|
|
20
|
+
if value:
|
|
21
|
+
try:
|
|
22
|
+
return queryset.filter(**{f"{value}__isnull": False}).distinct()
|
|
23
|
+
except FieldError:
|
|
24
|
+
pass
|
|
25
|
+
return queryset
|
|
26
|
+
|
|
27
|
+
class Meta:
|
|
28
|
+
model = ContentType
|
|
29
|
+
fields = {"id": ["in", "exact"]}
|
|
30
|
+
|
|
31
|
+
|
|
14
32
|
class MultipleChoiceContentTypeFilter(WBCoreFilterMixin, django_filters.Filter):
|
|
15
33
|
field_class = ContentTypeMultiValueField
|
|
16
34
|
filter_type = "text"
|
|
@@ -13,7 +13,7 @@ from wbcore.serializers import HyperlinkField
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ContentTypeRepresentationSerializer(serializers.RepresentationSerializer):
|
|
16
|
-
endpoint = "wbcore:contenttyperepresentation-list"
|
|
16
|
+
endpoint = "wbcore:content_type:contenttyperepresentation-list"
|
|
17
17
|
value_key = "id"
|
|
18
18
|
|
|
19
19
|
model_title = serializers.SerializerMethodField()
|
|
@@ -63,7 +63,7 @@ class GenericModel(models.Model): # noqa
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
class DynamicObjectIDRepresentationSerializer(serializers.RepresentationSerializer):
|
|
66
|
-
endpoint = "wbcore:dynamiccontenttyperepresentation-list"
|
|
66
|
+
endpoint = "wbcore:content_type:dynamiccontenttyperepresentation-list"
|
|
67
67
|
value_key = "{{id}}"
|
|
68
68
|
label_key = "{{label}}"
|
|
69
69
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from django.urls import include, path
|
|
2
|
+
|
|
3
|
+
from wbcore.contrib.content_type.viewsets import ContentTypeRepresentationViewSet, DynamicObjectIDRepresentationViewSet
|
|
4
|
+
from wbcore.routers import WBCoreRouter
|
|
5
|
+
|
|
6
|
+
router = WBCoreRouter()
|
|
7
|
+
|
|
8
|
+
router.register(r"contenttyperepresentation", ContentTypeRepresentationViewSet, basename="contenttyperepresentation")
|
|
9
|
+
router.register(
|
|
10
|
+
r"dynamiccontenttyperepresentation",
|
|
11
|
+
DynamicObjectIDRepresentationViewSet,
|
|
12
|
+
basename="dynamiccontenttyperepresentation",
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
urlpatterns = [path("", include(router.urls))]
|