From f98ef25d323f5194c7a72c160239cfe73d06e5ae Mon Sep 17 00:00:00 2001 From: Massimo Di Pierro Date: Tue, 24 Jan 2012 08:27:17 -0600 Subject: [PATCH] fixed a problem with keyed tables and record_id, thanks Ben Goosman --- VERSION | 2 +- gluon/dal.py | 2 ++ gluon/sqlhtml.py | 9 ++++----- gluon/tools.py | 3 +-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/VERSION b/VERSION index bdb962ad..38f82bf8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.4 (2012-01-23 21:15:53) stable +Version 1.99.4 (2012-01-24 08:27:12) stable diff --git a/gluon/dal.py b/gluon/dal.py index 8762a719..94cfec3b 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -2073,6 +2073,8 @@ class OracleAdapter(BaseAdapter): 'datetime': 'DATE', 'id': 'NUMBER PRIMARY KEY', 'reference': 'NUMBER, CONSTRAINT %(constraint_name)s FOREIGN KEY (%(field_name)s) REFERENCES %(foreign_key)s ON DELETE %(on_delete_action)s', + 'reference FK': ', CONSTRAINT FK_%(constraint_name)s FOREIGN KEY (%(field_name)s) REFERENCES %(foreign_key)s ON DELETE %(on_delete_action)s', + 'reference TFK': ' CONSTRAINT FK_%(foreign_table)s_PK FOREIGN KEY (%(field_name)s) REFERENCES %(foreign_table)s (%(foreign_key)s) ON DELETE %(on_delete_action)s', 'list:integer': 'CLOB', 'list:string': 'CLOB', 'list:reference': 'CLOB', diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 3491fa5a..3951ab33 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -754,10 +754,8 @@ class SQLFORM(FORM): self.record_id = record_id if keyed: - if record: - self.record_id = dict([(k,record[k]) for k in table._primarykey]) - else: - self.record_id = dict([(k,None) for k in table._primarykey]) + self.record_id = dict([(k,record and str(record[k]) or None) \ + for k in table._primarykey]) self.field_parent = {} xfields = [] self.fields = fields @@ -1037,7 +1035,8 @@ class SQLFORM(FORM): formname_id = '.'.join(str(self.record[k]) for k in self.table._primarykey if hasattr(self.record,k)) - record_id = dict((k, request_vars[k]) for k in self.table._primarykey) + record_id = dict((k, request_vars.get(k,None)) \ + for k in self.table._primarykey) else: (formname_id, record_id) = (self.record.id, request_vars.get('id', None)) diff --git a/gluon/tools.py b/gluon/tools.py index ff659050..1edd1245 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -3177,8 +3177,7 @@ class Crud(object): method: Crud.delete(table, record_id, [next=DEFAULT [, message=DEFAULT]]) """ - if not (isinstance(table, self.db.Table) or table in self.db.tables) \ - or not str(record_id).isdigit(): + if not (isinstance(table, self.db.Table) or table in self.db.tables): raise HTTP(404) if not isinstance(table, self.db.Table): table = self.db[table]