Ante todo, un saludo al Sr. Massimo Di Pierro y toda la colectividad que lo 
secunda, por este excelente framework, que no deja de sorprenderme.

 

Contexto del problema:

   Versión de web2py: 2.13.4 para windows (EXE) (siempre voy al día ;-))

   Sistema operativo: windows XP SP3.

   Db: postgresql 9.4

 

Estoy usando como mecanismo general de tratamiento CRUD y funcionalidad 
asociada a los reg.de una tabla, el método SQLFORM(grid).

Pero me tope con un problema no menor: dos (o más) usuarios que acceden al 
mismo registro en un mismo lapso de tiempo -están mirando la misma 
información obviamente-, uno de ellos denominado “primero”, actualiza los 
datos -nada que objetar-, pero luego, un “segundo usuario”, que tiene 
todavía una "vista de datos viejos", al dar confirmar para actualizar los 
suyos, termina realizando cambios sobre datos no previamente refrescados  como 
correspondería, si no que, además, campos que “segundo” no actualizó y 
están con valores “de la vista vieja”…..¡¡ se terminan restaurando ¡!!, 
anulando los valores que  “primero” realizó…..

 

 No encontré un mecanismo para detectar este hecho, y proceder a advertir a 
los usuarios, que deben refrescar los datos para proceder nuevamente a 
realizar cambios si corresponde, similar al que si poseen los formularios 
individuales con SQLFORM(form), como es, la acción DETECT_RECORD_CHANGE 
para el evento PROCESS().

 

Aclaro que no me estoy refiriendo al mecanismo transaccional de web2py y la 
DB -uso POSTGRESQL-, que funciona correctamente.


La solución que busco -si alguien ya la descubrió- , sería un mecanismo 
general para SQLFORM(grid), no para uno en particular. Quiero evitar el 
crear y asignar FORMs individuales para SQLFORM(grid) dado que, obviamente, 
se dispararían los tiempos de desarrollo, incrementando innecesariamente, 
la cantidad de objetos de la aplicación.

Previamente, intenté solucionar esto en el evento ONVALIDATION, consultando 
el objeto form que recibe como parámetro, en sus atributos (record, latest, 
detect_changed, detect_record_change). Pero no obtuve resultados.

La idea, es que esto debiera ser un chequeo normal del GRID y cualquier 
otro tipo de  FORM. Inclusive, debiera estar siempre activado y poder 
devolver un error específico y/o realizar una acción a sus efectos.


Gracias de antemano desde Montevideo/Uruguay.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to