bstroebl / xplanplugin

QGIS Plugin for German standard XPlanung
GNU General Public License v2.0
3 stars 2 forks source link

Schlechter fix für XP_ExterneReferenz #16

Open jannefleischer opened 1 year ago

jannefleischer commented 1 year ago

Um herauszufinden ob ich selbst XP_Hoehenangaben (#15) implementieren kann, musste ich erstmal herausfinden wie XP_ExterneReferenz implementiert ist und bin dabei auf einen Bug gestoßen: Die Default Values konnten von QGIS nicht korrekt ermittelt und dementsprechend nicht in die Postgres-Datenbank eingetragen werden.

Der default Value 9999 für das Feld typ in XP_SpezExterneReferenz wurde durch provider.defaultValue(1) als '' ermittelt.

Hier ein schnelle Flickschusterei, wahrscheinlich sollte lieber das DefaultValue-Retrieval genauer angeguckt werden... Zukünftig wird evtl. das hier relevant: https://github.com/qgis/QGIS-Enhancement-Proposals/issues/247

bstroebl commented 1 year ago

Verstehe ich das richtig, dass wenn der Default NULL ist, gibt defaultValueClause() einen leeren String zurück, ansonsten den "richtigen" Wert? Deshalb wird, wenn defaultValueClause() == '' eben defaultValue() benutzt? Für welches Feld in XP_ExterneReferenz ist denn der Defaultwert 9999? Und was zeigt QGIS (bzw. das Plugin) da nun an? Wenn ich die Api-Doku richtig verstehe, ist defaultValueClause für z.B. Sequenzen, der Wert 9999 müsste eigentlich mit defaultValue richtig angezeigt werden.

jannefleischer commented 1 year ago

Ich habe das nicht im Detail getestet.

In XP_SpezExterneReferenz hat für das Feld typ den Default Value 9999. Hier gibt aber provider.defaultValue() diesen Wert nicht zurück, sondern garnichts (None? empty Whitespace? - weiß ich gerade nicht). provider.defaultValueClause() dageben spuckt brav den 9999 als integer aus.

Für id wird durch provider.defaultValueClause() dagegen '' (empty whitespace) ausgespuckt. Dort gibt es aber natürlich keinen Default Value.

(QGIS-Version 3.22.12-Białowieża auf Windows 10)

bstroebl commented 1 year ago

id sollte als default einen Wert aus einer Sequenz haben. Das müsste doch eigentlich mit defaultValueClause() sichtbar sein?!

jannefleischer commented 1 year ago

Jupp. irgendwas ist da ganz komisch.