admin: remove leftover schema configuration auto pages (#53995)

This commit is contained in:
Frédéric Péters 2021-05-15 15:40:21 +02:00
parent fd09a2f6de
commit 1565f3abe2
2 changed files with 33 additions and 34 deletions

View File

@ -298,6 +298,23 @@ def test_settings_export_import(pub):
assert 'Unknown referenced role (qux)' in resp assert 'Unknown referenced role (qux)' in resp
def test_settings_session(pub):
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/settings/session')
assert resp.form['ip_linked'].checked is False
resp.form['ip_linked'].checked = True
resp = resp.form.submit('submit')
pub.reload_cfg()
assert pub.cfg['session']['ip_linked'] is True
resp = app.get('/backoffice/settings/session')
assert resp.form['ip_linked'].checked is True
resp.form['ip_linked'].checked = False
resp = resp.form.submit('cancel')
assert pub.cfg['session']['ip_linked'] is True
def test_settings_themes(pub): def test_settings_themes(pub):
create_superuser(pub) create_superuser(pub)
app = login(get_app(pub)) app = login(get_app(pub))

View File

@ -20,7 +20,7 @@ from quixote.html import TemplateIO, htmltext
from wcs.qommon import get_cfg from wcs.qommon import get_cfg
from .. import N_, _ from .. import _
from ..admin.cfg import cfg_submit from ..admin.cfg import cfg_submit
from ..backoffice.menu import html_top from ..backoffice.menu import html_top
from ..form import CheckboxWidget, Form, SingleSelectWidget, StringWidget from ..form import CheckboxWidget, Form, SingleSelectWidget, StringWidget
@ -30,49 +30,31 @@ class SettingsDirectory(AccessControlled, Directory):
def _q_access(self): def _q_access(self):
get_response().breadcrumb.append(('settings/', _('Settings'))) get_response().breadcrumb.append(('settings/', _('Settings')))
def schema_to_form(self, schema): def session(self):
form = Form(enctype='multipart/form-data') form = Form(enctype='multipart/form-data')
cfg = get_cfg(schema['name'], {}) session_cfg = get_cfg('session', {})
for option_name in schema['options']: form.add(
option = schema['options'][option_name] CheckboxWidget,
if option['type'] == 'boolean': 'ip_linked',
form.add( title=_('Fix sessions to an IP address'),
CheckboxWidget, value=session_cfg.get('ip_linked'),
option_name, )
title=_(option.get('title')),
value=cfg.get(option_name, option.get('default', False)),
)
form.add_submit('submit', _('Submit')) form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel')) form.add_submit('cancel', _('Cancel'))
return form
def config_page_from_schema(self, schema):
title = _(schema['title'])
name = schema['name']
form = self.schema_to_form(schema)
if form.get_widget('cancel').parse(): if form.get_widget('cancel').parse():
return redirect('.') return redirect('.')
if not form.is_submitted() or form.has_errors(): if not form.is_submitted() or form.has_errors():
html_top('settings', title=title) get_response().breadcrumb.append(('session', _('Session')))
html_top('settings', title=_('Session'))
r = TemplateIO(html=True) r = TemplateIO(html=True)
r += htmltext('<h2>%s</h2>') % title r += htmltext('<h2>%s</h2>') % _('Session')
r += form.render() r += form.render()
return r.getvalue() return r.getvalue()
else: else:
cfg_submit(form, name, schema['options'].keys()) cfg_submit(form, 'session', ['ip_linked'])
return redirect('') return redirect('.')
session_cfg_schema = {
'name': 'session',
'title': N_('Session'),
'options': {
'ip_linked': {'type': 'boolean', 'default': False, 'title': N_('Fix sessions to an IP address')},
},
}
def session(self):
get_response().breadcrumb.append(('session', _('Session')))
return self.config_page_from_schema(self.session_cfg_schema)
def language(self): def language(self):
form = Form(enctype='multipart/form-data') form = Form(enctype='multipart/form-data')