From 4ce3ebf1fddbc8d1d974507cada773369d4f0c5d Mon Sep 17 00:00:00 2001 From: mdipierro Date: Wed, 9 Jan 2013 10:18:42 -0600 Subject: [PATCH] fixed issue 1262, table.insert() empty, thanks Alan --- VERSION | 2 +- gluon/dal.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index 152b91b8..59224640 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.4.1-alpha.2+timestamp.2013.01.09.09.16.07 +Version 2.4.1-alpha.2+timestamp.2013.01.09.10.17.54 diff --git a/gluon/dal.py b/gluon/dal.py index 126dcd02..0196ba2b 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -8044,13 +8044,24 @@ class Table(object): raise RuntimeError("Unable to handle upload") fields[field.name] = new_name + def _defaults(self, fields): + "If there are no fields/values specified, return table defaults" + if not fields: + fields = {} + for field in self: + if field.type != "id": + fields[field.name] = field.default + return fields + def _insert(self, **fields): - return self._db._adapter._insert(self,self._listify(fields)) + fields = self._default(fields) + return self._db._adapter._insert(self, self._listify(fields)) def insert(self, **fields): + fields = self._defaults(fields) self._attempt_upload(fields) if any(f(fields) for f in self._before_insert): return 0 - ret = self._db._adapter.insert(self,self._listify(fields)) + ret = self._db._adapter.insert(self, self._listify(fields)) if ret and self._after_insert: fields = Row(fields) [f(fields,ret) for f in self._after_insert]