fixed problem with _listify, thanks Daniel
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.0 (2012-08-24 08:56:41) dev
|
Version 2.00.0 (2012-08-24 09:15:19) dev
|
||||||
|
|||||||
+21
-16
@@ -7501,33 +7501,38 @@ class Table(dict):
|
|||||||
return self._db._adapter.drop(self,mode)
|
return self._db._adapter.drop(self,mode)
|
||||||
|
|
||||||
def _listify(self,fields,update=False):
|
def _listify(self,fields,update=False):
|
||||||
new_fields = []
|
new_fields = {} # format: new_fields[name] = (field,value)
|
||||||
new_fields_names = []
|
# store all fields passed as input in new_fields
|
||||||
for name in fields:
|
for name in fields:
|
||||||
if not name in self.fields:
|
if not name in self.fields:
|
||||||
if name != 'id':
|
if name != 'id':
|
||||||
raise SyntaxError, 'Field %s does not belong to the table' % name
|
raise SyntaxError, \
|
||||||
|
'Field %s does not belong to the table' % name
|
||||||
else:
|
else:
|
||||||
field = self[name]
|
field = self[name]
|
||||||
value = fields[name]
|
value = fields[name]
|
||||||
if field.filter_in: value = field.filter_in(value)
|
if field.filter_in:
|
||||||
new_fields.append((field,value))
|
value = field.filter_in(value)
|
||||||
new_fields_names.append(name)
|
new_fields[name] = (field,value)
|
||||||
for ofield in self:
|
# check all fields that should be in the self table
|
||||||
if not ofield.name in new_fields_names:
|
|
||||||
if not update and not ofield.default is None:
|
|
||||||
new_fields.append((ofield,ofield.default))
|
|
||||||
elif update and not ofield.update is None:
|
|
||||||
new_fields.append((ofield,ofield.update))
|
|
||||||
for ofield in self:
|
for ofield in self:
|
||||||
|
name = ofield.name
|
||||||
|
# if field is supposed to be computed, compute it!
|
||||||
if ofield.compute:
|
if ofield.compute:
|
||||||
try:
|
try:
|
||||||
new_fields.append((ofield,ofield.compute(Row(fields))))
|
new_fields[name] = (ofield,ofield.compute(Row(fields)))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
if not update and ofield.required and not ofield.name in new_fields_names:
|
# if field is required, check its default value
|
||||||
raise SyntaxError,'Table: missing required field: %s' % ofield.name
|
elif not name in new_fields:
|
||||||
return new_fields
|
if not update and not ofield.default is None:
|
||||||
|
new_fields[name] = (ofield,ofield.default)
|
||||||
|
elif update and not ofield.update is None:
|
||||||
|
new_fields[name] = (ofield,ofield.update)
|
||||||
|
# error if field if required, record to be create and field missing
|
||||||
|
if not update and ofield.required and not name in new_fields:
|
||||||
|
raise SyntaxError, 'Table: missing required field: %s' % name
|
||||||
|
return new_fields.values()
|
||||||
|
|
||||||
def _attempt_upload(self, fields):
|
def _attempt_upload(self, fields):
|
||||||
for field in self:
|
for field in self:
|
||||||
|
|||||||
Reference in New Issue
Block a user