From bb97c65fee7d79cabf1d0cf79f72df44ff3e2f77 Mon Sep 17 00:00:00 2001 From: tux091 <renaud.legac@free.fr> Date: Wed, 30 Nov 2011 21:47:14 +0100 Subject: [PATCH] Fix a bug the foreign data were missing in the method _get_record. --- modules/plugin_dbui/dbsvc.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/plugin_dbui/dbsvc.py b/modules/plugin_dbui/dbsvc.py index 194be021..42d7a036 100644 --- a/modules/plugin_dbui/dbsvc.py +++ b/modules/plugin_dbui/dbsvc.py @@ -6,6 +6,7 @@ __version__ = "$Revision$" from basesvc import BaseSvc +from foreignfield import ForeignField from cfgsvc import ROOT, SUCCESS, TOTAL from gluon.contrib import simplejson as json from helper import encode_field, decode_field, rows_serializer @@ -58,6 +59,12 @@ class DbSvc(BaseSvc): The exception can be catch to generate an HTTP error. """ + def __init__(self, environment): + + BaseSvc.__init__(self, environment) + db = self.environment['db'] + self.model = ForeignField(db) + def _check_request(self, arg, keywords=('tableName', 'records')): """Helper function to check that the request arg is well formed. @@ -172,8 +179,8 @@ class DbSvc(BaseSvc): def _get_record(self, table, id): """Helper function to get the record id in a form which can be decoded - by the JsonReader. Foreign key are resolved. - Return a dictionary where key are the field encoded TableField. + by the JsonReader running on the client side. Foreign key are resolved. + Return a dictionary where key are encoded as TableField. """ db = self.environment['db'] @@ -182,8 +189,15 @@ class DbSvc(BaseSvc): for field in db[table].fields: key = encode_field(table, field) record[key] = db[table][id][field] - print table, id, field, record[key] + if self.model.is_foreign_field(table, field): + k_table, k_field, k_query = \ + self.model.get_foreign_data(table, field) + + k_key = encode_field(k_table, k_field) + k_id = record[key] + record[k_key] = db[k_table][k_id][k_field] + return record -- GitLab