def __init__(self, name, cards): deck_is_required = 'The deck name must be a string and is required.' ne = NotEmpty(messages={'empty':deck_is_required, 'noneType':deck_is_required, 'badType':deck_is_required}) self.name = ne.to_python(name) cards_are_required = 'The cards property must be a list and is required.' ct = ConfirmType(type=(list, tuple), messages={'empty':cards_are_required, 'noneType':cards_are_required, 'inType':cards_are_required}) self.cards = ct.to_python(cards)
class RacingTeamApplnResultsValidator(Schema): name = NotEmpty() eventdate = DateConverter(month_style='iso') eventname = NotEmpty() distance = Number(min=0, max=200) units = OneOf(['miles', 'km']) time = TimeOptHoursConverter() agegrade = Number(min=0, max=100)
class AddTipoItem(AddRecordForm): """ Define el formato del formulario para crear un nuevo tipo de ítem""" __model__ = TipoItem __omit_fields__ = ['id', 'fase', 'id_fase', 'items', 'caracteristicas'] nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$'), \ Unico()) codigo = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z]*$'), \ MaxLength(2), MinLength(2), CodigoUnico())
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'}
def __init__(self, name, deck): player_is_required = 'The player name must be a string and is required.' ne = NotEmpty(messages={'empty':player_is_required, 'noneType':player_is_required, 'badType':player_is_required}) ne.to_python(name) deck_is_required = 'The deck must be a Deck and is required.' ct = ConfirmType(type=Deck, messages={'empty':deck_is_required, 'noneType':deck_is_required, 'type':deck_is_required}) ct.to_python(deck) self.name = name self.deck = deck self.position = None self.game = None
def __init__(self, name, cost): name_is_required = 'The card name must be a string and is required.' ne = NotEmpty(messages={'empty':name_is_required, 'noneType':name_is_required, 'badType':name_is_required}) self.name = ne.to_python(name) cost_is_required = "The card must have a cost of type Cost (even if it's zero mana)." ne = NotEmpty(messages={'empty':cost_is_required, 'noneType':cost_is_required, 'badType':cost_is_required}) ct = ConfirmType(type=(Cost), messages={'empty':cost_is_required, 'noneType':cost_is_required, 'type':cost_is_required}) self.cost = ct.to_python(ne.to_python(cost)) self.is_tapped = False self.game = None self.position = None self.abilities = []
class UsuarioEditFormValidator(UsuarioAddFormValidator): nombre_usuario = None password = None repita_password = None nuevo_password = PasswordChanged() repita_nuevo_password = PasswordChanged() email = All( UniqueEditEmail(), Email(not_empty=True, messages={ 'empty': 'Ingrese una direccion de email', 'noAt': 'Un email debe contener un @', 'badUsername': '******', 'badDomain': 'Ingrese un dominio de email correcto', })) chained_validators = (FieldsMatch( 'nuevo_password', 'repita_nuevo_password', messages={'invalidNoMatch': 'Passwords no coinciden'}), ) nro_documento = All( UniqueEditNroDocumento(), String( min=5, max=50, messages={ 'tooShort': "Nro de Documendo invalido, debe tener 5 digitos como minimo", 'tooLong': "Nro de Documendo invalido", }), NotEmpty(messages={'empty': 'Ingrese numero de documento'}), isInt(messages={'integer': 'Ingrese un numero'}))
class RolFormValidator(Schema): nombre_rol = All( String(min=4, max=32, messages={ 'tooShort': 'Nombre de rol incorrecto, minimo 4 caracteres', 'tooLong': 'Nombre de rol incorrecto, maximo 32 caracteres' }), NotEmpty(messages={'empty': 'Ingrese un nombre de rol'})) descripcion = String( max=100, messages={'tooLong': 'Descripcion no debe superar 100 caracteres'}) permisos = NotEmpty( messages={"empty": u"Debe seleccionar al menos un permiso"}) permisos_src = NotEmpty( messages={"empty": u"Debe seleccionar al menos un permiso"})
class EditTipoItem(EditableForm): """ Define el formato del formulario para la modificación de un tipo de ítem """ __model__ = TipoItem __hide_fields__ = ['id', 'fase', 'items', 'caracteristicas', 'codigo'] nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$'), \ Unico())
class AddFase(AddRecordForm): """ Define el formato de la tabla para agregar fases. """ __model__ = Fase __omit_fields__ = ['id', 'proyecto', 'lineas_base', 'fichas', \ 'tipos_item', 'id_proyecto', 'estado', 'fecha_inicio','fecha_fin'] orden = OrdenFieldNew nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$'), \ Unico())
class EditFase(EditableForm): """ Define el formato de la tabla para editar fases. """ __model__ = Fase __hide_fields__ = ['id', 'lineas_base', 'fichas', 'estado', \ 'fecha_inicio', 'id_proyecto', 'tipos_item', 'proyecto', 'fecha_fin'] orden = OrdenFieldEdit nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$'), \ Unico())
class ProyectoEditFormValidator(ProyectoAddFormValidator): nombre = All( String(min=4, max=32, messages={ 'tooShort': 'Nombre de proyecto incorrecto, minimo 4 caracteres', 'tooLong': 'Nombre de rol incorrecto, maximo 32 caracteres' }), UniqueEditNombre(), NotEmpty(messages={'empty': 'Ingrese un nombre de proyecto'}))
class FaseFormValidator(Schema): nombre = All( String(min=4, max=32, messages={ 'tooShort': 'Nombre de fase incorrecto, minimo 4 caracteres', 'tooLong': 'Nombre de fase incorrecto, maximo 32 caracteres' }), NotEmpty(messages={'empty': 'Ingrese un nombre de fase'})) descripcion = String( max=100, messages={'tooLong': 'Descripcion no debe superar 100 caracteres'})
class EditProyecto(EditableForm): """ Define el formato del formulario para la modificación de un proyecto """ __model__ = Proyecto __base_validator__ = form_validator __hide_fields__ = ['id', 'fases', 'fichas', 'estado', 'fecha_inicio', \ 'fecha_fin'] nro_fases = CantidadFasesField('nro_fases') nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$'), \ Unico()) __dropdown_field_names__ = {'lider': 'nombre_usuario'}
class edit_form_type(EditableForm): __model__ = Component __omit_fields__ = ['id'] __field_attrs__ = {'description': {'rows': '2'}} __field_order__ = [ 'type', 'manufacturer', 'model', 'description', 'sanitization', 'media' ] __required_fields__ = ['type', 'manufacturer', 'description'] description = TextField sanitization = TextField media = TextField type = NotEmpty()
class ProyectoAddFormValidator(Schema): nombre = All( String(min=4, max=32, messages={ 'tooShort': 'Nombre de proyecto incorrecto, minimo 4 caracteres', 'tooLong': 'Nombre de rol incorrecto, maximo 32 caracteres' }), UniqueNewNombre(), NotEmpty(messages={'empty': 'Ingrese un nombre de proyecto'})) descripcion = String( max=200, messages={'tooLong': 'Descripcion no debe superar 200 caracteres'})
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":
class InfoVolunteerValidator(Schema): common_eventdate = DateConverter(month_style='iso') volunteer_hours = Number(min=0, max=200) volunteer_comments = NotEmpty()
class UsuarioAddFormValidator(Schema): nombre_usuario = All( String(min=4, max=32, messages={ 'tooShort': 'Nombre de usuario incorrecto, minimo 4 caracteres', 'tooLong': 'Nombre de usuario incorrecto, maximo 32 caracteres' }), UniqueUsername(), NotEmpty(messages={'empty': 'Ingrese un nombre de usuario'})) nombre = All( String(min=2, max=50, messages={ 'tooShort': 'Nombre incorrecto, minimo 2 caracteres', 'tooLong': 'Nombre incorrecto, maximo 50 caracteres' }), NotEmpty(messages={'empty': 'Ingrese un nombre'})) apellido = All( String(min=2, max=50, messages={ 'tooShort': 'Apellido incorrecto, minimo 2 caracteres', 'tooLong': 'Apellido incorrecto, maximo 50 caracteres' }), NotEmpty(messages={'empty': 'Ingrese un apellido'})) password = All( String( min=6, messages={'tooShort': 'Password incorrecto, minimo 6 caracteres'}), NotEmpty(messages={'empty': 'Ingrese password'})) repita_password = All( String( min=6, messages={'tooShort': 'Password incorrecto, minimo 6 caracteres'}), NotEmpty(messages={'empty': 'Ingrese password'})) email = All( UniqueNewEmail(), Email(not_empty=True, messages={ 'empty': 'Ingrese una direccion de email', 'noAt': 'Un email debe contener un @', 'badUsername': '******', 'badDomain': 'Ingrese un dominio de email correcto', })) chained_validators = (FieldsMatch( 'password', 'repita_password', messages={'invalidNoMatch': 'Passwords no coinciden'}), ) nro_documento = All( UniqueNewNroDocumento(), String( min=5, max=50, messages={ 'tooLong': "Nro de Documendo invalido, debe tener 5 digitos como minimo", 'tooShort': "Nro de Documendo invalido", }), NotEmpty(messages={'empty': 'Ingrese numero de documento'}), isInt(messages={'integer': 'Ingrese un numero'})) telefono = All( String( min=6, max=15, messages={ 'tooShort': "Nro de Telefono invalido, debe tener 6 digitos como minimo", 'tooLong': "Nro de Telefono invalido", }), NotEmpty(messages={'empty': 'Ingrese numero de telefono'}), isInt(messages={'integer': 'Ingrese un numero'}))
class AddRol(AddRecordForm): """ Define el formato del formulario para crear un nuevo rol""" __model__ = Rol __omit_fields__ = ['id', 'fichas', 'usuarios', 'permisos'] nombre = All(NotEmpty(), ValidarExpresion(r'^[A-Za-z][A-Za-z0-9 ]*$')) tipo = SingleSelectField("tipo", options=['Sistema', 'Proyecto', 'Fase'])