Projet

Général

Profil

0001-admin-remove-leftover-schema-configuration-auto-page.patch

Frédéric Péters, 15 mai 2021 17:23

Télécharger (4,28 ko)

Voir les différences:

Subject: [PATCH] admin: remove leftover schema configuration auto pages
 (#53995)

 tests/admin_pages/test_settings.py | 17 ++++++++++
 wcs/qommon/admin/settings.py       | 50 ++++++++++--------------------
 2 files changed, 33 insertions(+), 34 deletions(-)
tests/admin_pages/test_settings.py
298 298
    assert 'Unknown referenced role (qux)' in resp
299 299

  
300 300

  
301
def test_settings_session(pub):
302
    create_superuser(pub)
303
    app = login(get_app(pub))
304
    resp = app.get('/backoffice/settings/session')
305
    assert resp.form['ip_linked'].checked is False
306
    resp.form['ip_linked'].checked = True
307
    resp = resp.form.submit('submit')
308
    pub.reload_cfg()
309
    assert pub.cfg['session']['ip_linked'] is True
310

  
311
    resp = app.get('/backoffice/settings/session')
312
    assert resp.form['ip_linked'].checked is True
313
    resp.form['ip_linked'].checked = False
314
    resp = resp.form.submit('cancel')
315
    assert pub.cfg['session']['ip_linked'] is True
316

  
317

  
301 318
def test_settings_themes(pub):
302 319
    create_superuser(pub)
303 320
    app = login(get_app(pub))
wcs/qommon/admin/settings.py
20 20

  
21 21
from wcs.qommon import get_cfg
22 22

  
23
from .. import N_, _
23
from .. import _
24 24
from ..admin.cfg import cfg_submit
25 25
from ..backoffice.menu import html_top
26 26
from ..form import CheckboxWidget, Form, SingleSelectWidget, StringWidget
......
30 30
    def _q_access(self):
31 31
        get_response().breadcrumb.append(('settings/', _('Settings')))
32 32

  
33
    def schema_to_form(self, schema):
33
    def session(self):
34 34
        form = Form(enctype='multipart/form-data')
35
        cfg = get_cfg(schema['name'], {})
36
        for option_name in schema['options']:
37
            option = schema['options'][option_name]
38
            if option['type'] == 'boolean':
39
                form.add(
40
                    CheckboxWidget,
41
                    option_name,
42
                    title=_(option.get('title')),
43
                    value=cfg.get(option_name, option.get('default', False)),
44
                )
35
        session_cfg = get_cfg('session', {})
36
        form.add(
37
            CheckboxWidget,
38
            'ip_linked',
39
            title=_('Fix sessions to an IP address'),
40
            value=session_cfg.get('ip_linked'),
41
        )
42

  
45 43
        form.add_submit('submit', _('Submit'))
46 44
        form.add_submit('cancel', _('Cancel'))
47
        return form
48

  
49
    def config_page_from_schema(self, schema):
50
        title = _(schema['title'])
51
        name = schema['name']
52
        form = self.schema_to_form(schema)
53 45
        if form.get_widget('cancel').parse():
54 46
            return redirect('.')
47

  
55 48
        if not form.is_submitted() or form.has_errors():
56
            html_top('settings', title=title)
49
            get_response().breadcrumb.append(('session', _('Session')))
50
            html_top('settings', title=_('Session'))
57 51
            r = TemplateIO(html=True)
58
            r += htmltext('<h2>%s</h2>') % title
52
            r += htmltext('<h2>%s</h2>') % _('Session')
59 53
            r += form.render()
60 54
            return r.getvalue()
61 55
        else:
62
            cfg_submit(form, name, schema['options'].keys())
63
            return redirect('')
64

  
65
    session_cfg_schema = {
66
        'name': 'session',
67
        'title': N_('Session'),
68
        'options': {
69
            'ip_linked': {'type': 'boolean', 'default': False, 'title': N_('Fix sessions to an IP address')},
70
        },
71
    }
72

  
73
    def session(self):
74
        get_response().breadcrumb.append(('session', _('Session')))
75
        return self.config_page_from_schema(self.session_cfg_schema)
56
            cfg_submit(form, 'session', ['ip_linked'])
57
            return redirect('.')
76 58

  
77 59
    def language(self):
78 60
        form = Form(enctype='multipart/form-data')
79
-