The only problem is see is

Field('auth_user_id', unique=True, default = auth.user.id),

should be

Field('auth_user_id', unique=True, default =auth.user_id #<<<<
         requires=IS_NOT_IN_DB(db,'vendedor.auth_user_id')),

form can only manipuate errors from form validation, not database
errors. Even if you enforce uniqueness in database, you still need to
enforce it in forms.


On May 24, 6:59 am, puercoespin <jzaragoza.puercoes...@gmail.com>
wrote:
> In a db.py:
>
> db.define_table('vendedor',
>                 Field('auth_user_id', unique=True, default =
> auth.user.id),
>                 Field('direccion'),
>                 Field('provincia'),
>                 Field('coordenadas_gps'),
>                 Field('email', requires=IS_EMPTY_OR(IS_EMAIL()),
> default = auth.user.email),
>                 Field('telefono', 'integer'),
>                 Field('profesional', 'boolean', default=True))
>
> In the admin app, raises an error when 'auth_user_id'  values is in
> database, but not in controller, allowing repeated values in
> 'auth_user_id':
>
> default.py
>
> def registrovendedor():
>
> form = SQLFORM(db.vendedor)
>
>     if form.accepts(request.vars, session):
>         response.flash = T('Registo válido')
>     elif form.errors:
>         response.flash = T('Atención: Errores en los datos del
> formulario')
>     else:
>         response.flash = T('Por favor, rellene el formulario de
> registro')
>
>     return dict(form=form)
>
> what's wrong? It's necessary to validate in all levels (DAL, Form and
> Database)? If you validate at low level (I think in database level),
> why you must to validate at form level?
>
> Thanks

Reply via email to