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 |
|
-
|