Projet

Général

Profil

0002-cards-add-user-support-48392.patch

Lauréline Guérin, 16 novembre 2020 15:22

Télécharger (7,04 ko)

Voir les différences:

Subject: [PATCH 2/2] cards: add user support (#48392)

 tests/admin_pages/test_card.py          | 21 ++++++++++++++++++
 tests/backoffice_pages/test_carddata.py | 29 +++++++++++++++++++++++++
 wcs/admin/forms.py                      | 13 +++++++++--
 wcs/backoffice/cards.py                 |  5 +++++
 wcs/backoffice/data_management.py       |  5 +++++
 wcs/formdef.py                          |  3 ++-
 6 files changed, 73 insertions(+), 3 deletions(-)
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
-