From 32fbafb5a21ebe415117a727bd93ff45e064357b Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Wed, 6 Sep 2023 17:16:17 +0000
Subject: [PATCH] Context component:

- Corrected viewonly relations in TopologyDeviceModel and TopologyLinkModel
- Corrected parsing of topologydevicemodel relations in Device
---
 src/context/service/database/Device.py               | 5 ++++-
 src/context/service/database/models/TopologyModel.py | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/context/service/database/Device.py b/src/context/service/database/Device.py
index d816d3c5f..9897aa0af 100644
--- a/src/context/service/database/Device.py
+++ b/src/context/service/database/Device.py
@@ -195,12 +195,15 @@ def device_set(db_engine : Engine, messagebroker : MessageBroker, request : Devi
             stmt = stmt.returning(TopologyDeviceModel.topology_uuid)
             topology_uuids = session.execute(stmt).fetchall()
 
-            LOGGER.warning('topology_uuids={:s}'.format(str(topology_uuids)))
+            LOGGER.warning('RAW topology_uuids={:s}'.format(str(topology_uuids)))
             if len(topology_uuids) > 0:
+                topology_uuids = [topology_uuid[0] for topology_uuid in topology_uuids]
+                LOGGER.warning('NEW topology_uuids={:s}'.format(str(topology_uuids)))
                 query = session.query(TopologyModel)
                 query = query.filter(TopologyModel.topology_uuid.in_(topology_uuids))
                 device_topologies : List[TopologyModel] = query.all()
                 device_topology_ids = [obj.dump_id() for obj in device_topologies]
+                LOGGER.warning('device_topology_ids={:s}'.format(str(device_topology_ids)))
             else:
                 device_topology_ids = []
 
diff --git a/src/context/service/database/models/TopologyModel.py b/src/context/service/database/models/TopologyModel.py
index 01bb14f4d..68d97edf3 100644
--- a/src/context/service/database/models/TopologyModel.py
+++ b/src/context/service/database/models/TopologyModel.py
@@ -67,7 +67,7 @@ class TopologyDeviceModel(_Base):
     topology_uuid = Column(ForeignKey('topology.topology_uuid', ondelete='RESTRICT'), primary_key=True, index=True)
     device_uuid   = Column(ForeignKey('device.device_uuid',     ondelete='CASCADE' ), primary_key=True, index=True)
 
-    topology = relationship('TopologyModel', lazy='selectin') # back_populates='topology_devices'
+    topology = relationship('TopologyModel', lazy='selectin', viewonly=True) # back_populates='topology_devices'
     device   = relationship('DeviceModel',   lazy='selectin') # back_populates='topology_devices'
 
 class TopologyLinkModel(_Base):
@@ -76,5 +76,5 @@ class TopologyLinkModel(_Base):
     topology_uuid = Column(ForeignKey('topology.topology_uuid', ondelete='RESTRICT'), primary_key=True, index=True)
     link_uuid     = Column(ForeignKey('link.link_uuid',         ondelete='CASCADE' ), primary_key=True, index=True)
 
-    topology = relationship('TopologyModel', lazy='selectin') # back_populates='topology_links'
+    topology = relationship('TopologyModel', lazy='selectin', viewonly=True) # back_populates='topology_links'
     link     = relationship('LinkModel',     lazy='selectin') # back_populates='topology_links'
-- 
GitLab