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?

