table._before_* override follow action if returns True

This commit is contained in:
Massimo Di Pierro
2012-03-16 13:02:23 -05:00
parent 570fa5884b
commit 218a3e79d1
2 changed files with 14 additions and 11 deletions
+1 -1
View File
@@ -1 +1 @@
Version 1.99.7 (2012-03-16 12:41:06) dev Version 1.99.7 (2012-03-16 13:01:54) dev
+13 -10
View File
@@ -6840,7 +6840,7 @@ class Table(dict):
return self._db._adapter._insert(self,self._listify(fields)) return self._db._adapter._insert(self,self._listify(fields))
def insert(self, **fields): def insert(self, **fields):
[f(fields) for f in self._before_create] if any(f(fields) for f in self._before_create): return 0
ret = self._db._adapter.insert(self,self._listify(fields)) ret = self._db._adapter.insert(self,self._listify(fields))
ret and [f(fields) for f in self._before_create] ret and [f(fields) for f in self._before_create]
return ret return ret
@@ -6878,7 +6878,7 @@ class Table(dict):
here items is a list of dictionaries here items is a list of dictionaries
""" """
items = [self._listify(item) for item in items] items = [self._listify(item) for item in items]
[[f(item) for item in items] for f in self._before_create] if any(f(item) for item in items for f in self._before_create):return 0
ret = self._db._adapter.bulk_insert(self,items) ret = self._db._adapter.bulk_insert(self,items)
ret and [[f(item) for item in items] for f in self._after_create] ret and [[f(item) for item in items] for f in self._after_create]
return ret return ret
@@ -7600,7 +7600,7 @@ class Set(object):
def delete(self): def delete(self):
tablename=self.db._adapter.get_table(self.query) tablename=self.db._adapter.get_table(self.query)
table = self.db[tablename] table = self.db[tablename]
[f(self) for f in table._before_delete] if any(f(self) for f in table._before_delete): return 0
ret = self.db._adapter.delete(tablename,self.query) ret = self.db._adapter.delete(tablename,self.query)
ret and [f(self) for f in table._after_delete] ret and [f(self) for f in table._after_delete]
return ret return ret
@@ -7608,7 +7608,7 @@ class Set(object):
def update(self, **update_fields): def update(self, **update_fields):
tablename = self.db._adapter.get_table(self.query) tablename = self.db._adapter.get_table(self.query)
table = self.db[tablename] table = self.db[tablename]
[f(self,update_fields) for f in table._before_update] if any(f(self,update_fields) for f in table._before_update): return 0
fields = table._listify(update_fields,update=True) fields = table._listify(update_fields,update=True)
if not fields: raise SyntaxError, "No fields to update" if not fields: raise SyntaxError, "No fields to update"
ret = self.db._adapter.update(tablename,self.query,fields) ret = self.db._adapter.update(tablename,self.query,fields)
@@ -7630,11 +7630,13 @@ class Set(object):
if response.errors: if response.errors:
response.updated = None response.updated = None
else: else:
[f(self,new_fields) for f in table._before_update] if not any(f(self,new_fields) for f in table._before_update):
fields = table._listify(new_fields,update=True) fields = table._listify(new_fields,update=True)
if not fields: raise SyntaxError, "No fields to update" if not fields: raise SyntaxError, "No fields to update"
ret = self.db._adapter.update(tablename,self.query,fields) ret = self.db._adapter.update(tablename,self.query,fields)
ret and [f(self,new_fields) for f in table._after_update] ret and [f(self,new_fields) for f in table._after_update]
else:
ret = 0
response.update = ret response.update = ret
return response return response
@@ -7649,7 +7651,7 @@ class Set(object):
and table[f].uploadfield == True and table[f].uploadfield == True
and table[f].autodelete] and table[f].autodelete]
if not fields: if not fields:
return return False
for record in self.select(*[table[f] for f in fields]): for record in self.select(*[table[f] for f in fields]):
for fieldname in fields: for fieldname in fields:
field = table[fieldname] field = table[fieldname]
@@ -7672,6 +7674,7 @@ class Set(object):
oldpath = os.path.join(uploadfolder, oldname) oldpath = os.path.join(uploadfolder, oldname)
if os.path.exists(oldpath): if os.path.exists(oldpath):
os.unlink(oldpath) os.unlink(oldpath)
return False
def update_record(pack, a=None): def update_record(pack, a=None):
(colset, table, id) = pack (colset, table, id) = pack