db.table._before_create, _after_create, _before_update, _after_update, _before_delete. _after_delete
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 1.99.7 (2012-03-13 21:35:53) dev
|
Version 1.99.7 (2012-03-16 12:02:20) dev
|
||||||
|
|||||||
+40
-12
@@ -6555,6 +6555,14 @@ class Table(dict):
|
|||||||
self._trigger_name = args.get('trigger_name',None) or \
|
self._trigger_name = args.get('trigger_name',None) or \
|
||||||
db and db._adapter.trigger_name(tablename)
|
db and db._adapter.trigger_name(tablename)
|
||||||
self._common_filter = args.get('common_filter', None)
|
self._common_filter = args.get('common_filter', None)
|
||||||
|
|
||||||
|
self._before_create = None
|
||||||
|
self._before_update = None
|
||||||
|
self._before_delete = None
|
||||||
|
self._after_create = None
|
||||||
|
self._after_update = None
|
||||||
|
self._after_delete = None
|
||||||
|
|
||||||
primarykey = args.get('primarykey', None)
|
primarykey = args.get('primarykey', None)
|
||||||
fieldnames,newfields=set(),[]
|
fieldnames,newfields=set(),[]
|
||||||
if primarykey:
|
if primarykey:
|
||||||
@@ -6831,8 +6839,11 @@ class Table(dict):
|
|||||||
def _insert(self, **fields):
|
def _insert(self, **fields):
|
||||||
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):
|
||||||
return self._db._adapter.insert(self,self._listify(fields))
|
self._before_create and self._before_create(fields)
|
||||||
|
ret = self._db._adapter.insert(self,self._listify(fields))
|
||||||
|
ret and self._before_create and self._after_create(fields)
|
||||||
|
return ret
|
||||||
|
|
||||||
def validate_and_insert(self,**fields):
|
def validate_and_insert(self,**fields):
|
||||||
response = Row()
|
response = Row()
|
||||||
@@ -6867,7 +6878,10 @@ 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]
|
||||||
return self._db._adapter.bulk_insert(self,items)
|
self._before_create and [self._before_create(item) for item in items]
|
||||||
|
ret = self._db._adapter.bulk_insert(self,items)
|
||||||
|
self._after_create and [self._after_create(item) for item in items]
|
||||||
|
return ret
|
||||||
|
|
||||||
def _truncate(self, mode = None):
|
def _truncate(self, mode = None):
|
||||||
return self._db._adapter._truncate(self, mode)
|
return self._db._adapter._truncate(self, mode)
|
||||||
@@ -7585,16 +7599,25 @@ 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)
|
||||||
self.delete_uploaded_files()
|
table = self.db[tablename]
|
||||||
return self.db._adapter.delete(tablename,self.query)
|
if not(table._before_delete and table._before_delete(self)):
|
||||||
|
self.delete_uploaded_files()
|
||||||
|
ret = self.db._adapter.delete(tablename,self.query)
|
||||||
|
ret and table and table._after_delete and table._after_delete(self)
|
||||||
|
return ret
|
||||||
|
|
||||||
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)
|
||||||
fields = self.db[tablename]._listify(update_fields,update=True)
|
table = self.db[tablename]
|
||||||
|
fields = table._listify(update_fields,update=True)
|
||||||
if not fields:
|
if not fields:
|
||||||
raise SyntaxError, "No fields to update"
|
raise SyntaxError, "No fields to update"
|
||||||
self.delete_uploaded_files(update_fields)
|
if not(table._before_update and
|
||||||
return self.db._adapter.update(tablename,self.query,fields)
|
table._before_update(self,update_fields)):
|
||||||
|
self.delete_uploaded_files(update_fields)
|
||||||
|
ret = self.db._adapter.update(tablename,self.query,fields)
|
||||||
|
ret and table._after_update and table._after_update(self,update_fields)
|
||||||
|
return ret
|
||||||
|
|
||||||
def validate_and_update(self, **update_fields):
|
def validate_and_update(self, **update_fields):
|
||||||
tablename = self.db._adapter.get_table(self.query)
|
tablename = self.db._adapter.get_table(self.query)
|
||||||
@@ -7607,14 +7630,19 @@ class Set(object):
|
|||||||
response.errors[key] = error
|
response.errors[key] = error
|
||||||
else:
|
else:
|
||||||
new_fields[key] = value
|
new_fields[key] = value
|
||||||
fields = self.db[tablename]._listify(new_fields,update=True)
|
table = self.db[tablename]
|
||||||
|
fields = table._listify(new_fields,update=True)
|
||||||
if not fields:
|
if not fields:
|
||||||
raise SyntaxError, "No fields to update"
|
raise SyntaxError, "No fields to update"
|
||||||
if response.errors:
|
if response.errors:
|
||||||
response.updated = None
|
response.updated = None
|
||||||
else:
|
else:
|
||||||
self.delete_uploaded_files(new_fields)
|
if not(table._before_update and
|
||||||
response.updated = self.db._adapter.update(tablename,self.query,fields)
|
table._before_update(self,update_fields)):
|
||||||
|
self.delete_uploaded_files(new_fields)
|
||||||
|
ret = self.db._adapter.update(tablename,self.query,fields)
|
||||||
|
ret and table._after_update and table._after_update(self,update_fields)
|
||||||
|
response.update = ret
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def delete_uploaded_files(self, upload_fields=None):
|
def delete_uploaded_files(self, upload_fields=None):
|
||||||
|
|||||||
Reference in New Issue
Block a user