@@ -237,9 +237,9 @@ def edit_widget_constraints_v2(self, maplayer, field):
237
237
238
238
if edittype .get ('widgetv2type' ) == 'Range' :
239
239
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' ) )
243
243
})
244
244
elif edittype .get ('widgetv2type' ) == 'ValueMap' :
245
245
values = []
@@ -287,12 +287,15 @@ def edit_widget_constraints_v3(self, maplayer, field):
287
287
288
288
if edit_widget .get ('type' ) == 'Range' :
289
289
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' ))
296
299
})
297
300
elif edit_widget .get ('type' ) == 'ValueMap' :
298
301
values = []
@@ -324,3 +327,22 @@ def field_hidden(self, maplayer, field):
324
327
else :
325
328
edittype = maplayer .find ("edittypes/edittype[@name='%s']" % field )
326
329
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