Skip to content
This repository was archived by the owner on Oct 24, 2023. It is now read-only.

Commit 544344b

Browse files
committed
fix range constraints for edit config not parsed as numbers
1 parent f1ffc1e commit 544344b

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

qgs_reader.py

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,9 @@ def edit_widget_constraints_v2(self, maplayer, field):
237237

238238
if edittype.get('widgetv2type') == 'Range':
239239
constraints.update({
240-
'min': widget_config.get('Min'),
241-
'max': widget_config.get('Max'),
242-
'step': widget_config.get('Step')
240+
'min': self.parse_number(widget_config.get('Min')),
241+
'max': self.parse_number(widget_config.get('Max')),
242+
'step': self.parse_number(widget_config.get('Step'))
243243
})
244244
elif edittype.get('widgetv2type') == 'ValueMap':
245245
values = []
@@ -287,12 +287,15 @@ def edit_widget_constraints_v3(self, maplayer, field):
287287

288288
if edit_widget.get('type') == 'Range':
289289
constraints.update({
290-
'min': edit_widget.find(
291-
"config/Option/Option[@name='Min']").get('value'),
292-
'max': edit_widget.find(
293-
"config/Option/Option[@name='Max']").get('value'),
294-
'step': edit_widget.find(
295-
"config/Option/Option[@name='Step']").get('value')
290+
'min': self.parse_number(
291+
edit_widget.find(
292+
"config/Option/Option[@name='Min']").get('value')),
293+
'max': self.parse_number(
294+
edit_widget.find(
295+
"config/Option/Option[@name='Max']").get('value')),
296+
'step': self.parse_number(
297+
edit_widget.find(
298+
"config/Option/Option[@name='Step']").get('value'))
296299
})
297300
elif edit_widget.get('type') == 'ValueMap':
298301
values = []
@@ -324,3 +327,22 @@ def field_hidden(self, maplayer, field):
324327
else:
325328
edittype = maplayer.find("edittypes/edittype[@name='%s']" % field)
326329
return edittype.get('widgetv2type') == 'Hidden'
330+
331+
def parse_number(self, value):
332+
"""Parse string as int or float, or return string if neither.
333+
334+
:param str value: Number value as string
335+
"""
336+
result = value
337+
338+
try:
339+
result = int(value)
340+
except ValueError:
341+
# int conversion failed
342+
try:
343+
result = float(value)
344+
except ValueError:
345+
# float conversion failed
346+
pass
347+
348+
return result

0 commit comments

Comments
 (0)