fixed onvalidation for SQLFORM, issue 778, thanks Carlos Galindo
This commit is contained in:
@@ -1 +1 @@
|
||||
Version 1.99.7 (2012-05-02 16:03:22) dev
|
||||
Version 1.99.7 (2012-05-02 16:08:31) dev
|
||||
|
||||
@@ -1812,6 +1812,9 @@ class FORM(DIV):
|
||||
self.latest = Storage()
|
||||
self.accepted = None # none for not submitted
|
||||
|
||||
def assert_status(self, status, request_vars):
|
||||
return status
|
||||
|
||||
def accepts(
|
||||
self,
|
||||
request_vars,
|
||||
@@ -1851,6 +1854,7 @@ class FORM(DIV):
|
||||
status = False
|
||||
self.record_changed = True
|
||||
status = self._traverse(status,hideerror)
|
||||
status = self.assert_status(status, request_vars)
|
||||
if onvalidation:
|
||||
if isinstance(onvalidation, dict):
|
||||
onsuccess = onvalidation.get('onsuccess', None)
|
||||
|
||||
+19
-17
@@ -706,6 +706,25 @@ class SQLFORM(FORM):
|
||||
ID_LABEL_SUFFIX = '__label'
|
||||
ID_ROW_SUFFIX = '__row'
|
||||
|
||||
def assert_status(self, status, request_vars):
|
||||
if not status and self.record and self.errors:
|
||||
### if there are errors in update mode
|
||||
# and some errors refers to an already uploaded file
|
||||
# delete error if
|
||||
# - user not trying to upload a new file
|
||||
# - there is existing file and user is not trying to delete it
|
||||
# this is because removing the file may not pass validation
|
||||
for key in self.errors.keys():
|
||||
if key in self.table \
|
||||
and self.table[key].type == 'upload' \
|
||||
and request_vars.get(key, None) in (None, '') \
|
||||
and self.record[key] \
|
||||
and not key + UploadWidget.ID_DELETE_SUFFIX in request_vars:
|
||||
del self.errors[key]
|
||||
if not self.errors:
|
||||
status = True
|
||||
return status
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
table,
|
||||
@@ -1111,23 +1130,6 @@ class SQLFORM(FORM):
|
||||
hideerror=hideerror,
|
||||
)
|
||||
|
||||
if not ret and self.record and self.errors:
|
||||
### if there are errors in update mode
|
||||
# and some errors refers to an already uploaded file
|
||||
# delete error if
|
||||
# - user not trying to upload a new file
|
||||
# - there is existing file and user is not trying to delete it
|
||||
# this is because removing the file may not pass validation
|
||||
for key in self.errors.keys():
|
||||
if key in self.table \
|
||||
and self.table[key].type == 'upload' \
|
||||
and request_vars.get(key, None) in (None, '') \
|
||||
and self.record[key] \
|
||||
and not key + UploadWidget.ID_DELETE_SUFFIX in request_vars:
|
||||
del self.errors[key]
|
||||
if not self.errors:
|
||||
ret = True
|
||||
|
||||
self.deleted = \
|
||||
request_vars.get(self.FIELDNAME_REQUEST_DELETE, False)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user