Hello Massimo,
This proposal tries to address the last point mentioned in [1], quoted
below.
"...... when deleting a record, form variables should be cleared
which is not the case here. In my openion this’s not a good idea in
fact, and needs to be fixed because it’s really tempting to see the
variables still in the form and makes one clicks the ['submit'] button
again to see what would happen and it returns ‘object not found’ error
message."
An easy idea, which was also suggested in [1], is to use redirect(...)
after successful record deletion. But that is not one-size-fits-all
because developers need to provide target URL in every case.
Then I planned to somehow compulsively replace the form object with a
string such as "delete ok", but it would cause backward compatibility
problem when a customized view file expecting a real form object.
Finally I got the idea. SQLFORM.accepts() can disable all form fields
after deletion, to indicating a successful deletion and also avoid
further operation! crud also benefits from this improvement. Try the
patch.
>From line 920 of sqlhtml.py:
if record_delete:
......
self.errors.clear()
self.components.append(SCRIPT("""jQuery(document).ready(function(){
jQuery('input, select').attr('disabled',
'disabled'); })""",
_type="text/javascript")) # to emphasize the record is
deleted and avoid further operation
return True
[1]
http://web2py.wordpress.com/2010/05/02/record-deletion-and-keepvalues-in-forms/
Sincerely,
Iceberg, 2010-May-28, 03:07(AM), Fri