diff --git a/gluon/packages/dal b/gluon/packages/dal index 600c8dc0..48426d14 160000 --- a/gluon/packages/dal +++ b/gluon/packages/dal @@ -1 +1 @@ -Subproject commit 600c8dc0acc7552a9a7570aeae70b2eed8321f52 +Subproject commit 48426d14d9b43d659c1a014697e0c08760ab8979 diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 518349a2..c6a7ee16 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -1124,10 +1124,12 @@ class SQLFORM(FORM): raise HTTP(404, "Object not found") self.record = record - self.record_id = record_id if keyed: self.record_id = dict([(k, record and str(record[k]) or None) for k in table._primarykey]) + else: + self.record_id = record_id + self.field_parent = {} xfields = [] self.fields = fields @@ -1545,9 +1547,12 @@ class SQLFORM(FORM): self.accepted = ret return ret - if record_id and str(record_id) != str(self.record_id): - raise SyntaxError('user is tampering with form\'s record_id: ' - '%s != %s' % (record_id, self.record_id)) + if self.record_id: + if str(record_id) != str(self.record_id): + raise SyntaxError('user is tampering with form\'s record_id: ' + '%s != %s' % (record_id, self.record_id)) + else: + record_id = self.record_id if record_id and dbio and not keyed: self.vars.id = self.record[self.id_field_name]