From 4600da095466aa95be3062c3072d5706280bf914 Mon Sep 17 00:00:00 2001 From: Massimo Di Pierro Date: Fri, 16 Mar 2012 12:33:19 -0500 Subject: [PATCH] _before* and _after* are lists, cleaner code --- VERSION | 2 +- gluon/dal.py | 37 ++++++++++++++++--------------------- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/VERSION b/VERSION index 11588b05..9c10581b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.7 (2012-03-16 12:02:20) dev +Version 1.99.7 (2012-03-16 12:33:04) dev diff --git a/gluon/dal.py b/gluon/dal.py index e0923458..b1c5e724 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6556,12 +6556,12 @@ class Table(dict): db and db._adapter.trigger_name(tablename) 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 + self._before_create = [] + self._before_update = [lambda self,fs:self.delete_uploaded_files(fs)] + self._before_delete = [lambda self:self.delete_uploaded_files()] + self._after_create = [] + self._after_update = [] + self._after_delete = [] primarykey = args.get('primarykey', None) fieldnames,newfields=set(),[] @@ -6840,9 +6840,9 @@ class Table(dict): return self._db._adapter._insert(self,self._listify(fields)) def insert(self, **fields): - self._before_create and self._before_create(fields) + [f(fields) for f in self._before_create] ret = self._db._adapter.insert(self,self._listify(fields)) - ret and self._before_create and self._after_create(fields) + ret and [f(fields) for f in self._before_create] return ret def validate_and_insert(self,**fields): @@ -6878,9 +6878,9 @@ class Table(dict): here items is a list of dictionaries """ items = [self._listify(item) for item in items] - self._before_create and [self._before_create(item) for item in items] + [[f(item) for item in items] for f in self._before_create] ret = self._db._adapter.bulk_insert(self,items) - self._after_create and [self._after_create(item) for item in items] + ret and [[f(item) for item in items] for f in self._after_create] return ret def _truncate(self, mode = None): @@ -7600,10 +7600,9 @@ class Set(object): def delete(self): tablename=self.db._adapter.get_table(self.query) table = self.db[tablename] - if not(table._before_delete and table._before_delete(self)): - self.delete_uploaded_files() + [f(self) for f in table._before_delete] ret = self.db._adapter.delete(tablename,self.query) - ret and table and table._after_delete and table._after_delete(self) + ret and [f(self) for f in table._after_delete] return ret def update(self, **update_fields): @@ -7612,11 +7611,9 @@ class Set(object): fields = table._listify(update_fields,update=True) if not fields: raise SyntaxError, "No fields to update" - if not(table._before_update and - table._before_update(self,update_fields)): - self.delete_uploaded_files(update_fields) + [f(self,update_fields) for f in table._before_update] ret = self.db._adapter.update(tablename,self.query,fields) - ret and table._after_update and table._after_update(self,update_fields) + ret and [f(self,update_fields) for f in table._after_update] return ret def validate_and_update(self, **update_fields): @@ -7637,11 +7634,9 @@ class Set(object): if response.errors: response.updated = None else: - if not(table._before_update and - table._before_update(self,update_fields)): - self.delete_uploaded_files(new_fields) + [f(self,new_fields) for f in table._before_update] ret = self.db._adapter.update(tablename,self.query,fields) - ret and table._after_update and table._after_update(self,update_fields) + ret and [f(self,new_fields) for f in table._after_update] response.update = ret return response