From 9773c6ca1a04c6beff87024c5e7cd8e71e295898 Mon Sep 17 00:00:00 2001
From: Joe <joe@autistici.org>
Date: Sat, 11 May 2013 15:40:08 +0200
Subject: [PATCH] Fixed the de-serialization of relations coming from Leveldb
 interface

---
 configdb/db/interface/inmemory_interface.py | 6 ++++--
 configdb/db/schema.py                       | 6 +++---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/configdb/db/interface/inmemory_interface.py b/configdb/db/interface/inmemory_interface.py
index 90e20bc..65fa077 100644
--- a/configdb/db/interface/inmemory_interface.py
+++ b/configdb/db/interface/inmemory_interface.py
@@ -42,6 +42,10 @@ class InMemoryRelationProxy(object):
     def __repr__(self):
         return '<InMemoryRelationProxy: [%s]>' % ', '.join(self._objs)
 
+    def to_net(self):
+        return list(self._objs)
+
+
 
 class InMemoryObject(object):
 
@@ -110,5 +114,3 @@ class InMemoryDbInterface(base.DbInterface):
         entity = self.schema.get_entity(entity_name)
         return self._run_query(entity, query,
                                self._entities[entity_name].itervalues())
-
-
diff --git a/configdb/db/schema.py b/configdb/db/schema.py
index 59677b6..c0d1364 100644
--- a/configdb/db/schema.py
+++ b/configdb/db/schema.py
@@ -83,6 +83,8 @@ class Relation(Field):
         if (isinstance(value, list)
             and (not len(value) or not isinstance(value[0], basestring))):
             return [x.name for x in value]
+        elif hasattr(value, 'to_net'):
+            return value.to_net()
         else:
             return value
 
@@ -161,7 +163,7 @@ class Schema(object):
     Fields. The definition is loaded from JSON-encoded data.
     """
 
-    sys_schema_tables = [ '__timestamp']                         
+    sys_schema_tables = [ '__timestamp']
 
     def __init__(self, json_data):
         self.entities = {}
@@ -245,5 +247,3 @@ class Schema(object):
                 if valid:
                     sequence.append(entity.name)
         return sequence
-                    
-    
-- 
GitLab