dal.py: Table class: validate_and_update_or_insert method created, and minor changes in validate_and_update
This commit is contained in:
+30
-2
@@ -9153,8 +9153,8 @@ class Table(object):
|
|||||||
record = self(_key)
|
record = self(_key)
|
||||||
|
|
||||||
if not response.errors and record:
|
if not response.errors and record:
|
||||||
row = self._db(self._id ==_key)
|
myset = self._db(self._id == record[self._id.name])
|
||||||
response.id = row.update(**fields)
|
response.id = myset.update(**fields)
|
||||||
else:
|
else:
|
||||||
response.id = None
|
response.id = None
|
||||||
return response
|
return response
|
||||||
@@ -9173,6 +9173,34 @@ class Table(object):
|
|||||||
newid = self.insert(**values)
|
newid = self.insert(**values)
|
||||||
return newid
|
return newid
|
||||||
|
|
||||||
|
def validate_and_update_or_insert(self, _key=DEFAULT, **fields):
|
||||||
|
if _key is DEFAULT or _key == '':
|
||||||
|
primary_keys = {}
|
||||||
|
for key, value in fields.iteritems():
|
||||||
|
if key in self._primarykey:
|
||||||
|
primary_keys[key] = value
|
||||||
|
if primary_keys != {}:
|
||||||
|
record = self(**primary_keys)
|
||||||
|
_key = primary_keys
|
||||||
|
else:
|
||||||
|
required_keys = {}
|
||||||
|
for key, value in fields.iteritems():
|
||||||
|
if getattr(self, key).required:
|
||||||
|
required_keys[key] = value
|
||||||
|
record = self(**required_keys)
|
||||||
|
_key = required_keys
|
||||||
|
elif isinstance(_key, dict):
|
||||||
|
record = self(**_key)
|
||||||
|
else:
|
||||||
|
record = self(_key)
|
||||||
|
|
||||||
|
if record:
|
||||||
|
response = self.validate_and_update(_key, **fields)
|
||||||
|
response.id = {'id': self(**fields).id}
|
||||||
|
else:
|
||||||
|
response = self.validate_and_insert(**fields)
|
||||||
|
return response
|
||||||
|
|
||||||
def bulk_insert(self, items):
|
def bulk_insert(self, items):
|
||||||
"""
|
"""
|
||||||
here items is a list of dictionaries
|
here items is a list of dictionaries
|
||||||
|
|||||||
Reference in New Issue
Block a user