# vim: set et sw=4 sts=4 encoding=utf-8 :
from turbogears import controllers, expose, view
-from turbogears import widgets as w, validators
+from turbogears import widgets as W, validators as V
from turbogears import identity, redirect
from cherrypy import request, response
from model import *
import logging
log = logging.getLogger("sercom.controllers")
+class LoginForm(W.TableForm):
+ fields = [
+ W.TextField(name='login_user', label=_(u'Usuario'),
+ validator=V.NotEmpty()),
+ W.PasswordField(name='login_password', label=_(u'Contraseña'),
+ validator=V.NotEmpty())
+ ]
+ javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_login_user');")]
+ submit = W.SubmitButton(name='login_submit')
+ submit_text = _(u'Ingresar')
+
class Root(controllers.RootController):
@expose(template='.templates.welcome')
msg = _(u'Por favor ingrese.')
forward_url = request.headers.get('Referer', '/')
- fields = [
- w.TextField(name='login_user', label=_(u'Usuario'),
- validator=validators.NotEmpty()),
- w.PasswordField(name='login_password', label=_(u'Contraseña'),
- validator=validators.NotEmpty())
- ]
+ fields = list(LoginForm.fields)
if forward_url:
- fields.append(w.HiddenField(name='forward_url'))
- fields.extend([w.HiddenField(name=name) for name in request.params
+ fields.append(W.HiddenField(name='forward_url'))
+ fields.extend([W.HiddenField(name=name) for name in request.params
if name not in ('login_user', 'login_password', 'login_submit',
'forward_url')])
-
- submit = w.SubmitButton(name='login_submit')
-
- login_form = w.TableForm(fields=fields, action=previous_url,
- submit_text=_(u'Ingresar'), submit=submit)
- login_form.javascript.append(
- w.JSSource("MochiKit.DOM.focusOnLoad('form_login_user');"))
+ login_form = LoginForm(fields=fields, action=previous_url)
values = dict(forward_url=forward_url)
values.update(request.params)
#{{{ Imports
from turbogears import controllers, expose, redirect
-from turbogears import validate, validators, flash, error_handler
-from turbogears.widgets import *
+from turbogears import validate, flash, error_handler
+from turbogears import validators as V
+from turbogears import widgets as W
from turbogears import identity
from turbogears import paginate
from docutils.core import publish_parts
return [(0, _(u'<<General>>'))] + [(fk.id, fk.shortrepr())
for fk in fkcls.select()]
-form = TableForm(fields=[
- TextField(name='nombre', label=_(u'Nombre'),
- help_text=_(u'Requerido y único.'),
- validator=validators.UnicodeString(min=5, max=60, strip=True)),
- SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
- options=get_options, validator=validators.Int(not_empty=False)),
- TextField(name='descripcion', label=_(u'Descripción'),
- validator=validators.UnicodeString(not_empty=False, max=255, strip=True)),
- TextField(name='retorno', label=_(u'Código de retorno'),
- validator=validators.Int(not_empty=False, strip=True)),
- TextField(name='tiempo_cpu', label=_(u'Tiempo de CPU'),
- validator=validators.Number(not_empty=False, strip=True)),
-])
-form.javascript.append(JSSource("MochiKit.DOM.focusOnLoad('form_nombre');"))
+class CasoDePruebaForm(W.TableForm):
+ fields = [
+ W.TextField(name='nombre', label=_(u'Nombre'),
+ help_text=_(u'Requerido y único.'),
+ validator=V.UnicodeString(min=5, max=60, strip=True)),
+ W.SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
+ options=get_options, validator=V.Int(not_empty=False)),
+ W.TextField(name='descripcion', label=_(u'Descripción'),
+ validator=V.UnicodeString(not_empty=False, max=255,
+ strip=True)),
+ W.TextField(name='retorno', label=_(u'Código de retorno'),
+ validator=V.Int(not_empty=False, strip=True)),
+ W.TextField(name='tiempo_cpu', label=_(u'Tiempo de CPU'),
+ validator=V.Number(not_empty=False, strip=True)),
+ ]
+ javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');")]
+
+form = CasoDePruebaForm()
#}}}
#{{{ Controlador
raise redirect('list')
@expose(template='kid:%s.templates.list' % __name__)
- @validate(validators=dict(enunciado=validators.Int))
+ @validate(validators=dict(enunciado=V.Int))
@paginate('records')
def list(self, enunciado=None):
"""List records in model"""
#{{{ Imports
import cherrypy
from turbogears import controllers, expose, redirect
-from turbogears import validate, validators, flash, error_handler
-from turbogears.widgets import *
+from turbogears import validate, flash, error_handler
+from turbogears import validators as V
+from turbogears import widgets as W
from turbogears import identity
from turbogears import paginate
from docutils.core import publish_parts
#}}}
#{{{ Formulario
-form = TableForm(fields=[
- TextField(name='usuario', label=_(u'Usuario'),
- help_text=_(u'Requerido y único.'),
- validator=validators.UnicodeString(min=3, max=10, strip=True)),
- TextField(name='nombre', label=_(u'Nombre'),
- help_text=_(u'Requerido.'),
- validator=validators.UnicodeString(min=10, max=255, strip=True)),
- TextField(name='email', label=_(u'E-Mail'),
- #help_text=_(u'Dirección de e-mail.'),
- validator=validators.All(
- validators.Email(not_empty=False, resolve_domain=True),
- validators.UnicodeString(not_empty=False, max=255, strip=True))),
- TextField(name='telefono', label=_(u'Teléfono'),
- #help_text=_(u'Texto libre para teléfono, se puede incluir horarios o varias entradas.'),
- validator=validators.UnicodeString(not_empty=False, min=7, max=255, strip=True)),
- TextArea(name='observaciones', label=_(u'Observaciones'),
- #help_text=_(u'Observaciones.'),
- validator=validators.UnicodeString(not_empty=False, strip=True)),
- CheckBox(name='nombrado', label=_(u'Nombrado'), default=1,
- #help_text=_(u'Indica si tiene cargo.'),
- validator=validators.Bool(if_empty=1)),
- CheckBox(name='activo', label=_(u'Activo'), default=1,
- #help_text=_(u'Si no está activo no puede ingresar al sistema.'),
- validator=validators.Bool(if_empty=1)),
-])
-form.javascript.append(JSSource("MochiKit.DOM.focusOnLoad('form_usuario');"))
+class DocenteForm(W.TableForm):
+ fields = [
+ W.TextField(name='usuario', label=_(u'Usuario'),
+ help_text=_(u'Requerido y único.'),
+ validator=V.UnicodeString(min=3, max=10, strip=True)),
+ W.TextField(name='nombre', label=_(u'Nombre'),
+ help_text=_(u'Requerido.'),
+ validator=V.UnicodeString(min=10, max=255, strip=True)),
+ W.TextField(name='email', label=_(u'E-Mail'),
+ #help_text=_(u'Dirección de e-mail.'),
+ validator=V.All(
+ V.Email(not_empty=False, resolve_domain=True),
+ V.UnicodeString(not_empty=False, max=255, strip=True))),
+ W.TextField(name='telefono', label=_(u'Teléfono'),
+ #help_text=_(u'Texto libre para teléfono, se puede incluir '
+ # 'horarios o varias entradas.'),
+ validator=V.UnicodeString(not_empty=False, min=7, max=255,
+ strip=True)),
+ W.TextArea(name='observaciones', label=_(u'Observaciones'),
+ #help_text=_(u'Observaciones.'),
+ validator=V.UnicodeString(not_empty=False, strip=True)),
+ W.CheckBox(name='nombrado', label=_(u'Nombrado'), default=1,
+ #help_text=_(u'Indica si tiene cargo.'),
+ validator=V.Bool(if_empty=1)),
+ W.CheckBox(name='activo', label=_(u'Activo'), default=1,
+ #help_text=_(u'Si no está activo no puede ingresar al sistema.'),
+ validator=V.Bool(if_empty=1)),
+ ]
+ javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_usuario');")]
+
+form = DocenteForm()
#}}}
#{{{ Controlador
#{{{ Imports
from turbogears import controllers, expose, redirect
-from turbogears import validate, validators, flash, error_handler
-from turbogears.widgets import *
+from turbogears import validate, flash, error_handler
+from turbogears import validators as V
+from turbogears import widgets as W
from turbogears import identity
from turbogears import paginate
from docutils.core import publish_parts
def get_options():
return [(0, _(u'--'))] + [(fk.id, fk.shortrepr()) for fk in fkcls.select()]
-form = TableForm(fields=[
- TextField(name='nombre', label=_(u'Nombre'),
- help_text=_(u'Requerido y único.'),
- validator=validators.UnicodeString(min=5, max=60, strip=True)),
- SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
- options=get_options, validator=validators.Int(not_empty=False)),
- TextField(name='descripcion', label=_(u'Descripción'),
- validator=validators.UnicodeString(not_empty=False, max=255, strip=True)),
-])
-form.javascript.append(JSSource("MochiKit.DOM.focusOnLoad('form_nombre');"))
+class EnunciadoForm(W.TableForm):
+ fields = [
+ W.TextField(name='nombre', label=_(u'Nombre'),
+ help_text=_(u'Requerido y único.'),
+ validator=V.UnicodeString(min=5, max=60, strip=True)),
+ W.SingleSelectField(name=fkname+'ID', label=_(fkname.capitalize()),
+ options=get_options, validator=V.Int(not_empty=False)),
+ W.TextField(name='descripcion', label=_(u'Descripción'),
+ validator=V.UnicodeString(not_empty=False, max=255, strip=True)),
+ ]
+ javascript = [W.JSSource("MochiKit.DOM.focusOnLoad('form_nombre');")]
+
+form = EnunciadoForm()
#}}}
#{{{ Controlador
raise redirect('list')
@expose(template='kid:%s.templates.list' % __name__)
- @validate(validators=dict(autor=validators.Int))
+ @validate(validators=dict(autor=V.Int))
@paginate('records')
def list(self, autor=None):
"""List records in model"""