From 9f49d04f0b8c849dc0359e443540a03ffe5f0aaa Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 12 Mar 2019 17:38:34 +0100 Subject: [PATCH] environment: parse float value as json integers in variables (#31332) If you need a real integer you must always put a decimal point, i.e. write 1.0 not 1. --- hobo/environment/models.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hobo/environment/models.py b/hobo/environment/models.py index 5e14772..e28ed01 100644 --- a/hobo/environment/models.py +++ b/hobo/environment/models.py @@ -1,3 +1,4 @@ +import re import datetime import json import random @@ -22,6 +23,9 @@ from .mandayejs_app_settings import APP_SETTINGS_CLASSES, DEFAULT_APP_SETTINGS SECRET_CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)' +FLOAT_RE = re.compile(r'^\s*[0-9]+\.[0-9]+\s*') + + class Variable(models.Model): name = models.CharField(max_length=100, verbose_name=_('name')) label = models.CharField(max_length=100, blank=True, verbose_name=_('label')) @@ -41,7 +45,10 @@ class Variable(models.Model): @property def json(self): - if self.value and (self.value[0] in '{[' or self.value in ('true', 'false')): + if self.value and ( + self.value[0] in '{[' + or self.value in ('true', 'false') + or FLOAT_RE.match(self.value)): try: return json.loads(self.value) except ValueError: @@ -49,7 +56,10 @@ class Variable(models.Model): return self.value def clean(self): - if self.value and (self.value[0] in '{[' or self.value in ('true', 'false')): + if self.value and ( + self.value[0] in '{[' + or self.value in ('true', 'false') + or FLOAT_RE.match(self.value)): try: json.loads(self.value) except ValueError: -- 2.20.1