Ups, my bad I tested on web2py version 1.89.5 and trunk
On Dec 8, 7:58 pm, mdipierro <[email protected]> wrote: > which web2py version? > > On Dec 8, 6:30 pm, drayco <[email protected]> wrote: > > > Hi > > > I have this in model > > > #audit field group > > audit = db.Table(db,'audit', > > Field('unique_id', 'string',default=uuid.uuid4(), writable=False, > > readable=False), > > Field('active', 'boolean', default=True, writable=False, > > readable=False, label='Activo',comment='Desactiva para eliminar este > > registro'), > > Field('created_by', db.auth_user, default=user_id, writable=False, > > readable=False, label='Creado por'), > > Field('created_on', 'datetime', default=request.now, > > writable=False, readable=False, label='Creado el'), > > Field('modified_by', db.auth_user, default=user_id, > > update=user_id, writable=False, readable=False, label='Modificado > > por'), > > Field('modified_on', 'datetime', default=request.now, > > update=request.now, writable=False, readable=False, label='Modificado > > el'), > > Field('reason','string' ,default='nueva > > información',requires=IS_IN_SET(['cambio', 'nueva información', > > 'corrección']), writable=False, readable=False, label='Razon')) > > > db.define_table("notas", > > audit, > > Field("store_id",db.stores, default=store.store_id, > > writable=False, label='Sucursal',comment='A la que se encuentra > > asignado'), > > Field('nota', 'integer', default=None, > > writable=False,label='No.Nota(Sistema)',comment='Remisión generada por > > el Sistema'), > > Field('notaFisica','integer', default=None, > > requires=IS_NULL_OR(IS_INT_IN_RANGE(2500,66500,error_message='Debe ser > > Numero positivo entre 2500 y > > 66500')),label='No.Nota(Elaborada)',comment='Remision'), > > Field('vale', 'integer', default=None, > > requires=IS_NULL_OR(IS_INT_IN_RANGE(1,500,error_message='Debe ser > > Numero positivo entre 1 y 500')),label='Num.Vale',comment='Descuento > > para Arm1/Len1'), > > Field('folio', 'integer', default=None, > > requires=IS_NULL_OR(IS_INT_IN_RANGE(110000,191999,error_message='Debe > > ser Numero positivo entre 110000 y 191999')),label='Num.Folio'), > > Field('first_name','string', default=None, > > requires=IS_NULL_OR(IS_UPPER()),label='Nombre(s)'), > > Field('last_name','string', default=None, > > requires=IS_NULL_OR(IS_UPPER()),label='Apellido Paterno'), > > Field('end_name','string', default=None, > > requires=IS_NULL_OR(IS_UPPER()),label='Apellido Materno'), > > Field('tel','double', default=None, > > requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(0,1e1000,error_message='Debe ser > > Numero positivo')), label='Tel.Casa'), > > Field('tel1','double', default=None, > > requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(0,1e1000,error_message='Debe ser > > Numero positivo')), label='Tel.Trabajo'), > > Field('cel','double', default=None, > > requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(0,1e1000,error_message='Debe ser > > Numero positivo')), label='Tel.Celular',comment='Sin 044'), > > Field('email','string', default=None, > > requires=IS_NULL_OR(IS_EMAIL()),comment='Para enviar copia(pdf)'), > > Field('armazon1',db.eyewear, > > default=None,requires=IS_NULL_OR(IS_IN_DB(db,'eyewear.id','%(marca)s % > > (modelo)s %(color)s %(caract1)s $%(promo)s'))), > > Field('modelo1','string', default=None, > > requires=IS_NULL_OR(IS_ALPHANUMERIC(error_message='¡Deben ser > > caracteres alfanumericos, sin espacios en blanco ó ñ!')),label='Modelo > > armazon1'), > > Field('color1','string', default=None, > > requires=IS_NULL_OR(IS_ALPHANUMERIC(error_message='¡Deben ser > > caracteres alfanumericos, sin espacios en blanco ó > > ñ!')),label='Color(es) armazon1'), > > Field('lente1',db.lentes, > > default=None,requires=IS_NULL_OR(IS_IN_DB(db,'lentes.id','% > > (tecnoGradua)s %(material)s %(tipo)s %(tecnoVisual)s %(tratamiento)s $% > > (promo)s'))), > > Field('soloLoC1','string', > > default=None,requires=IS_NULL_OR(IS_IN_SET(['Solo para cerca','Solo > > para lejos'])), label='Lejos ó Cerca 1'), > > Field('tinte1','string', default=None, > > requires=IS_NULL_OR(IS_ALPHANUMERIC(error_message='¡Deben ser > > caracteres alfanumericos, sin espacios en blanco ó ñ!'))), > > Field("vendedor",db.auth_user, default=user_id, > > requires=IS_NULL_OR(IS_IN_DB(vendedores,'auth_user.id','%(first_name)s > > %(last_name)s %(end_name)s'))), > > Field("total", "double", default=0, writable=False), > > Field("anticipo", "double", default=0, > > requires=[IS_NOT_EMPTY(error_message='No puede estar > > vacio'),IS_FLOAT_IN_RANGE(0,10000,error_message='Debe ser un numero > > positivo entre 0 y 10000')]), > > Field("pagos", "double", default=0, writable=False), > > Field("saldo", "double", default=0, writable=False), > > Field("fechaEntrega", "date",default=(request.now > > +datetime.timedelta(14)), label='Fecha de Entrega'), > > Field("optometrista",db.auth_user, > > default=None,requires=IS_NULL_OR(IS_IN_DB(optometristas,'auth_user.id','% > > (first_name)s %(last_name)s %(end_name)s'))), > > Field('retiOdEsf','double', > > default=None,requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(-20.1,20.1)),label='Ojo > > Der.Esf.'), > > Field('retiOdCil','double', > > default=None,requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(-12.1,0)),label='Ojo > > Der.Cil.'), > > Field('retiOdEje','integer', > > default=None,requires=IS_NULL_OR(IS_INT_IN_RANGE(0,181)),label='Ojo > > Der.Eje'), > > Field('retiOiEsf','double', > > default=None,requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(-20.1,20.1)),label='Ojo > > Izq.Esf.'), > > Field('retiOiCil','double', > > default=None,requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(-12.1,0)),label='Ojo > > Izq.Cil.'), > > Field('retiOiEje','integer', > > default=None,requires=IS_NULL_OR(IS_INT_IN_RANGE(0,181)),label='Ojo > > Izq Eje'), > > Field('adicion','double', > > default=None,requires=IS_NULL_OR(IS_FLOAT_IN_RANGE(0.75,3.51)),label='Adición'), > > Field('dipC','integer', default=None, > > requires=IS_NULL_OR(IS_INT_IN_RANGE(35,85)), label='D.I.P. > > Cerca(mm)'), > > Field('dipL','integer', default=None, > > requires=IS_NULL_OR(IS_INT_IN_RANGE(35,85)), label='D.I.P. > > Lejos(mm)'), > > Field('alt','integer', default=None, > > requires=IS_NULL_OR(IS_INT_IN_RANGE(10,30)), label='Altura Centro > > Óptico(mm)'), > > Field('observaciones','string', default=None), > > Field('diabetes','string', default=None), > > Field('hipertension','string', default=None), > > Field('garantia', 'integer', default=None, label='Garantia de la > > Nota'), > > Field('entregado','boolean', default=False, writable=False), > > Field('entregadoEl', 'datetime', default=None, label='Entregado > > el', writable=False)) > > > db.define_table('notas_history', > > Field('current_record',db.notas), > > db.notas) > > > And in the controller this code: > > > def editar(): > > nota = db.notas(request.args(0)) or redirect(URL(r=request, > > f='leer_ventas')) > > Gerente = db.auth_user(user_id) > > if nota.store_id==Gerente.store_id: > > return > > dict(form=crud.update(db.notas,nota,next=URL('procesing_taller', > > args=request.args),onvalidation=procesing_nota,onaccept=crud.archive)) > > else: > > response.flash = 'No esta permitido editar notas de otra > > Sucursal' > > redirect(URL(r=request, f='leer_ventas')) > > > Every function in the controller works well, however crud.archive > > doesn't archive after update successful > > > Can any have some advice to avoid that issue? > >

