def __init__(self, name): self.action = request.path_qs schema = Schema() schema.allow_extra_fields = True schema.filter_extra_fields = True self.schema = schema self.name = name self.errors = None self.fields = self.Fields() self.init()
class ProyectoRegistrationForm(AddRecordForm): form_validator = Schema(chained_validators=(FieldsMatch('cod_proyecto', 'verify_password', messages={'invalidNoMatch': 'cod_proyecto do not match'}),)) __model__ = Proyecto __require_fields__ = ['cod_proyecto', 'nombre', 'cant_fases','user_id'] __omit_fields__ = ['id_proyecto', 'estado', 'fecha_creacion', 'fecha_inicio', 'fecha_finalizacion_anulacion'] __field_order__ = ['cod_proyecto', 'nombre', 'cant_fases','user_id'] __base_validator__ = form_validator cod_proyecto = TextField nombre = TextField cant_fases = TextField
class UserRegistrationForm(AddRecordForm): form_validator = Schema(chained_validators=(FieldsMatch('password', 'verify_password', messages={'invalidNoMatch': 'Passwords do not match'}),)) __model__ = User __require_fields__ = ['password', 'user_name', 'email_address'] __omit_fields__ = ['_password', 'groups', 'created', 'user_id', 'town_id'] __field_order__ = ['user_name', 'email_address', 'display_name', 'password', 'verify_password'] __base_validator__ = form_validator email_address = TextField display_name = TextField verify_password = PasswordField('verify_password')
def test_form_with_base_validator(self): if hasattr(TextField, 'req'): form_validator = FieldsMatch( 'password', 'verify_password', messages={'invalidNoMatch': 'Passwords do not match'}) else: form_validator = Schema(chained_validators=(FieldsMatch( 'password', 'verify_password', messages={'invalidNoMatch': 'Passwords do not match'}), )) class RegistrationForm(AddRecordForm): __model__ = User __require_fields__ = ['password', 'user_name', 'email_address'] __omit_fields__ = [ '_password', 'groups', 'created', 'user_id', 'town' ] __field_order__ = [ 'password', 'verify_password', 'user_name', 'email_address', 'display_name' ] __base_validator__ = form_validator email_address = TextField display_name = TextField verify_password = PasswordField('verify_password') registration_form = RegistrationForm() try: registration_form.validate(params={ 'password': '******', 'verify_password': '******' }) except Invalid as e: msg = form_error_message(e) assert 'Passwords do not match' in msg, msg
from formencode.validators import FieldsMatch from tw.forms import * from sprox.tablebase import TableBase from sprox.fillerbase import TableFiller from sprox.fillerbase import EditFormFiller from proyectosaptg.model import * from tg import expose, flash, require, url, request, redirect from tg.decorators import without_trailing_slash, with_trailing_slash from tg.decorators import paginate from tgext.crud.decorators import registered_validate, register_validators, catch_errors from tg import tmpl_context from tgext.crud.controller import CrudRestController from sprox.widgets import PropertyMultipleSelectField """configuraciones del modelo User""" user_form_validator = Schema(chained_validators=( FieldsMatch('password', 'verify_password', messages={'invalidNoMatch': 'Passwords do not match'}), )) class UserRegistrationForm(AddRecordForm): __model__ = User __require_fields__ = ['password', 'user_name', 'email_address'] __omit_fields__ = [ '_password', 'created', 'user_id', 'town_id', 'proyectos', 'display_name' ] __field_order__ = [ 'user_name', 'email_address', 'display_name', 'password', 'verify_password' ] __base_validator__ = user_form_validator
class AddProyecto(AddRecordForm): """ Define el formato del formulario para crear un nuevo proyecto""" __model__ = Proyecto __omit_fields__ = ['id', 'fases', 'fichas', 'estado', 'fecha_inicio', \ 'fecha_fin'] nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$'), \ Unico()) nro_fases = All(NotEmpty(), Int(min=0)) __dropdown_field_names__ = {'lider': 'nombre_usuario'} add_proyecto_form = AddProyecto(DBSession) form_validator = Schema(nro_fases = All(NroValido(), NotEmpty(), Int(min = \ 0)), ignore_key_missing = True) class CantidadFasesField(TextField): """ Clase correspondiente a un validador que se utiliza para deshabilitar la modificación del número de fases de un proyecto si el mismo ya ha iniciado. """ def update_params(self, d): """ Realiza el control citado anteriormente. """ id_proy = unicode(request.url.split("/")[-2]) pr = DBSession.query(Proyecto).get(id_proy) if pr.estado != u"Nuevo": d.disabled = True