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))
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)
def _to_python(self, value): from formbar.converters import to_boolean return to_boolean(value)