wbcore 2.2.1__py2.py3-none-any.whl → 2.2.4__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/contrib/agenda/locale/de/LC_MESSAGES/django.po +113 -0
- wbcore/contrib/agenda/static/agenda/markdown/documentation/building.md +11 -0
- wbcore/contrib/agenda/static/agenda/markdown/documentation/conferenceroom.md +20 -0
- wbcore/contrib/authentication/fixtures/authentication.json +62 -0
- wbcore/contrib/authentication/locale/de/LC_MESSAGES/django.po +610 -0
- wbcore/contrib/authentication/templates/activate_confirm.html +12 -0
- wbcore/contrib/authentication/templates/base.html +135 -0
- wbcore/contrib/authentication/templates/email_base_template.html +335 -0
- wbcore/contrib/authentication/templates/password_reset_done.html +13 -0
- wbcore/contrib/authentication/templates/password_reset_email.html +11 -0
- wbcore/contrib/authentication/templates/password_reset_email_html.html +43 -0
- wbcore/contrib/authentication/templates/password_reset_form.html +23 -0
- wbcore/contrib/authentication/templates/password_reset_sent.html +11 -0
- wbcore/contrib/authentication/templates/reset_password.html +15 -0
- wbcore/contrib/authentication/templates/user_registration_email.html +37 -0
- wbcore/contrib/color/admin.py +28 -0
- wbcore/contrib/color/apps.py +5 -0
- wbcore/contrib/color/enums.py +17 -0
- wbcore/contrib/color/factories.py +10 -0
- wbcore/contrib/color/fields.py +29 -0
- wbcore/contrib/color/forms.py +13 -0
- wbcore/contrib/color/models.py +62 -0
- wbcore/contrib/color/tests/conftest.py +10 -0
- wbcore/contrib/color/tests/test_color_models.py +61 -0
- wbcore/contrib/color/tests/test_fields.py +25 -0
- wbcore/contrib/currency/fixtures/currency.yaml +1014 -0
- wbcore/contrib/currency/fixtures/currency_fx_rate.yaml +73585 -0
- wbcore/contrib/directory/fixtures/directory.json +3924 -0
- wbcore/contrib/directory/locale/de/LC_MESSAGES/django.po +1686 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/address.md +38 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/banking.md +54 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/bankingentry.md +38 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/clientmanagerrelationship.md +42 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/company.md +52 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/companytype.md +2 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/customerstatus.md +2 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/email.md +20 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/employeecompany.md +34 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/employerperson.md +43 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/person.md +61 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/position.md +2 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/relationshiptype.md +2 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/socialmedia.md +23 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/specialization.md +2 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/systememployee.md +31 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/telephone.md +23 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/telephonesearch.md +26 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/userisclient.md +14 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/userismanager.md +28 -0
- wbcore/contrib/directory/static/directory/markdown/documentation/website.md +20 -0
- wbcore/contrib/documents/fixtures/docments.json +135 -0
- wbcore/contrib/documents/locale/de/LC_MESSAGES/django.po +272 -0
- wbcore/contrib/documents/static/documents/markdown/documentation/document_types.md +21 -0
- wbcore/contrib/documents/static/documents/markdown/documentation/documents.md +18 -0
- wbcore/contrib/documents/static/documents/markdown/documentation/shareablelink.md +28 -0
- wbcore/contrib/documents/static/documents/markdown/documentation/shareablelinkaccess.md +20 -0
- wbcore/contrib/documents/tests/conftest.py +30 -0
- wbcore/contrib/documents/tests/test_models.py +144 -0
- wbcore/contrib/example_app/fixtures/example_app.json +7425 -0
- wbcore/contrib/example_app/tests/test_models/test_event.py +87 -0
- wbcore/contrib/example_app/tests/test_models/test_match.py +210 -0
- wbcore/contrib/example_app/tests/test_models/test_others.py +159 -0
- wbcore/contrib/example_app/tests/test_serializers/test_league_serializer.py +34 -0
- wbcore/contrib/example_app/tests/test_serializers/test_match_serializer.py +134 -0
- wbcore/contrib/example_app/tests/test_serializers/test_role_serializer.py +13 -0
- wbcore/contrib/example_app/tests/test_serializers/test_sport_serializer.py +14 -0
- wbcore/contrib/example_app/tests/test_serializers/test_stadium_serializer.py +14 -0
- wbcore/contrib/example_app/tests/test_serializers/test_team_result_serializer.py +30 -0
- wbcore/contrib/example_app/tests/test_serializers/test_team_serializer.py +70 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_event_viewset.py +162 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_league_viewset.py +84 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_match_viewset.py +65 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_person_viewset.py +166 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_role_viewset.py +75 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_sport_viewset.py +75 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_stadium_viewset.py +75 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_team_viewset.py +92 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_teamresult_viewset.py +58 -0
- wbcore/contrib/example_app/tests/test_viewsets/test_utils_viewsets.py +124 -0
- wbcore/contrib/geography/fixtures/geography.json +13454 -0
- wbcore/contrib/geography/static/geography/markdown/documentation/geography.md +16 -0
- wbcore/contrib/guardian/apps.py +6 -0
- wbcore/contrib/guardian/configurations.py +3 -0
- wbcore/contrib/guardian/filters.py +21 -0
- wbcore/contrib/guardian/tasks.py +10 -0
- wbcore/contrib/guardian/urls.py +12 -0
- wbcore/contrib/guardian/utils.py +124 -0
- wbcore/contrib/io/fixtures/io.json +145 -0
- wbcore/contrib/io/locale/de/LC_MESSAGES/django.po +52 -0
- wbcore/contrib/notifications/locale/de/LC_MESSAGES/django.po +60 -0
- wbcore/contrib/notifications/static/notifications/service-worker.js +1 -0
- wbcore/contrib/notifications/templates/notifications/notification_template.html +43 -0
- wbcore/contrib/notifications/viewsets/configs/notification_types.py +27 -0
- wbcore/contrib/notifications/viewsets/configs/notifications.py +85 -0
- wbcore/contrib/workflow/fixtures/workflow.json +612 -0
- wbcore/contrib/workflow/locale/de/LC_MESSAGES/django.po +1289 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/assignedprocessstep.md +33 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/condition.md +24 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/decisionstep.md +30 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/emailstep.md +45 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/finishstep.md +33 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/joinstep.md +33 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/process.md +33 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/processstep.md +51 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/scriptstep.md +33 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/splitstep.md +30 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/startstep.md +27 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/transition.md +27 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/userstep.md +42 -0
- wbcore/contrib/workflow/static/workflow/markdown/documentation/workflow.md +32 -0
- wbcore/contrib/workflow/templates/Test_Templates.txt +25 -0
- wbcore/contrib/workflow/tests/test_models/step/test_decision_step.py +79 -0
- wbcore/contrib/workflow/tests/test_models/step/test_email_step.py +45 -0
- wbcore/contrib/workflow/tests/test_models/step/test_finish_step.py +105 -0
- wbcore/contrib/workflow/tests/test_models/step/test_join_step.py +127 -0
- wbcore/contrib/workflow/tests/test_models/step/test_script_step.py +24 -0
- wbcore/contrib/workflow/tests/test_models/step/test_split_step.py +49 -0
- wbcore/contrib/workflow/tests/test_models/step/test_step.py +621 -0
- wbcore/contrib/workflow/tests/test_models/step/test_user_step.py +225 -0
- wbcore/contrib/workflow/tests/test_models/test_condition.py +103 -0
- wbcore/contrib/workflow/tests/test_models/test_data.py +134 -0
- wbcore/contrib/workflow/tests/test_models/test_process.py +98 -0
- wbcore/contrib/workflow/tests/test_models/test_transition.py +128 -0
- wbcore/contrib/workflow/tests/test_models/test_workflow.py +358 -0
- wbcore/locale/de/LC_MESSAGES/django.po +667 -0
- wbcore/templates/errors/404.html +134 -0
- wbcore/templates/errors/500.html +138 -0
- wbcore/templates/errors/503.html +132 -0
- wbcore/templates/errors/custom.html +132 -0
- wbcore/templates/forms.py +0 -0
- wbcore/templates/notifications/email_template.html +43 -0
- wbcore/templates/wbcore/admin/change_list.html +8 -0
- wbcore/templates/wbcore/admin/csv_form.html +15 -0
- wbcore/templates/wbcore/dynamic_color_array.html +29 -0
- wbcore/templates/wbcore/email_base_template.html +335 -0
- wbcore/templates/wbcore/email_notification_template.html +10 -0
- wbcore/templates/wbcore/frontend.html +51 -0
- wbcore/test/e2e_helpers_methods/e2e_checks.py +121 -0
- wbcore/test/e2e_helpers_methods/e2e_helper_methods.py +395 -0
- wbcore/tests/test_permissions/test_backend.py +29 -0
- {wbcore-2.2.1.dist-info → wbcore-2.2.4.dist-info}/METADATA +1 -1
- {wbcore-2.2.1.dist-info → wbcore-2.2.4.dist-info}/RECORD +143 -3
- {wbcore-2.2.1.dist-info → wbcore-2.2.4.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8"> <!-- utf-8 works for most cases -->
|
|
6
|
+
<meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary -->
|
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine -->
|
|
8
|
+
<meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely -->
|
|
9
|
+
<title>{{ email_title }}</title> <!-- The title tag shows in email notifications, like Android 4.4. -->
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<style>
|
|
13
|
+
* {
|
|
14
|
+
font-family: sans-serif !important;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
<!-- CSS Reset : BEGIN -->
|
|
18
|
+
<style>
|
|
19
|
+
|
|
20
|
+
/* What it does: Remove spaces around the email design added by some email clients. */
|
|
21
|
+
/* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */
|
|
22
|
+
html,
|
|
23
|
+
body {
|
|
24
|
+
margin: 0 auto !important;
|
|
25
|
+
padding: 0 !important;
|
|
26
|
+
height: 100% !important;
|
|
27
|
+
width: 100% !important;
|
|
28
|
+
}
|
|
29
|
+
.ExternalClass {width: 100%;}
|
|
30
|
+
/* What it does: Stops email clients resizing small text. */
|
|
31
|
+
* {
|
|
32
|
+
-ms-text-size-adjust: 100%;
|
|
33
|
+
-webkit-text-size-adjust: 100%;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* What it does: Centers email on Android 4.4 */
|
|
37
|
+
div[style*="margin: 16px 0"] {
|
|
38
|
+
margin: 0 !important;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* What it does: Stops Outlook from adding extra spacing to tables. */
|
|
42
|
+
table,
|
|
43
|
+
td {
|
|
44
|
+
mso-table-lspace: 0pt !important;
|
|
45
|
+
mso-table-rspace: 0pt !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */
|
|
49
|
+
table {
|
|
50
|
+
border-spacing: 0 !important;
|
|
51
|
+
border-collapse: collapse !important;
|
|
52
|
+
table-layout: fixed !important;
|
|
53
|
+
margin: 0 auto !important;
|
|
54
|
+
}
|
|
55
|
+
table table table {
|
|
56
|
+
table-layout: auto;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* What it does: Uses a better rendering method when resizing images in IE. */
|
|
60
|
+
img {
|
|
61
|
+
-ms-interpolation-mode:bicubic;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* What it does: A work-around for email clients meddling in triggered links. */
|
|
65
|
+
*[x-apple-data-detectors], /* iOS */
|
|
66
|
+
.x-gmail-data-detectors, /* Gmail */
|
|
67
|
+
.x-gmail-data-detectors *,
|
|
68
|
+
.aBn {
|
|
69
|
+
border-bottom: 0 !important;
|
|
70
|
+
cursor: default !important;
|
|
71
|
+
color: inherit !important;
|
|
72
|
+
text-decoration: none !important;
|
|
73
|
+
font-size: inherit !important;
|
|
74
|
+
font-family: inherit !important;
|
|
75
|
+
font-weight: inherit !important;
|
|
76
|
+
line-height: inherit !important;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */
|
|
80
|
+
.a6S {
|
|
81
|
+
display: none !important;
|
|
82
|
+
opacity: 0.01 !important;
|
|
83
|
+
}
|
|
84
|
+
/* If the above doesn't work, add a .g-img class to any image in question. */
|
|
85
|
+
img.g-img + div {
|
|
86
|
+
display: none !important;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* What it does: Prevents underlining the button text in Windows 10 */
|
|
90
|
+
.button-link {
|
|
91
|
+
text-decoration: none !important;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */
|
|
95
|
+
/* Create one of these media queries for each additional viewport size you'd like to fix */
|
|
96
|
+
|
|
97
|
+
/* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
|
|
98
|
+
@media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
|
|
99
|
+
.email-container {
|
|
100
|
+
min-width: 320px !important;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/* iPhone 6, 6S, 7, 8, and X */
|
|
104
|
+
@media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
|
|
105
|
+
.email-container {
|
|
106
|
+
min-width: 375px !important;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/* iPhone 6+, 7+, and 8+ */
|
|
110
|
+
@media only screen and (min-device-width: 414px) {
|
|
111
|
+
.email-container {
|
|
112
|
+
min-width: 414px !important;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Google webfonts. Recommended to include the .woff version for cross-client compatibility.
|
|
118
|
+
*/
|
|
119
|
+
@media screen {
|
|
120
|
+
@font-face {
|
|
121
|
+
font-family: 'Source Sans Pro';
|
|
122
|
+
font-style: normal;
|
|
123
|
+
font-weight: 400;
|
|
124
|
+
src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v10/ODelI1aHBYDBqgeIAH2zlBM0YzuT7MdOe03otPbuUS0.woff) format('woff');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@font-face {
|
|
128
|
+
font-family: 'Source Sans Pro';
|
|
129
|
+
font-style: normal;
|
|
130
|
+
font-weight: 700;
|
|
131
|
+
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v10/toadOcfmlt9b38dHJxOBGFkQc6VGVFSmCnC_l7QZG60.woff) format('woff');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Avoid browser level font resizing.
|
|
137
|
+
* 1. Windows Mobile
|
|
138
|
+
* 2. iOS / OSX
|
|
139
|
+
*/
|
|
140
|
+
body,
|
|
141
|
+
table,
|
|
142
|
+
td,
|
|
143
|
+
a {
|
|
144
|
+
-ms-text-size-adjust: 100%;
|
|
145
|
+
/* 1 */
|
|
146
|
+
-webkit-text-size-adjust: 100%;
|
|
147
|
+
/* 2 */
|
|
148
|
+
}
|
|
149
|
+
.ExternalClass {width: 100%;}
|
|
150
|
+
/**
|
|
151
|
+
* Remove extra space added to tables and cells in Outlook.
|
|
152
|
+
*/
|
|
153
|
+
table,
|
|
154
|
+
td {
|
|
155
|
+
mso-table-rspace: 0pt;
|
|
156
|
+
mso-table-lspace: 0pt;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Better fluid images in Internet Explorer.
|
|
161
|
+
*/
|
|
162
|
+
img {
|
|
163
|
+
-ms-interpolation-mode: bicubic;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Remove blue links for iOS devices.
|
|
168
|
+
*/
|
|
169
|
+
a[x-apple-data-detectors] {
|
|
170
|
+
font-family: inherit !important;
|
|
171
|
+
font-size: inherit !important;
|
|
172
|
+
font-weight: inherit !important;
|
|
173
|
+
line-height: inherit !important;
|
|
174
|
+
color: inherit !important;
|
|
175
|
+
text-decoration: none !important;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Fix centering issues in Android 4.4.
|
|
180
|
+
*/
|
|
181
|
+
div[style*="margin: 16px 0;"] {
|
|
182
|
+
margin: 0 !important;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Collapse table borders to avoid space between cells.
|
|
187
|
+
*/
|
|
188
|
+
table {
|
|
189
|
+
border-collapse: collapse !important;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
a {
|
|
193
|
+
color: #1a82e2;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
img {
|
|
197
|
+
height: auto;
|
|
198
|
+
line-height: 100%;
|
|
199
|
+
text-decoration: none;
|
|
200
|
+
border: 0;
|
|
201
|
+
outline: none;
|
|
202
|
+
}
|
|
203
|
+
</style>
|
|
204
|
+
<!-- CSS Reset : END -->
|
|
205
|
+
|
|
206
|
+
<style>
|
|
207
|
+
.fluid {
|
|
208
|
+
width: 100%;
|
|
209
|
+
}
|
|
210
|
+
.fixed {
|
|
211
|
+
width: 500px;
|
|
212
|
+
}
|
|
213
|
+
#body-table {
|
|
214
|
+
width: 100%;
|
|
215
|
+
margin: auto;
|
|
216
|
+
border-collapse: collapse;
|
|
217
|
+
table-layout: fixed;
|
|
218
|
+
}
|
|
219
|
+
#body-table #white-row > .spacer-left,
|
|
220
|
+
#body-table #white-row > .spacer-middle,
|
|
221
|
+
#body-table #white-row > .spacer-right {
|
|
222
|
+
height: 25px;
|
|
223
|
+
background-color: white;
|
|
224
|
+
}
|
|
225
|
+
#body-table #first-row > .spacer-left,
|
|
226
|
+
#body-table #first-row > .spacer-right {
|
|
227
|
+
height: 50px;
|
|
228
|
+
background-color: white;
|
|
229
|
+
}
|
|
230
|
+
#body-table #first-row > .spacer-middle {
|
|
231
|
+
height: 50px;
|
|
232
|
+
background-color: #313952;
|
|
233
|
+
}
|
|
234
|
+
#body-table #title-row > .spacer-left,
|
|
235
|
+
#body-table #title-row > .spacer-right {
|
|
236
|
+
height: 82px;
|
|
237
|
+
background-color: #eaf2ff;
|
|
238
|
+
}
|
|
239
|
+
#body-table #title-logo {
|
|
240
|
+
height: 132px;
|
|
241
|
+
background-color: #313952;
|
|
242
|
+
vertical-align: middle;
|
|
243
|
+
text-align: center;
|
|
244
|
+
}
|
|
245
|
+
#body-table .content-row > .spacer-left,
|
|
246
|
+
#body-table .content-row > .spacer-right {
|
|
247
|
+
background-color: #eaf2ff;
|
|
248
|
+
}
|
|
249
|
+
#body-table .content-row > .body-content {
|
|
250
|
+
background-color: #fff;
|
|
251
|
+
padding-right: 30px;
|
|
252
|
+
padding-left: 30px;
|
|
253
|
+
}
|
|
254
|
+
#body-table #spacer-row > .spacer-left,
|
|
255
|
+
#body-table #spacer-row > .spacer-middle,
|
|
256
|
+
#body-table #spacer-row > .spacer-right {
|
|
257
|
+
height: 50px;
|
|
258
|
+
background-color: #eaf2ff;
|
|
259
|
+
}
|
|
260
|
+
#body-table #footer-row {
|
|
261
|
+
border-top: 1px solid #ccdff3;
|
|
262
|
+
}
|
|
263
|
+
#body-table #footer-row > .spacer-left,
|
|
264
|
+
#body-table #footer-row > #footer-content,
|
|
265
|
+
#body-table #footer-row > .spacer-right {
|
|
266
|
+
background-color: #eaf2ff;
|
|
267
|
+
padding-top: 15px;
|
|
268
|
+
}
|
|
269
|
+
#body-table #footer-row > #footer-content {
|
|
270
|
+
padding-bottom: 40px !important;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
#footer-content > p {
|
|
274
|
+
font-size: 10px !important;
|
|
275
|
+
color: #a4b3cb !important;
|
|
276
|
+
margin-top: 0 !important;
|
|
277
|
+
}
|
|
278
|
+
</style>
|
|
279
|
+
|
|
280
|
+
</head>
|
|
281
|
+
<body width="100%" bgcolor="white" style="margin: 0; mso-line-height-rule: exactly;text-align: center;">
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
<!-- Visually Hidden Preheader Text : BEGIN -->
|
|
285
|
+
<div style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;">
|
|
286
|
+
{% block email_hidden_header %}
|
|
287
|
+
{% endblock %}
|
|
288
|
+
</div>
|
|
289
|
+
<!-- Visually Hidden Preheader Text : END -->
|
|
290
|
+
|
|
291
|
+
<!-- Email Body : BEGIN -->
|
|
292
|
+
<table id="body-table" role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" class="email-container">
|
|
293
|
+
<colgroup>
|
|
294
|
+
<col class="fluid">
|
|
295
|
+
<col class="fixed">
|
|
296
|
+
<col class="fluid">
|
|
297
|
+
</colgroup>
|
|
298
|
+
<tr id="white-row">
|
|
299
|
+
<td class="spacer-left"></td>
|
|
300
|
+
<td class="spacer-middle"></td>
|
|
301
|
+
<td class="spacer-right"></td>
|
|
302
|
+
</tr>
|
|
303
|
+
<tr id="first-row">
|
|
304
|
+
<td class="spacer-left"></td>
|
|
305
|
+
<td rowspan="2" id="title-logo">
|
|
306
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAA0CAYAAAAZgW/cAAAACXBIWXMAAAsSAAALEgHS3X78AAAFTklEQVR4AcVaT2gcVRz+sglhDNWuehBKIQFF0IsRkUIRG4tFqoXkKi4kB09eHIp4EDyFIhSkc/Cg9NAUBir2YFqsFSx0lSLYQ6kgjZSCFSRSbTEx4G42+0fe+ja8zL43772ZbyYfhM3OvMxv5nvf9/58mZHGu2+FAE6Bh0eDKF6zXa0Z1q4DeJFU9UIQxXPEZ5gCIK43A6Aqj90FUAewDGDo+SoAlog3AHkDqWiGtXEAXxFrzjbDWtWhnQ1VycevUlyzAA7Jn3kAZyShYfI6FameC8SHclHGBIDviTVd66ZhWpI0b2m3V5K8Q4AV+bmc8yZUuKhDELkB4Fti3TxETknb7vX4m3mVzCKIhMND7ZGf14g189h7yZPEAeYHz9onUtr7bMab0GHBcn5Cfgp7/0Osm0WV03IMzIoIiiJBVuWhZlib0p2QE82o/CrsfYVYd2gSsKK99XbOmpOiM7aJDKJYELme86IqTOqYSHz/gVjzOVMHGjEy8jyh7kwlcYCpSpO9k0TWd8vezbA2oawT86CaJJK5pjSpY4/mGHP5ZRufVTzOKrqDyCCKhTp+Y13coI6HNccuE2v62LuKbpfhhrtJRaJIe0sr6XAbwO/Eui67K3Ev4731v28Q6tV1RBZp74dS2l4l1nWxd9/W7frlb3JVam1e1yoyiOKbBdrbpEiB88SaLvbuTzKda1dWexvrmcfo3v17J5AcIxVEWS+sgaqONEWuArhFrGu0dzOsiXF6fPB96+wnEdpbK74Feg/+PLd58oNLSCGSOU6q6tBNNCqYiVCavXfM1t07KxutT0++40Nmn8TF4x8GUdyBicggikUK8pPHTdsQpkw0Kph7b9GB04ZzQ2vHAZm9e6ufodczz+TtrT+6P994b3Px+MdqLjmWciORzN8YEDZbdLiOsPePAA6Q6i4kt40y2BjVNRZkbn70/unKU898PjZz9IWRJ/Y9icpoB71uBe32WOfWzXr74rnbyp84EblMJHJSpuF/ObT9mkjknGb/bd3J9NV5Z6Uud10mrA1sjZQxEgUEvm86tmMGvpMaezO2hEj+u8FIpARz0jns2I4d+G5POmm2zgBvIlmJ0H4ATzu2ZU466jKIpkbV1rARKe3NVOVRx3aXiImQau9CbA0HRYJM5CsebZmB7wLR1p0gih8kD1qJJAe+PvZmBr5zRaoRjorELtmbGfhOEpdUuYhk7r197M1cfr1BuEbH9BaJE5HkRGi/fBXEBczAd5ZwDeOrOK6KBNneBx3bMQPfRzw60AQKkczA91WPtszA17UDdTDaGj5ESnuzEiEfdTADX58OTCL1DTsfRYKsSld1MAPfPPYeWjuq8CWSOU76qOMLYt0s9m4FUbyR1sCLSHLg66OOL0k1kdHe1hdnfRUJ8prSVR2/APiOVDOLvVNtjYxElm1vMVu2dml8hrT1v7ZG3kSSA18XdQzGpt0an622RkZFgvxQr1nON1BMB7puGa22Rk4iWYnQEcu/adXZktmBLzm0cbI1shJZQOD7csq57QcJonipxA6Eq62RQ5EoSR2tZKRfYgfC1dbIQyQ58DWpQ2ersuzdcLU1cioSJaijkTxQUgcK3Pe5UF4imYtznTpM2zLmmtJkb+fxEXmJJAe+OnWYrMUkUteBDbkJcEZeRaJAe+smmj5K6EAvW4NEZFHqsA30RY7PXrYGg0hy4CvUsU/+PjTRJMAcn19Xfve2NUiKFChClan5HznSO6B0oLetQSSSabNj+J+oVCIliuhAb1uDRSRZHc8CeMyxLbsD17LYGkRFCpQe+MoOZAW+ogNFKuQPAP8ByFisQrjpMXEAAAAASUVORK5CYII=" alt="Logo">
|
|
307
|
+
</td>
|
|
308
|
+
<td class="spacer-right"></td>
|
|
309
|
+
</tr>
|
|
310
|
+
<tr id="title-row">
|
|
311
|
+
<td class="spacer-left"></td>
|
|
312
|
+
<td class="spacer-right"></td>
|
|
313
|
+
</tr>
|
|
314
|
+
{% block body %}
|
|
315
|
+
{% endblock %}
|
|
316
|
+
<tr id="spacer-row">
|
|
317
|
+
<td class="spacer-left"></td>
|
|
318
|
+
<td class="spacer-middle"></td>
|
|
319
|
+
<td class="spacer-right"></td>
|
|
320
|
+
</tr>
|
|
321
|
+
<tr id="footer-row">
|
|
322
|
+
<td class="spacer-left"></td>
|
|
323
|
+
<td id="footer-content" class="x-gmail-data-detectors">
|
|
324
|
+
{% block impress %}
|
|
325
|
+
<p>{% translate "This E-Mail is autogenerated by Stainly. If you need more information, please visit the Stainly-Bench." %}</p>
|
|
326
|
+
{% endblock %}
|
|
327
|
+
</td>
|
|
328
|
+
<td class="spacer-right"></td>
|
|
329
|
+
</tr>
|
|
330
|
+
|
|
331
|
+
</table>
|
|
332
|
+
<!-- Email Footer : END -->
|
|
333
|
+
|
|
334
|
+
</body>
|
|
335
|
+
</html>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{% load i18n %}
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<!-- DEFAULTS -->
|
|
7
|
+
<meta charset="utf-8">
|
|
8
|
+
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
|
|
9
|
+
<meta name="theme-color" content="#000000">
|
|
10
|
+
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
|
11
|
+
<meta http-equiv="Pragma" content="no-cache" />
|
|
12
|
+
<meta http-equiv="Expires" content="0" />
|
|
13
|
+
<!-- TITLE -->
|
|
14
|
+
<title>{{WBCORE_CONTEXT.TITLE}}</title>
|
|
15
|
+
<!-- FAVICON -->
|
|
16
|
+
{% if WBCORE_CONTEXT.FAVICON_URL %}
|
|
17
|
+
<link rel="shortcut icon" type="image/png" href="{{WBCORE_CONTEXT.FAVICON_URL}}" />
|
|
18
|
+
{% endif %}
|
|
19
|
+
<!-- FONT -->
|
|
20
|
+
<link href="{{WBCORE_CONTEXT.FONT_URL}}" rel="stylesheet">
|
|
21
|
+
<!-- EXTERNAL CSS FILES -->
|
|
22
|
+
{% for wbcore_css_url in WBCORE_CONTEXT.CSS_URLS %}
|
|
23
|
+
<link href="{{wbcore_css_url}}" rel="stylesheet" />
|
|
24
|
+
{% endfor %}
|
|
25
|
+
<!-- EXTERNAL CDNS -->
|
|
26
|
+
{% for wbcore_cdn_url in WBCORE_CONTEXT.CDN_URLS %}
|
|
27
|
+
<script crossorigin referrerpolicy="origin" src="{{wbcore_cdn_url}}"></script>
|
|
28
|
+
{% endfor %}
|
|
29
|
+
<!-- WBCORE CSS -->
|
|
30
|
+
{% if WBCORE_CONTEXT.CSS_URL %}
|
|
31
|
+
<link href="{{WBCORE_CONTEXT.CSS_URL}}" rel="stylesheet" type="text/css">
|
|
32
|
+
{% endif %}
|
|
33
|
+
|
|
34
|
+
{% if WBCORE_CONTEXT.CONFIG_URL %}
|
|
35
|
+
<script type="text/javascript">window.wbcore_config_url = "{{WBCORE_CONTEXT.CONFIG_URL}}"</script>
|
|
36
|
+
{% endif %}
|
|
37
|
+
|
|
38
|
+
</head>
|
|
39
|
+
|
|
40
|
+
<body><noscript>{% translate "You need to enable JavaScript to run this app." %}</noscript>
|
|
41
|
+
<div id="root"></div>
|
|
42
|
+
<!-- WBCORE JS -->
|
|
43
|
+
<script>window.idle_time = {{WBCORE_CONTEXT.IDLE_TIME}};</script>
|
|
44
|
+
<script>window.idle_warning_time = {{WBCORE_CONTEXT.IDLE_WARNING_TIME}};</script>
|
|
45
|
+
{% if WBCORE_CONTEXT.JS_URL %}
|
|
46
|
+
<script type="module" src="{{WBCORE_CONTEXT.JS_RUNTIME_URL}}"></script>
|
|
47
|
+
<script type="module" src="{{WBCORE_CONTEXT.JS_URL}}"></script>
|
|
48
|
+
{% endif %}
|
|
49
|
+
</body>
|
|
50
|
+
|
|
51
|
+
</html>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
from selenium.common.exceptions import TimeoutException
|
|
2
|
+
from selenium.webdriver.common.by import By
|
|
3
|
+
from selenium.webdriver.remote.webdriver import WebDriver
|
|
4
|
+
from selenium.webdriver.remote.webelement import WebElement
|
|
5
|
+
from selenium.webdriver.support import expected_conditions as EC
|
|
6
|
+
from selenium.webdriver.support.color import Color
|
|
7
|
+
from selenium.webdriver.support.wait import WebDriverWait
|
|
8
|
+
|
|
9
|
+
from .e2e_helper_methods import find_element
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def does_background_color_match(element: WebElement, expected_color: str) -> bool:
|
|
13
|
+
"""Check if the background color of an element matches the expected color.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
element (WebElement): The element to check the background of.
|
|
17
|
+
expected_color (str): The expected color.
|
|
18
|
+
|
|
19
|
+
Returns:
|
|
20
|
+
bool: True if the background color is as expected
|
|
21
|
+
"""
|
|
22
|
+
element_rgb = element.value_of_css_property("background-color")
|
|
23
|
+
element_rgb = Color.from_string(element_rgb).rgb
|
|
24
|
+
return element_rgb == expected_color
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def is_text_visible(driver: WebDriver, text: str) -> bool:
|
|
28
|
+
"""Check if the searched text is visible on the current page.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
driver (WebDriver): The Selenium webdriver.
|
|
32
|
+
text (str): Searched text.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
bool: True if the text is visible
|
|
36
|
+
"""
|
|
37
|
+
return True if find_element(driver, f"//*[text()='{text}']") else False
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def is_string_not_visible(driver: WebDriver, string: str) -> bool:
|
|
41
|
+
"""Check if the searched text is not visible on the current page.
|
|
42
|
+
Sometimes selenium is faster, that the page can refresh. So this method can wait up to 10 seconds for a string to not be visible.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
driver (WebDriver): The Selenium webdriver.
|
|
46
|
+
text (str): Searched text.
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
bool: True if the text is not visible
|
|
50
|
+
"""
|
|
51
|
+
try:
|
|
52
|
+
WebDriverWait(driver, 5).until(EC.invisibility_of_element_located((By.XPATH, f"//*[text()='{string}']")))
|
|
53
|
+
return True
|
|
54
|
+
except TimeoutException:
|
|
55
|
+
return False
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def is_tag_visible(driver: WebDriver, tag_label: str) -> bool:
|
|
59
|
+
"""Check if a tag with a certain label is visible on the current page.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
driver (WebDriver): The Selenium webdriver.
|
|
63
|
+
text (str): The label text.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
bool: True if the label is visible
|
|
68
|
+
"""
|
|
69
|
+
return True if find_element(driver, f"//*[@class='tag-label' and text()='{tag_label}']") else False
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def is_tag_not_visible(driver: WebDriver, tag_label: str) -> bool:
|
|
73
|
+
"""Check if a tag with a certain label is not visible on the current page.
|
|
74
|
+
Sometimes selenium is faster, that the page can refresh. So this method can wait up to 10 seconds for a tag to not be visible.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
driver (WebDriver): The Selenium webdriver.
|
|
78
|
+
text (str): The label text.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
bool: True if the tag is not visible
|
|
82
|
+
"""
|
|
83
|
+
try:
|
|
84
|
+
WebDriverWait(driver, 2.5).until(
|
|
85
|
+
EC.invisibility_of_element_located((By.XPATH, f"//*[@class='tag-label' and text()='{tag_label}']"))
|
|
86
|
+
)
|
|
87
|
+
return True
|
|
88
|
+
except TimeoutException:
|
|
89
|
+
return False
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def is_error_visible(driver: WebDriver):
|
|
93
|
+
"""Check if an error element is visible on the current page.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
driver (WebDriver): The Selenium webdriver.
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
bool: True if an error element is visible
|
|
100
|
+
"""
|
|
101
|
+
error_element = find_element(driver, "//div[contains(@type, 'error')]", 2.5)
|
|
102
|
+
saving_failed_hint = find_element(driver, "//div[contains(@class, 'task-dropper-content')]", 2.5)
|
|
103
|
+
|
|
104
|
+
if saving_failed_hint and saving_failed_hint.is_displayed():
|
|
105
|
+
WebDriverWait(driver, 10).until_not(
|
|
106
|
+
EC.invisibility_of_element_located((By.XPATH, "//div[contains(@class, 'task-dropper-content')]"))
|
|
107
|
+
)
|
|
108
|
+
return error_element is not None
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def is_counter_as_expected(driver: WebDriver, count: int):
|
|
112
|
+
"""Check if list counter displays the right number.
|
|
113
|
+
|
|
114
|
+
Args:
|
|
115
|
+
driver (WebDriver): The Selenium webdriver.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
bool: True if the counter is right.
|
|
119
|
+
"""
|
|
120
|
+
find_element(driver, f"//span[@class='ag-status-name-value-value' and text()='{count}']")
|
|
121
|
+
return find_element is not None
|