0002-cards-add-user-support-48392.patch
tests/admin_pages/test_card.py | ||
---|---|---|
278 | 278 |
assert '<span class="label">Category</span> <span class="value">Bar</span>' in resp.text |
279 | 279 | |
280 | 280 | |
281 |
def test_card_user_support(pub, studio): |
|
282 |
create_superuser(pub) |
|
283 | ||
284 |
CardDef.wipe() |
|
285 |
carddef = CardDef() |
|
286 |
carddef.name = 'card title' |
|
287 |
carddef.fields = [] |
|
288 |
carddef.store() |
|
289 | ||
290 |
app = login(get_app(pub)) |
|
291 |
resp = app.get('/backoffice/cards/1/') |
|
292 |
assert '<span class="label">User support</span> <span class="value">No</span>' in resp.text |
|
293 |
resp = resp.click(href='user_support') |
|
294 |
resp.forms[0]['user_support'] = 'optional' |
|
295 |
resp.forms[0].submit('submit') |
|
296 |
assert CardDef.get(carddef.id).user_support == 'optional' |
|
297 | ||
298 |
resp = app.get('/backoffice/cards/1/') |
|
299 |
assert '<span class="label">User support</span> <span class="value">Optional</span>' in resp.text |
|
300 | ||
301 | ||
281 | 302 |
def test_card_custom_view_data_source(pub, studio): |
282 | 303 |
user = create_superuser(pub) |
283 | 304 |
Role.wipe() |
tests/backoffice_pages/test_carddata.py | ||
---|---|---|
169 | 169 |
assert '<h3>Bar</h3>' in resp.text |
170 | 170 | |
171 | 171 | |
172 |
def test_carddata_management_user_support(pub, studio): |
|
173 |
user = create_user(pub) |
|
174 | ||
175 |
CardDef.wipe() |
|
176 |
carddef = CardDef() |
|
177 |
carddef.name = 'foo' |
|
178 |
carddef.fields = [] |
|
179 |
carddef.backoffice_submission_roles = user.roles |
|
180 |
carddef.workflow_roles = {'_editor': user.roles[0]} |
|
181 |
carddef.store() |
|
182 | ||
183 |
app = login(get_app(pub)) |
|
184 |
resp = app.get('/backoffice/data/foo/add/') |
|
185 |
assert 'Associated User' not in resp.text |
|
186 |
assert 'user_id' not in resp.form.fields |
|
187 | ||
188 |
carddef.user_support = 'foobar' |
|
189 |
carddef.store() |
|
190 |
resp = app.get('/backoffice/data/foo/add/') |
|
191 |
assert 'Associated User' not in resp.text |
|
192 |
assert 'user_id' not in resp.form.fields |
|
193 | ||
194 |
carddef.user_support = 'optional' |
|
195 |
carddef.store() |
|
196 |
resp = app.get('/backoffice/data/foo/add/') |
|
197 |
assert 'Associated User' in resp.text |
|
198 |
assert 'user_id' in resp.form.fields |
|
199 | ||
200 | ||
172 | 201 |
def test_studio_card_item_link(pub, studio): |
173 | 202 |
user = create_user(pub) |
174 | 203 |
CardDef.wipe() |
wcs/admin/forms.py | ||
---|---|---|
171 | 171 |
_q_exports = ['confirmation', 'only_allow_one', |
172 | 172 |
'always_advertise', 'tracking_code', 'online_status', 'captcha', |
173 | 173 |
'description', 'keywords', 'category', 'management', |
174 |
'geolocations', 'appearance', 'templates'] |
|
174 |
'geolocations', 'appearance', 'templates', 'user_support']
|
|
175 | 175 | |
176 | 176 |
def __init__(self, formdef): |
177 | 177 |
self.formdef = formdef |
... | ... | |
310 | 310 |
_('Existing forms will be updated in the background.')) |
311 | 311 |
return result |
312 | 312 | |
313 |
def user_support(self): |
|
314 |
form = Form(enctype='multipart/form-data') |
|
315 |
form.add( |
|
316 |
SingleSelectWidget, 'user_support', title=_('User support'), |
|
317 |
value=self.formdef.user_support, |
|
318 |
options=[(None, C_('user_support|No'), ''), ('optional', C_('user_support|Optional'), 'optional')] |
|
319 |
) |
|
320 |
return self.handle(form, _('User support')) |
|
321 | ||
313 | 322 |
def handle(self, form, title): |
314 | 323 |
if not self.formdef.is_readonly(): |
315 | 324 |
form.add_submit('submit', _('Submit')) |
... | ... | |
325 | 334 |
'description', 'keywords', 'category_id', |
326 | 335 |
'skip_from_360_view', 'geoloc_label', 'appearance_keywords', |
327 | 336 |
'include_download_all_button', |
328 |
'digest_template', 'drafts_lifespan'] |
|
337 |
'digest_template', 'drafts_lifespan', 'user_support']
|
|
329 | 338 |
for attr in attrs: |
330 | 339 |
widget = form.get_widget(attr) |
331 | 340 |
if widget: |
wcs/backoffice/cards.py | ||
---|---|---|
171 | 171 |
digest_template_status = C_('template|None') |
172 | 172 |
r += add_option_line('options/templates', |
173 | 173 |
_('Digest Template'), digest_template_status) |
174 |
if self.formdef.user_support == 'optional': |
|
175 |
user_support_status = C_('user_support|Optional') |
|
176 |
else: |
|
177 |
user_support_status = C_('user_support|No') |
|
178 |
r += add_option_line('options/user_support', _('User support'), user_support_status) |
|
174 | 179 | |
175 | 180 |
r += htmltext('</ul>') |
176 | 181 |
r += htmltext('</div>') |
wcs/backoffice/data_management.py | ||
---|---|---|
316 | 316 |
has_channel_support = False |
317 | 317 |
has_user_support = False |
318 | 318 | |
319 |
def __init__(self, *args, **kwargs): |
|
320 |
super().__init__(*args, **kwargs) |
|
321 |
if self.formdef.user_support == 'optional': |
|
322 |
self.has_user_support = True |
|
323 | ||
319 | 324 |
def submitted(self, form, *args): |
320 | 325 |
super(CardFillPage, self).submitted(form, *args) |
321 | 326 |
if get_response().get_header('location').endswith('/backoffice/submission/'): |
wcs/formdef.py | ||
---|---|---|
118 | 118 |
appearance_keywords = None |
119 | 119 |
digest_template = None |
120 | 120 |
drafts_lifespan = None |
121 |
user_support = None |
|
121 | 122 | |
122 | 123 |
geolocations = None |
123 | 124 | |
... | ... | |
136 | 137 |
TEXT_ATTRIBUTES = ['name', 'url_name', 'description', 'keywords', |
137 | 138 |
'publication_date', 'expiration_date', 'internal_identifier', |
138 | 139 |
'disabled_redirection', 'appearance_keywords', |
139 |
'digest_template', 'drafts_lifespan'] |
|
140 |
'digest_template', 'drafts_lifespan', 'user_support']
|
|
140 | 141 |
BOOLEAN_ATTRIBUTES = ['discussion', 'detailed_emails', 'disabled', |
141 | 142 |
'only_allow_one', 'enable_tracking_codes', 'confirmation', |
142 | 143 |
'always_advertise', 'include_download_all_button', |
143 |
- |