use qommon admin settings directory and cfg_submit

This commit is contained in:
Damien Laniel 2009-03-04 09:43:52 +00:00
parent ffc52318bb
commit db8a773f19
5 changed files with 101 additions and 77 deletions

View File

@ -15,26 +15,17 @@ from quixote.directory import Directory, AccessControlled
from qommon import misc, get_cfg
from qommon.form import *
from qommon.admin.menu import html_top, command_icon, error_page
from qommon.admin.cfg import cfg_submit
from qommon.admin.emails import EmailsDirectory
from qommon.admin.texts import TextsDirectory
from qommon.admin.menu import html_top, command_icon, error_page
from qommon.admin.settings import SettingsDirectory as QommonSettingsDirectory
import qommon.ident
import qommon.template
from formdef import FormDef
from fields import FieldWidget, FieldDefPage, FieldsDirectory
def cfg_submit(form, cfg_key, fields):
get_publisher().reload_cfg()
cfg_key = str(cfg_key)
cfg_dict = get_cfg(cfg_key, {})
for k in fields:
cfg_dict[str(k)] = form.get_widget(k).parse()
get_publisher().cfg[cfg_key] = cfg_dict
get_publisher().write_cfg()
class UserFormDirectory(Directory):
_q_exports = ['']
@ -139,7 +130,7 @@ class UsersDirectory(Directory):
return Directory._q_traverse(self, path)
class SettingsDirectory(AccessControlled, Directory):
class SettingsDirectory(QommonSettingsDirectory):
_q_exports = ['', 'themes', 'users',
'template', 'misc', 'emails', 'debug_options', 'language',
('import', 'p_import'), 'export', 'identification', 'sitename',
@ -150,9 +141,6 @@ class SettingsDirectory(AccessControlled, Directory):
users = UsersDirectory()
texts = TextsDirectory()
def _q_access(self):
get_response().breadcrumb.append( ('settings/', _('Settings')) )
def _q_index [html] (self):
html_top('settings', title = _('Settings'))
@ -493,61 +481,6 @@ class SettingsDirectory(AccessControlled, Directory):
z.close()
return results
def debug_options [html] (self):
form = Form(enctype="multipart/form-data")
debug_cfg = get_cfg('debug', {})
form.add(StringWidget, 'error_email', title = _('Email for Tracebacks'),
value = debug_cfg.get('error_email', ''))
form.add(SingleSelectWidget, 'display_exceptions', title = _('Display Exceptions'),
value = debug_cfg.get('display_exceptions', ''),
options = [ (str(''), _('No display')),
(str('text'), _('Display as Text')),
(str('text-in-html'), _('Display as Text in HTML an error page')),
(str('html'), _('Display as HTML')) ])
form.add(CheckboxWidget, 'logger', title = _('Logger'),
value = debug_cfg.get('logger', False))
form.add(CheckboxWidget, 'debug_mode', title = _('Enable debug mode'),
value = debug_cfg.get('debug_mode', False))
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_widget('cancel').parse():
return redirect('.')
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append(('debug_options', _('Debug Options')))
html_top('settings', title = _('Debug Options'))
'<h2>%s</h2>' % _('Debug Options')
form.render()
else:
cfg_submit(form, 'debug', ('error_email', 'display_exceptions', 'logger', 'debug_mode'))
redirect('.')
def language [html] (self):
form = Form(enctype='multipart/form-data')
language_cfg = get_cfg('language', {})
form.add(SingleSelectWidget, 'language', title = _('Language'),
value = language_cfg.get('language'),
options = [ (None, _('System Default')),
(str('HTTP'), _('From HTTP Accept-Language header')),
(str('en'), _('English')),
(str('es'), _('Spanish')),
(str('fr'), _('French')) ] )
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_widget('cancel').parse():
return redirect('.')
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append(('language', _('Language')))
html_top('settings', title = _('Language'))
'<h2>%s</h2>' % _('Language')
form.render()
else:
cfg_submit(form, 'language', ['language'])
redirect('.')
def sitename [html] (self):
form = Form(enctype='multipart/form-data')
misc_cfg = get_cfg('misc', {})
@ -568,7 +501,6 @@ class SettingsDirectory(AccessControlled, Directory):
cfg_submit(form, 'misc', ['sitename'])
redirect('.')
def utf8switch(self):
def toutf8(x):
if x is None:

View File

@ -1,5 +1,6 @@
from quixote import get_publisher
from qommon import misc, get_cfg
from qommon import get_cfg
def cfg_submit(form, cfg_key, fields):
get_publisher().reload_cfg()

View File

@ -1,10 +1,10 @@
from quixote import redirect
from quixote.directory import Directory
from qommon.form import *
from qommon import misc, get_cfg
from qommon.admin.menu import html_top
from cfg import misc, get_cfg, cfg_submit
from qommon.admin.cfg import cfg_submit
class EmailsDirectory(Directory):
emails_dict = {}

View File

@ -0,0 +1,91 @@
from quixote import redirect
from quixote.directory import Directory, AccessControlled
from qommon.form import *
from qommon.admin.cfg import cfg_submit
from qommon.admin.menu import html_top
class SettingsDirectory(AccessControlled, Directory):
def _q_access(self):
get_response().breadcrumb.append( ('settings/', _('Settings')) )
def language [html] (self):
form = Form(enctype='multipart/form-data')
language_cfg = get_cfg('language', {})
form.add(SingleSelectWidget, 'language', title = _('Language'),
value = language_cfg.get('language'),
options = [ (None, _('System Default')),
(str('en'), _('English')),
(str('fr'), _('French')) ] )
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_widget('cancel').parse():
return redirect('.')
if not form.is_submitted() or form.has_errors():
html_top('settings', title = _('Language'))
'<h2>%s</h2>' % _('Language')
form.render()
else:
cfg_submit(form, 'language', ['language'])
redirect('.')
def proxy [html] (self):
form = Form(enctype='multipart/form-data')
proxy_cfg = get_cfg('proxy', {})
form.add(CheckboxWidget, 'enabled', title = _('Use a web proxy'),
value = proxy_cfg.get(str('enabled'), False))
form.add(StringWidget, 'ip', title = _('Proxy IP address or domain name'),
value = proxy_cfg.get(str('ip')))
form.add(StringWidget, 'port', title = _('Proxy port'),
value = proxy_cfg.get(str('port')))
form.add(StringWidget, 'user', title = _('User name'),
value = proxy_cfg.get(str('user')))
form.add(PasswordWidget, 'password', title = _('User password'),
value = proxy_cfg.get(str('password')))
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_widget('cancel').parse():
return redirect('.')
if not form.is_submitted() or form.has_errors():
html_top('settings', title = _('Proxy'))
'<h2>%s</h2>' % _('Proxy')
form.render()
else:
cfg_submit(form, 'proxy', ['enabled', 'ip', 'port', 'user', 'password'])
redirect('.')
def debug_options [html] (self):
form = Form(enctype="multipart/form-data")
debug_cfg = get_cfg('debug', {})
form.add(StringWidget, 'error_email', title = _('Email for Tracebacks'),
value = debug_cfg.get('error_email', ''))
form.add(SingleSelectWidget, 'display_exceptions', title = _('Display Exceptions'),
value = debug_cfg.get('display_exceptions', ''),
options = [ (str(''), _('No display')),
(str('text'), _('Display as Text')),
(str('text-in-html'), _('Display as Text in HTML an error page')),
(str('html'), _('Display as HTML')) ])
form.add(CheckboxWidget, 'logger', title = _('Logger'),
value = debug_cfg.get('logger', False))
form.add(CheckboxWidget, 'debug_mode', title = _('Enable debug mode'),
value = debug_cfg.get('debug_mode', False))
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
if form.get_widget('cancel').parse():
return redirect('.')
if not form.is_submitted() or form.has_errors():
get_response().breadcrumb.append(('debug_options', _('Debug Options')))
html_top('settings', title = _('Debug Options'))
'<h2>%s</h2>' % _('Debug Options')
form.render()
else:
cfg_submit(form, 'debug', ('error_email', 'display_exceptions', 'logger', 'debug_mode'))
redirect('.')

View File

@ -2,13 +2,13 @@ import os
from quixote import redirect, get_publisher
from quixote.html import htmltext
from quixote.directory import Directory
from qommon.form import *
from qommon import misc, get_cfg
from qommon.admin.menu import html_top
from cfg import misc, get_cfg, cfg_submit
from cfg import cfg_submit
class TextsDirectory(Directory):
texts_dict = {}