Exemple #1
0
def deserialize(value, datatype):
    """Very simple helper function which returns a python version
    of the given serialized value."""
    if datatype in ["varchar", "text"]:
        return value
    elif value in ["", None]:
        return None
    elif datatype == "integer":
        return converters.to_integer(value)
    elif datatype == "float":
        return converters.to_float(value)
    elif datatype == "datetime":
        # Interval fields are implemented as DATETIME
        # See http://docs.sqlalchemy.org/en/latest/core/type_basics.html#sqlalchemy.types.Interval
        # Check if we have a interval here
        iv = re.compile(u"^\d{1,2}:\d{1,2}:\d{1,2}")
        if iv.match(value):
            t = datetime.datetime.strptime(value, "%H:%M:%S")
            return datetime.timedelta(hours=t.hour,
                                      minutes=t.minute,
                                      seconds=t.second)

        # We need the configured timezone to convert the datetime into
        # the correct timezone.
        if get_current_registry().settings:
            timezone = get_current_registry().settings.get("app.timezone")
        else:
            timezone = None
        return converters.to_datetime(value, locale=None, timezone=timezone)
    elif datatype == "date":
        return converters.to_date(value)
    elif re_char_match.match(datatype):
        # UUID
        return value
    elif datatype == "blob":
        return base64.b64decode(value)
    elif datatype == "boolean":
        # In case of imports from a JSON file the value is already of
        # type boolean.
        if isinstance(value, bool):
            return value
        else:
            converters.to_boolean(value)
    else:
        raise TypeError("{} is not supported".format(datatype))
Exemple #2
0
 def get_options(self):
     options = []
     user_defined_options = self._config.options
     if isinstance(user_defined_options, list) and \
        len(user_defined_options) > 0:
         for option in self.filter_options(user_defined_options):
             if option[1] == '':
                 value = ''
             elif isinstance(self, IntSelectionField):
                 value = int(option[1])
             elif isinstance(self, BooleanSelectionField):
                 from formbar.converters import to_boolean
                 value = to_boolean(option[1])
             else:
                 value = option[1]
             options.append((option[0], value, option[2]))
     elif isinstance(user_defined_options, str):
         for option in self._form.merged_data.get(user_defined_options):
             options.append((option[0], option[1], True))
     elif self._form._item and hasattr(self._form._item, "get_options"):
         for option in self._form._item.get_options(self.name):
             options.append((option[0], option[1], True))
     return self.sort_options(options)
Exemple #3
0
 def _to_python(self, value):
     from formbar.converters import to_boolean
     return to_boolean(value)
Exemple #4
0
 def _to_python(self, value):
     from formbar.converters import to_boolean
     return to_boolean(value)