Skip to content

Commit e7c95d2

Browse files
committed
Fall back to searching kvlayer by layer name if layer id does not exist (qgis bug?)
1 parent 06d8c9d commit e7c95d2

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/config_generator/qgs_reader.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,14 @@ def __field_constraints(self, root, maplayer, field, map_prefix, shortnames, key
527527

528528
kvlayer = root.find(".//maplayer[id='%s']" % layerId)
529529
if kvlayer is None:
530-
self.logger.warning(f"Cannot generate keyvalrel config for field {field}: the referenced relation table {layerName} does not exist in the project")
530+
# Try to resolve by layer name
531+
for ml in root.findall(".//maplayer"):
532+
mlname = ml.find("layername")
533+
if mlname is not None and mlname.text == layerName:
534+
kvlayer = ml
535+
break
536+
if kvlayer is None:
537+
self.logger.warning(f"Cannot generate keyvalrel config for field {field}: the referenced relation table {layerName} does not exist in the project")
531538
elif kvlayer.find('provider').text != 'postgres':
532539
self.logger.warning(f"Cannot generate keyvalrel config for field {field}: relation table {layerName} is not a postgres layer")
533540
else:

0 commit comments

Comments
 (0)