dsetool.policy 1.0.0__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.
- dsetool/policy/__init__.py +1 -0
- dsetool/policy/adapters/__init__.py +0 -0
- dsetool/policy/adapters/configure.zcml +7 -0
- dsetool/policy/adapters/traversing.py +34 -0
- dsetool/policy/browser/configure.zcml +42 -0
- dsetool/policy/browser/overrides/euphorie.client.browser.templates.login.pt +453 -0
- dsetool/policy/browser/templates/identification.pt +76 -0
- dsetool/policy/browser/templates/start.pt +282 -0
- dsetool/policy/browser/webhelpers.py +28 -0
- dsetool/policy/configure.zcml +47 -0
- dsetool/policy/interfaces.py +16 -0
- dsetool/policy/locales/bg/LC_MESSAGES/euphorie.po +740 -0
- dsetool/policy/locales/ca/LC_MESSAGES/euphorie.po +750 -0
- dsetool/policy/locales/cs/LC_MESSAGES/euphorie.po +738 -0
- dsetool/policy/locales/da/LC_MESSAGES/euphorie.po +747 -0
- dsetool/policy/locales/de/LC_MESSAGES/euphorie.po +737 -0
- dsetool/policy/locales/el/LC_MESSAGES/euphorie.po +749 -0
- dsetool/policy/locales/en/LC_MESSAGES/euphorie.po +374 -0
- dsetool/policy/locales/es/LC_MESSAGES/euphorie.po +747 -0
- dsetool/policy/locales/et/LC_MESSAGES/euphorie.po +623 -0
- dsetool/policy/locales/euphorie.pot +339 -0
- dsetool/policy/locales/fi/LC_MESSAGES/euphorie.po +735 -0
- dsetool/policy/locales/fr/LC_MESSAGES/euphorie.po +744 -0
- dsetool/policy/locales/hr/LC_MESSAGES/euphorie.po +735 -0
- dsetool/policy/locales/hu/LC_MESSAGES/euphorie.po +741 -0
- dsetool/policy/locales/is/LC_MESSAGES/euphorie.po +745 -0
- dsetool/policy/locales/it/LC_MESSAGES/euphorie.po +747 -0
- dsetool/policy/locales/lt/LC_MESSAGES/euphorie.po +736 -0
- dsetool/policy/locales/lv/LC_MESSAGES/euphorie.po +735 -0
- dsetool/policy/locales/mt/LC_MESSAGES/euphorie.po +744 -0
- dsetool/policy/locales/nl/LC_MESSAGES/euphorie.po +730 -0
- dsetool/policy/locales/nl_BE/LC_MESSAGES/euphorie.po +738 -0
- dsetool/policy/locales/no/LC_MESSAGES/euphorie.po +749 -0
- dsetool/policy/locales/pl/LC_MESSAGES/euphorie.po +745 -0
- dsetool/policy/locales/pt/LC_MESSAGES/euphorie.po +744 -0
- dsetool/policy/locales/ro/LC_MESSAGES/euphorie.po +751 -0
- dsetool/policy/locales/sk/LC_MESSAGES/euphorie.po +625 -0
- dsetool/policy/locales/sl/LC_MESSAGES/euphorie.po +736 -0
- dsetool/policy/locales/sv/LC_MESSAGES/euphorie.po +744 -0
- dsetool/policy/ploneintranet/__init__.py +0 -0
- dsetool/policy/ploneintranet/configure.zcml +100 -0
- dsetool/policy/ploneintranet/quaive_create.py +28 -0
- dsetool/policy/ploneintranet/quaive_edit.py +14 -0
- dsetool/policy/ploneintranet/templates/choice_view.pt +47 -0
- dsetool/policy/ploneintranet/templates/option_view.pt +29 -0
- dsetool/policy/ploneintranet/templates/recommendation_view.pt +26 -0
- dsetool/policy/profiles/default/browserlayer.xml +6 -0
- dsetool/policy/profiles/default/metadata.xml +9 -0
- dsetool/policy/profiles/default/workflows.xml +8 -0
- dsetool/policy/profiles/uninstall/browserlayer.xml +6 -0
- dsetool/policy/setuphandlers.py +50 -0
- dsetool/policy/testing.py +24 -0
- dsetool/policy/tests/__init__.py +0 -0
- dsetool/policy/tests/test_setup.py +69 -0
- dsetool/policy/upgrades/__init__.py +0 -0
- dsetool/policy/upgrades/configure.zcml +16 -0
- dsetool/policy/upgrades/v1/20250827093930_fix_the_security_settings/__init__.py +0 -0
- dsetool/policy/upgrades/v1/20250827093930_fix_the_security_settings/upgrade.py +39 -0
- dsetool/policy/upgrades/v1/20250827093930_fix_the_security_settings/workflows.xml +8 -0
- dsetool/policy/upgrades/v1/__init__.py +0 -0
- dsetool_policy-1.0.0.dist-info/METADATA +67 -0
- dsetool_policy-1.0.0.dist-info/RECORD +65 -0
- dsetool_policy-1.0.0.dist-info/WHEEL +5 -0
- dsetool_policy-1.0.0.dist-info/entry_points.txt +2 -0
- dsetool_policy-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Init and utils."""
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from dsetool.policy.interfaces import IDSEToolPolicyClientLayer
|
|
2
|
+
from dsetool.policy.interfaces import IDSEToolPolicyLayer
|
|
3
|
+
from euphorie.client.client import IClient
|
|
4
|
+
from zope.component import adapter
|
|
5
|
+
from zope.interface import directlyProvidedBy
|
|
6
|
+
from zope.interface import directlyProvides
|
|
7
|
+
from zope.interface import implementer
|
|
8
|
+
from zope.publisher.interfaces import IPublishTraverse
|
|
9
|
+
from zope.publisher.interfaces.browser import IBrowserSkinType
|
|
10
|
+
from ZPublisher.BaseRequest import DefaultPublishTraverse
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@adapter(IClient, IDSEToolPolicyLayer)
|
|
14
|
+
@implementer(IPublishTraverse)
|
|
15
|
+
class ClientPublishTraverser(DefaultPublishTraverse):
|
|
16
|
+
"""Publish traverser to setup the skin layer.
|
|
17
|
+
|
|
18
|
+
This traverser marks the request with IOSHAClientSkinLayer when the
|
|
19
|
+
client is traversed and the osha.oira product is installed.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def publishTraverse(self, request, name):
|
|
23
|
+
from euphorie.client.utils import setRequest
|
|
24
|
+
|
|
25
|
+
setRequest(request)
|
|
26
|
+
request.client = self.context
|
|
27
|
+
|
|
28
|
+
ifaces = [
|
|
29
|
+
iface
|
|
30
|
+
for iface in directlyProvidedBy(request)
|
|
31
|
+
if not IBrowserSkinType.providedBy(iface)
|
|
32
|
+
]
|
|
33
|
+
directlyProvides(request, IDSEToolPolicyClientLayer, ifaces)
|
|
34
|
+
return super().publishTraverse(request, name)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<configure
|
|
2
|
+
xmlns="http://namespaces.zope.org/zope"
|
|
3
|
+
xmlns:browser="http://namespaces.zope.org/browser"
|
|
4
|
+
>
|
|
5
|
+
|
|
6
|
+
<include package="z3c.jbot" />
|
|
7
|
+
|
|
8
|
+
<browser:jbot
|
|
9
|
+
directory="overrides"
|
|
10
|
+
layer="dsetool.policy.interfaces.IDSEToolPolicyLayer"
|
|
11
|
+
/>
|
|
12
|
+
|
|
13
|
+
<configure package="euphorie.client.browser">
|
|
14
|
+
<browser:page
|
|
15
|
+
name="webhelpers"
|
|
16
|
+
for="*"
|
|
17
|
+
class="dsetool.policy.browser.webhelpers.DSEToolWebHelpers"
|
|
18
|
+
template="templates/webhelpers.pt"
|
|
19
|
+
permission="zope.Public"
|
|
20
|
+
layer="dsetool.policy.interfaces.IDSEToolPolicyClientLayer"
|
|
21
|
+
/>
|
|
22
|
+
</configure>
|
|
23
|
+
|
|
24
|
+
<browser:page
|
|
25
|
+
name="start"
|
|
26
|
+
for="euphorie.client.adapters.session_traversal.ITraversedSurveySession"
|
|
27
|
+
class="euphorie.client.browser.session.Start"
|
|
28
|
+
template="templates/start.pt"
|
|
29
|
+
permission="euphorie.client.ViewSurvey"
|
|
30
|
+
layer="dsetool.policy.interfaces.IDSEToolPolicyClientLayer"
|
|
31
|
+
/>
|
|
32
|
+
|
|
33
|
+
<browser:page
|
|
34
|
+
name="identification"
|
|
35
|
+
for="euphorie.client.adapters.session_traversal.ITraversedSurveySession"
|
|
36
|
+
class="euphorie.client.browser.session.Identification"
|
|
37
|
+
template="templates/identification.pt"
|
|
38
|
+
permission="euphorie.client.ViewSurvey"
|
|
39
|
+
layer="dsetool.policy.interfaces.IDSEToolPolicyClientLayer"
|
|
40
|
+
/>
|
|
41
|
+
|
|
42
|
+
</configure>
|
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml"
|
|
3
|
+
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
|
|
4
|
+
xmlns:meta="http://xml.zope.org/namespaces/meta"
|
|
5
|
+
xmlns:metal="http://xml.zope.org/namespaces/metal"
|
|
6
|
+
xmlns:tal="http://xml.zope.org/namespaces/tal"
|
|
7
|
+
id="login"
|
|
8
|
+
meta:interpolation="true"
|
|
9
|
+
metal:use-macro="context/@@shell_bare/macros/shell_bare"
|
|
10
|
+
tal:define="
|
|
11
|
+
webhelpers nocall:context/@@webhelpers;
|
|
12
|
+
client nocall:request/client;
|
|
13
|
+
"
|
|
14
|
+
i18n:domain="euphorie"
|
|
15
|
+
>
|
|
16
|
+
|
|
17
|
+
<body>
|
|
18
|
+
<metal:slot fill-slot="content"
|
|
19
|
+
tal:define="
|
|
20
|
+
is_guest_account webhelpers/is_guest_account;
|
|
21
|
+
survey_url webhelpers/survey_url;
|
|
22
|
+
came_from_param webhelpers/came_from_param;
|
|
23
|
+
base_url webhelpers/base_url;
|
|
24
|
+
"
|
|
25
|
+
>
|
|
26
|
+
|
|
27
|
+
<div id="portal">
|
|
28
|
+
|
|
29
|
+
<form class="pat-form"
|
|
30
|
+
id="login"
|
|
31
|
+
action="${context/absolute_url}/@@login#login"
|
|
32
|
+
method="post"
|
|
33
|
+
>
|
|
34
|
+
|
|
35
|
+
<input name="action"
|
|
36
|
+
type="hidden"
|
|
37
|
+
value="login"
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
<input name="came_from"
|
|
42
|
+
type="hidden"
|
|
43
|
+
value="${request/came_from}"
|
|
44
|
+
tal:condition="request/came_from|nothing"
|
|
45
|
+
/>
|
|
46
|
+
|
|
47
|
+
<fieldset class="vertical">
|
|
48
|
+
|
|
49
|
+
<label>
|
|
50
|
+
<i18n:msg translate="label_email">Email address</i18n:msg>
|
|
51
|
+
<input class="pat-autofocus"
|
|
52
|
+
name="__ac_name"
|
|
53
|
+
required
|
|
54
|
+
size="50"
|
|
55
|
+
type="email"
|
|
56
|
+
value="${request/__ac_name|nothing}"
|
|
57
|
+
/>
|
|
58
|
+
</label>
|
|
59
|
+
<label>
|
|
60
|
+
<i18n:msg translate="label_login_password">Password</i18n:msg>
|
|
61
|
+
<input name="__ac_password:utf8:ustring"
|
|
62
|
+
required
|
|
63
|
+
size="50"
|
|
64
|
+
type="password"
|
|
65
|
+
/>
|
|
66
|
+
</label>
|
|
67
|
+
|
|
68
|
+
<p class="message warning"
|
|
69
|
+
tal:condition="view/error|nothing"
|
|
70
|
+
i18n:translate="incorrect_login"
|
|
71
|
+
>
|
|
72
|
+
Your login name and/or password were entered incorrectly. Please check and try again or
|
|
73
|
+
<a class="reminder"
|
|
74
|
+
href="${view/reset_password_request_url}"
|
|
75
|
+
i18n:name="request_an_email_reminder"
|
|
76
|
+
i18n:translate="request_an_email_reminder"
|
|
77
|
+
>reset your
|
|
78
|
+
password</a>.
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
<fieldset class="pat-checklist"
|
|
82
|
+
tal:condition="python:context.portal_registry.get('euphorie.use_remember_login', True)"
|
|
83
|
+
>
|
|
84
|
+
<label>
|
|
85
|
+
<i18n:msg translate="label_keep_logged_in">Keep me logged in.</i18n:msg>
|
|
86
|
+
<input name="remember"
|
|
87
|
+
type="checkbox"
|
|
88
|
+
/>
|
|
89
|
+
</label>
|
|
90
|
+
</fieldset>
|
|
91
|
+
|
|
92
|
+
<div class="button-bar">
|
|
93
|
+
<button class="pat-button default"
|
|
94
|
+
name="login"
|
|
95
|
+
type="submit"
|
|
96
|
+
i18n:translate="label_login"
|
|
97
|
+
>Log
|
|
98
|
+
in</button>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<article class="pat-rich">
|
|
102
|
+
<ul class="colofon">
|
|
103
|
+
<li>
|
|
104
|
+
<i18n:msg translate="register_teaser">Don't have an account? Then please
|
|
105
|
+
<a href="#registration"
|
|
106
|
+
i18n:name="register_link"
|
|
107
|
+
i18n:translate="label_register_first"
|
|
108
|
+
>register</a>
|
|
109
|
+
first.
|
|
110
|
+
</i18n:msg>
|
|
111
|
+
</li>
|
|
112
|
+
<li>
|
|
113
|
+
<a class="pat-modal"
|
|
114
|
+
href="${view/reset_password_request_url}"
|
|
115
|
+
data-pat-modal="class: small panel"
|
|
116
|
+
i18n:translate="label_forgot_password"
|
|
117
|
+
>I forgot
|
|
118
|
+
my password</a>
|
|
119
|
+
</li>
|
|
120
|
+
<li>
|
|
121
|
+
<a href="/about-e-tool.html"
|
|
122
|
+
target="_blank"
|
|
123
|
+
i18n:translate=""
|
|
124
|
+
>Learn more
|
|
125
|
+
about the Dangerous Substances eTool</a>
|
|
126
|
+
</li>
|
|
127
|
+
</ul>
|
|
128
|
+
</article>
|
|
129
|
+
|
|
130
|
+
</fieldset>
|
|
131
|
+
</form>
|
|
132
|
+
|
|
133
|
+
<form class="pat-form pat-validation"
|
|
134
|
+
id="registration"
|
|
135
|
+
action="${context/absolute_url}/@@login#registration"
|
|
136
|
+
method="post"
|
|
137
|
+
data-pat-validation="${webhelpers/pat_validation_messages}"
|
|
138
|
+
tal:define="
|
|
139
|
+
errors view/errors;
|
|
140
|
+
"
|
|
141
|
+
>
|
|
142
|
+
|
|
143
|
+
<article class="pat-rich">
|
|
144
|
+
<h1 i18n:translate="header_register">Register</h1>
|
|
145
|
+
</article>
|
|
146
|
+
|
|
147
|
+
<input name="action"
|
|
148
|
+
type="hidden"
|
|
149
|
+
value="register"
|
|
150
|
+
/>
|
|
151
|
+
|
|
152
|
+
<input name="came_from"
|
|
153
|
+
type="hidden"
|
|
154
|
+
value="${request/came_from}"
|
|
155
|
+
tal:condition="request/came_from|nothing"
|
|
156
|
+
/>
|
|
157
|
+
|
|
158
|
+
<fieldset class="vertical">
|
|
159
|
+
|
|
160
|
+
<label class="${python:'error' if 'first_name' in errors else None}">
|
|
161
|
+
<i18n:msg translate="label_first_name_optional">First name (optional)</i18n:msg>
|
|
162
|
+
<input class="pat-autofocus"
|
|
163
|
+
name="first_name"
|
|
164
|
+
type="text"
|
|
165
|
+
value="${request/first_name|nothing}"
|
|
166
|
+
/>
|
|
167
|
+
<em class="message warning"
|
|
168
|
+
tal:condition="exists:errors/first_name"
|
|
169
|
+
tal:content="errors/first_name"
|
|
170
|
+
>Invalid first name</em>
|
|
171
|
+
</label>
|
|
172
|
+
|
|
173
|
+
<label class="${python:'error' if 'last_name' in errors else None}">
|
|
174
|
+
<i18n:msg translate="label_last_name_optional">Last name (optional)</i18n:msg>
|
|
175
|
+
<input class="pat-autofocus"
|
|
176
|
+
name="last_name"
|
|
177
|
+
type="text"
|
|
178
|
+
value="${request/last_name|nothing}"
|
|
179
|
+
/>
|
|
180
|
+
<em class="message warning"
|
|
181
|
+
tal:condition="exists:errors/last_name"
|
|
182
|
+
tal:content="errors/last_name"
|
|
183
|
+
>Invalid last name</em>
|
|
184
|
+
</label>
|
|
185
|
+
|
|
186
|
+
<label class="${python:'error' if 'email' in errors else None}">
|
|
187
|
+
<i18n:msg translate="label_email">Email address</i18n:msg>
|
|
188
|
+
<input class="pat-autofocus"
|
|
189
|
+
name="email"
|
|
190
|
+
required
|
|
191
|
+
type="email"
|
|
192
|
+
value="${request/email|nothing}"
|
|
193
|
+
/>
|
|
194
|
+
<em class="message warning"
|
|
195
|
+
tal:condition="exists:errors/email"
|
|
196
|
+
tal:content="errors/email"
|
|
197
|
+
>Invalid login name</em>
|
|
198
|
+
</label>
|
|
199
|
+
|
|
200
|
+
<label class="${python:'error' if 'password' in errors else None}">
|
|
201
|
+
<i18n:msg translate="label_new_password">Desired password</i18n:msg>
|
|
202
|
+
<input minlength="12"
|
|
203
|
+
name="password1:utf8:ustring"
|
|
204
|
+
required
|
|
205
|
+
type="password"
|
|
206
|
+
/>
|
|
207
|
+
<em class="message warning"
|
|
208
|
+
tal:condition="exists:errors/password"
|
|
209
|
+
tal:content="errors/password"
|
|
210
|
+
>Invalid password</em>
|
|
211
|
+
</label>
|
|
212
|
+
|
|
213
|
+
<label>
|
|
214
|
+
<i18n:msg translate="label_password_confirm">Again password</i18n:msg>
|
|
215
|
+
<input minlength="12"
|
|
216
|
+
name="password2:utf8:ustring"
|
|
217
|
+
required
|
|
218
|
+
type="password"
|
|
219
|
+
/>
|
|
220
|
+
</label>
|
|
221
|
+
|
|
222
|
+
<p class="pat-message info"
|
|
223
|
+
i18n:translate="help_password_requirements"
|
|
224
|
+
>
|
|
225
|
+
The password needs to be at least 12 characters long and needs to contain at least one lower
|
|
226
|
+
case letter, one upper case letter and one digit.
|
|
227
|
+
</p>
|
|
228
|
+
|
|
229
|
+
<metal:honeypot use-macro="webhelpers/macros/honeypot" />
|
|
230
|
+
|
|
231
|
+
<fieldset class="pat-checklist">
|
|
232
|
+
<label>
|
|
233
|
+
<span class="label-fragment-title">
|
|
234
|
+
<tal:i18n i18n:translate="label_agree_terms_conditions">
|
|
235
|
+
|
|
236
|
+
I agree with the
|
|
237
|
+
|
|
238
|
+
<a class="pat-modal"
|
|
239
|
+
href="${base_url}/terms-conditions#document-content"
|
|
240
|
+
data-pat-modal="class: sheet"
|
|
241
|
+
i18n:name="link_terms_conditions"
|
|
242
|
+
i18n:translate="label_data_protection_notice"
|
|
243
|
+
>
|
|
244
|
+
Data protection notice</a>
|
|
245
|
+
</tal:i18n>
|
|
246
|
+
</span>
|
|
247
|
+
<input name="terms"
|
|
248
|
+
required
|
|
249
|
+
type="checkbox"
|
|
250
|
+
/>
|
|
251
|
+
<em class="message warning"
|
|
252
|
+
tal:condition="exists:errors/terms"
|
|
253
|
+
tal:content="errors/terms"
|
|
254
|
+
>Invalid terms</em>
|
|
255
|
+
</label>
|
|
256
|
+
</fieldset>
|
|
257
|
+
|
|
258
|
+
<p class="button-bar">
|
|
259
|
+
<button class="default pat-button"
|
|
260
|
+
name="register"
|
|
261
|
+
type="submit"
|
|
262
|
+
i18n:translate="header_register"
|
|
263
|
+
>Register</button>
|
|
264
|
+
</p>
|
|
265
|
+
|
|
266
|
+
</fieldset>
|
|
267
|
+
</form>
|
|
268
|
+
|
|
269
|
+
<div id="welcome">
|
|
270
|
+
<div id="intro">
|
|
271
|
+
<header class="title-group">
|
|
272
|
+
<a href="#intro">
|
|
273
|
+
<h1>DS eTool</h1>
|
|
274
|
+
</a>
|
|
275
|
+
<p class="byline">
|
|
276
|
+
<tal:i18n i18n:translate="oira_name_line_1">Dangerous Substances</tal:i18n>
|
|
277
|
+
<tal:i18n i18n:translate="oira_name_line_2">eTool</tal:i18n>
|
|
278
|
+
</p>
|
|
279
|
+
<p class="info"
|
|
280
|
+
style="margin-top: 10px"
|
|
281
|
+
>
|
|
282
|
+
<tal:i18n i18n:translate="info_login">Dear user, in order to be able to user the tool and get all functionalities, you are requested to login.</tal:i18n><br />
|
|
283
|
+
<tal:i18n i18n:translate="info_register">Please, if you do not have a user, register first.</tal:i18n>
|
|
284
|
+
</p>
|
|
285
|
+
</header>
|
|
286
|
+
<p class="options">
|
|
287
|
+
<a href="#login"
|
|
288
|
+
i18n:translate="label_login"
|
|
289
|
+
>Log in</a>
|
|
290
|
+
<a href="#registration"
|
|
291
|
+
i18n:translate="header_register"
|
|
292
|
+
>Register</a>
|
|
293
|
+
<a href="#more-information"
|
|
294
|
+
i18n:translate="label_learn_more"
|
|
295
|
+
>Learn more</a>
|
|
296
|
+
</p>
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
<tal:statusmsg tal:repeat="message webhelpers/messages">
|
|
300
|
+
<p class="pat-message notice"
|
|
301
|
+
id="${message/id}-body"
|
|
302
|
+
tal:content="message/message | nothing"
|
|
303
|
+
>
|
|
304
|
+
Status message</p>
|
|
305
|
+
</tal:statusmsg>
|
|
306
|
+
|
|
307
|
+
</div>
|
|
308
|
+
|
|
309
|
+
<div class="pat-rich long-read"
|
|
310
|
+
id="more-information"
|
|
311
|
+
>
|
|
312
|
+
<div class="pat-toolbar">
|
|
313
|
+
<div class="pat-toolbar-section">
|
|
314
|
+
<a class="pat-back-button"
|
|
315
|
+
href="#intro"
|
|
316
|
+
i18n:translate="home_link"
|
|
317
|
+
>Dashboard</a>
|
|
318
|
+
</div>
|
|
319
|
+
</div>
|
|
320
|
+
<article class="body-text pat-rich">
|
|
321
|
+
|
|
322
|
+
<h2 i18n:translate="">What is OiRA (Online Interactive Risk Assessment)?</h2>
|
|
323
|
+
<p i18n:translate="">OiRA stands for Online Interactive Risk Assessment. It is a web-based tool
|
|
324
|
+
that allows you to perform a health and safety risk assessment of your workplace.</p>
|
|
325
|
+
|
|
326
|
+
<tal:who-for condition="view/show_whofor">
|
|
327
|
+
<h4 i18n:translate="">Who is the OiRA tool for?</h4>
|
|
328
|
+
<div class="indented">
|
|
329
|
+
<p i18n:translate="">OiRA can be used by anyone wishing to assess health and
|
|
330
|
+
safety-related risks that might exist in their workplace.</p>
|
|
331
|
+
<p i18n:translate="">However, OiRA is designed to be of most value to smaller
|
|
332
|
+
businesses.</p>
|
|
333
|
+
<p i18n:translate="">OiRA is designed specifically to support them in assessing the
|
|
334
|
+
risks at work and helping them to produce a documented risk assessment including an
|
|
335
|
+
action plan tailored to the business's requirements.</p>
|
|
336
|
+
</div>
|
|
337
|
+
</tal:who-for>
|
|
338
|
+
|
|
339
|
+
<tal:what-to-do condition="view/show_what_to_do">
|
|
340
|
+
<h4 i18n:translate="">What do I have to do?</h4>
|
|
341
|
+
<div class="indented">
|
|
342
|
+
<p i18n:translate="">There are four main stages to complete in the assessment process:
|
|
343
|
+
</p>
|
|
344
|
+
<ul>
|
|
345
|
+
<li i18n:translate=""><strong i18n:name="preparation">
|
|
346
|
+
<tal:span i18n:translate="label_preparation">Preparation</tal:span>:
|
|
347
|
+
</strong>
|
|
348
|
+
This gives you an overview of the particular assessment you are about to begin
|
|
349
|
+
and can allow you to further customise the assessment to the specific nature of
|
|
350
|
+
your business.</li>
|
|
351
|
+
<li i18n:translate=""><strong i18n:name="identification">
|
|
352
|
+
<tal:span i18n:translate="label_identification">Identification</tal:span>:
|
|
353
|
+
</strong>
|
|
354
|
+
OiRA will present a series of potential health and safety hazards or problems
|
|
355
|
+
that could exist in your workplace. By answering the statements/questions with
|
|
356
|
+
either yes or no, you state if such hazards or problems are present. You can
|
|
357
|
+
also decide to leave a question unanswered and thus put it on hold to be
|
|
358
|
+
answered at a later stage.</li>
|
|
359
|
+
<li i18n:translate=""><strong i18n:name="evaluation">
|
|
360
|
+
<tal:span i18n:translate="label_evaluation">Evaluation</tal:span>:
|
|
361
|
+
</strong>
|
|
362
|
+
Here you will be able to determine the level of risk attached to each of the
|
|
363
|
+
items you identified as 'need to be addressed' in the 'Identification' stage.
|
|
364
|
+
</li>
|
|
365
|
+
<li i18n:translate=""><strong i18n:name="action-plan">
|
|
366
|
+
<tal:span i18n:translate="label_action_plan">Action Plan</tal:span>:
|
|
367
|
+
</strong>
|
|
368
|
+
In the fourth stage of the assessment you can decide what steps you will take to
|
|
369
|
+
address the risks you have identified previously and what resources this might
|
|
370
|
+
require. Based on this, a report will be automatically produced in the next
|
|
371
|
+
step.</li>
|
|
372
|
+
</ul>
|
|
373
|
+
</div>
|
|
374
|
+
</tal:what-to-do>
|
|
375
|
+
|
|
376
|
+
<tal:how-long condition="view/show_how_long">
|
|
377
|
+
<h4 i18n:translate="">How long will it take?</h4>
|
|
378
|
+
<div class="indented">
|
|
379
|
+
<p i18n:translate="">It's impossible to say how long an assessment will take in general
|
|
380
|
+
as the tools differ according to sectors and countries.</p>
|
|
381
|
+
<p i18n:translate="">However, you can spend whatever time you have available on an
|
|
382
|
+
assessment and then return to it when convenient to pick up from the same point you
|
|
383
|
+
left off.</p>
|
|
384
|
+
</div>
|
|
385
|
+
</tal:how-long>
|
|
386
|
+
|
|
387
|
+
<tal:why-register condition="view/show_why_register">
|
|
388
|
+
<h4 i18n:translate="">Why do I have to register?</h4>
|
|
389
|
+
<div class="indented">
|
|
390
|
+
<p i18n:translate="">The first thing you will be asked to do when you begin your first
|
|
391
|
+
risk assessment is to create an OiRA account - this is a simple and quick process.
|
|
392
|
+
</p>
|
|
393
|
+
<p i18n:translate="">Registering allows you to simply log in at any time to continue
|
|
394
|
+
previous assessments or to start new ones.</p>
|
|
395
|
+
<p i18n:translate="">You have to make sure to be in possession of a printed, accurate
|
|
396
|
+
and up-dated risk assessment (at any time).</p>
|
|
397
|
+
</div>
|
|
398
|
+
</tal:why-register>
|
|
399
|
+
|
|
400
|
+
<tal:prepare condition="view/show_prepare">
|
|
401
|
+
<h4 i18n:translate="">Do I need to prepare?</h4>
|
|
402
|
+
<div class="indented">
|
|
403
|
+
<p i18n:translate="">You do not need any kind of specific preparation to start using the
|
|
404
|
+
tool, however you should take some time to think about who is going to carry out the
|
|
405
|
+
risk assessment, how workers are going to be involved in the process, etc.</p>
|
|
406
|
+
</div>
|
|
407
|
+
</tal:prepare>
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
<ul class="ctas">
|
|
411
|
+
<li i18n:translate="text_create_account">
|
|
412
|
+
<a href="#registration"
|
|
413
|
+
i18n:name="link_register"
|
|
414
|
+
i18n:translate="verb_register"
|
|
415
|
+
>Register</a>
|
|
416
|
+
if you would like to use OiRA.
|
|
417
|
+
</li>
|
|
418
|
+
<li tal:condition="not:survey_url"
|
|
419
|
+
i18n:translate="text_test_session"
|
|
420
|
+
>
|
|
421
|
+
<a href="${base_url}/@@surveys?${came_from_param}"
|
|
422
|
+
title="Start a new test session"
|
|
423
|
+
i18n:attributes="title tooltip_start_test_session"
|
|
424
|
+
i18n:name="link_test_session"
|
|
425
|
+
i18n:translate="label_start_test_session"
|
|
426
|
+
>Start a test session</a>
|
|
427
|
+
if you only want to taste OiRA.
|
|
428
|
+
</li>
|
|
429
|
+
<li tal:condition="survey_url"
|
|
430
|
+
i18n:translate="text_test_session"
|
|
431
|
+
>
|
|
432
|
+
<a href="${base_url}/@@tryout?${came_from_param}#document-content"
|
|
433
|
+
title="Start a new test session"
|
|
434
|
+
i18n:attributes="title tooltip_start_test_session"
|
|
435
|
+
i18n:name="link_test_session"
|
|
436
|
+
i18n:translate="label_start_test_session"
|
|
437
|
+
>Start a test
|
|
438
|
+
session</a>
|
|
439
|
+
if you only want to taste OiRA.
|
|
440
|
+
</li>
|
|
441
|
+
</ul>
|
|
442
|
+
|
|
443
|
+
<metal:macro use-macro="context/appendix/macros/appendix" />
|
|
444
|
+
|
|
445
|
+
</article>
|
|
446
|
+
</div>
|
|
447
|
+
</div>
|
|
448
|
+
</div>
|
|
449
|
+
|
|
450
|
+
</metal:slot>
|
|
451
|
+
</body>
|
|
452
|
+
|
|
453
|
+
</html>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml"
|
|
3
|
+
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
|
|
4
|
+
xmlns:meta="http://xml.zope.org/namespaces/meta"
|
|
5
|
+
xmlns:metal="http://xml.zope.org/namespaces/metal"
|
|
6
|
+
xmlns:tal="http://xml.zope.org/namespaces/tal"
|
|
7
|
+
meta:interpolation="true"
|
|
8
|
+
metal:use-macro="context/@@shell/macros/shell"
|
|
9
|
+
tal:define="
|
|
10
|
+
client nocall:request/client;
|
|
11
|
+
webhelpers nocall:context/@@webhelpers;
|
|
12
|
+
"
|
|
13
|
+
i18n:domain="euphorie"
|
|
14
|
+
>
|
|
15
|
+
|
|
16
|
+
<body>
|
|
17
|
+
<metal:slot fill-slot="content">
|
|
18
|
+
<div class="pat-scroll-box"
|
|
19
|
+
id="content-pane"
|
|
20
|
+
>
|
|
21
|
+
<metal:call use-macro="webhelpers/macros/toolbar" />
|
|
22
|
+
<article class="pat-rich"
|
|
23
|
+
tal:define="
|
|
24
|
+
extra_text view/extra_text;
|
|
25
|
+
"
|
|
26
|
+
>
|
|
27
|
+
<h1>${context/Title}</h1>
|
|
28
|
+
<tal:block replace="tile:statusmessages" />
|
|
29
|
+
<tal:block-etoolspecific tal:condition="python:len(context.aq_parent.objectIds()) >= 3">
|
|
30
|
+
<p i18n:translate="intro_identification_dsetool">The questions are divided into 3 parts. The first
|
|
31
|
+
part is about identifying potential chemical risks in your company. The second part is about the
|
|
32
|
+
routines for chemical risk management. And the third part is about control measures to reduce
|
|
33
|
+
chemical risks.</p>
|
|
34
|
+
</tal:block-etoolspecific>
|
|
35
|
+
<p tal:condition="extra_text">${extra_text}</p>
|
|
36
|
+
</article>
|
|
37
|
+
<p class="button-bar pat-bumper">
|
|
38
|
+
<a class="pat-button pat-inject"
|
|
39
|
+
href="${view/next_url}"
|
|
40
|
+
data-pat-inject="history: record; source: #content; target: #content;"
|
|
41
|
+
i18n:translate="label_start_identification"
|
|
42
|
+
>Start Risk Identification</a>
|
|
43
|
+
</p>
|
|
44
|
+
</div>
|
|
45
|
+
</metal:slot>
|
|
46
|
+
|
|
47
|
+
<metal:slot fill-slot="splash_message_slot">
|
|
48
|
+
<div class="splash-message"
|
|
49
|
+
id="splash-message"
|
|
50
|
+
tal:condition="python:tool_notification is not None"
|
|
51
|
+
>
|
|
52
|
+
<hr class="trigger pat-switch"
|
|
53
|
+
data-pat-switch="selector: body; remove: splash-on-tool*; add: splash-off-${tool_notification/id}; store: session"
|
|
54
|
+
/>
|
|
55
|
+
<article class="pat-rich content">
|
|
56
|
+
<p>
|
|
57
|
+
<img src="${style_url}/oira-logo-colour.svg"
|
|
58
|
+
width="20%"
|
|
59
|
+
/>
|
|
60
|
+
</p>
|
|
61
|
+
<h1 tal:content="structure tool_notification/title">Message of the day!</h1>
|
|
62
|
+
<tal:content content="structure tool_notification/text">
|
|
63
|
+
<p>Sit amet consectetuer.</p>
|
|
64
|
+
<p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
|
|
65
|
+
deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
|
|
66
|
+
provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et
|
|
67
|
+
dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio.</p>
|
|
68
|
+
<p>OiRA Team</p>
|
|
69
|
+
</tal:content>
|
|
70
|
+
</article>
|
|
71
|
+
</div>
|
|
72
|
+
</metal:slot>
|
|
73
|
+
|
|
74
|
+
</body>
|
|
75
|
+
|
|
76
|
+
</html>
|