def _de(self, value, fieldtype, field): if not fieldtype: # no datatype information set if isinstance(value, basestring) and value.startswith(u"_json_"): value = json.loads(value[len(u"_json_") :]) if isinstance(value, bytes): value = unicode(value, self.codepage) return value if isinstance(fieldtype, dict): fieldtype = fieldtype[u"datatype"] # call serialize callback function if fieldtype in self.deserializeCallbacks: return self.deserializeCallbacks[fieldtype](value, field) if fieldtype in ("date", "datetime"): # -> to datatime if isinstance(value, basestring): value = ConvertToDateTime(value) elif isinstance(value, (float, int, long)): value = datetime.fromtimestamp(value) elif fieldtype == "timestamp": if isinstance(value, basestring): value = float(value) elif fieldtype in ("mselection", "mcheckboxes", "urllist", "unitlist"): # -> to string tuple # unitlist -> to number tuple if not value: value = u"" elif value[0] != "[": # bw 0.9.5b: changed storage format to json. Previous versions used lines # with \n for entries. if isinstance(value, basestring): if value.startswith(u"_json_"): value = json.loads(value[len(u"_json_") :]) else: value = tuple(value.split(u"\n")) elif isinstance(value, list): value = tuple(value) if fieldtype == "unitlist": value = [long(v) for v in value] else: value = json.loads(value) elif fieldtype == "json": # -> to python type if not value: value = None elif isinstance(value, basestring): value = json.loads(value) return value
def _de(self, value, fieldtype, field): if not fieldtype: # no datatype information set if isinstance(value, basestring) and value.startswith(u"_json_"): value = json.loads(value[len(u"_json_"):]) if isinstance(value, bytes): value = unicode(value, self.codepage) return value if isinstance(fieldtype, dict): fieldtype = fieldtype[u"datatype"] # call serialize callback function if fieldtype in self.deserializeCallbacks: return self.deserializeCallbacks[fieldtype](value, field) if fieldtype in ("date", "datetime"): # -> to datatime if isinstance(value, basestring): value = ConvertToDateTime(value) elif isinstance(value, (float,int,long)): value = datetime.fromtimestamp(value) elif fieldtype == "timestamp": if isinstance(value, basestring): value = float(value) elif fieldtype in ("mselection", "mcheckboxes", "urllist", "unitlist"): # -> to string tuple # unitlist -> to number tuple if not value: value = u"" elif value[0]!="[": # bw 0.9.5b: changed storage format to json. Previous versions used lines # with \n for entries. if isinstance(value, basestring): if value.startswith(u"_json_"): value = json.loads(value[len(u"_json_"):]) else: value = tuple(value.split(u"\n")) elif isinstance(value, list): value = tuple(value) if fieldtype == "unitlist": value = [long(v) for v in value] else: value = json.loads(value) elif fieldtype == "json": # -> to python type if not value: value = None elif isinstance(value, basestring): value = json.loads(value) return value
def _de(self, value, fieldtype, field): if not fieldtype: # no datatype information set if isinstance(value, basestring) and value.startswith(u"_json_"): value = json.loads(value[len(u"_json_"):]) if isinstance(value, bytes): value = unicode(value, self.codepage) return value if isinstance(fieldtype, dict): fieldtype = fieldtype[u"datatype"] # call serialize callback function if fieldtype in self.deserializeCallbacks: return self.deserializeCallbacks[fieldtype](value, field) if fieldtype in ("date", "datetime"): # -> to datetime if isinstance(value, basestring): value = ConvertToDateTime(value) elif isinstance(value, (float,int,long)): value = datetime.fromtimestamp(value) elif fieldtype == "time": # -> to datetime.time if isinstance(value, basestring): # misuse datetime parser value2 = ConvertToDateTime(u"2015-01-01 "+unicode(value)) if value2: value = datetime_time(value2.hour,value2.minute,value2.second,value2.microsecond) elif isinstance(value, (float,int,long)): value = datetime.fromtimestamp(value) value = datetime_time(value.hour,value.minute,value.second,value.microsecond) elif fieldtype == "timestamp": if isinstance(value, basestring): value = float(value) elif fieldtype in ("multilist", "checkbox", "mselection", "mcheckboxes", "urllist", "unitlist"): # -> to string tuple # unitlist -> to number tuple if not value: value = u"" elif isinstance(value, basestring): try: value = tuple(json.loads(value)) except ValueError: # bw 0.9.12 convert line based values if "\r\n" in value: value = value.split("\r\n") else: value = (value,) elif isinstance(value, list): value = tuple(value) if fieldtype == "unitlist": value = tuple([long(v) for v in value]) elif fieldtype == "json": # -> to python type if not value: value = None elif isinstance(value, basestring): value = json.loads(value) return value
def _de(self, value, fieldtype, field): if not fieldtype: # no datatype information set if isinstance(value, basestring) and value.startswith(u"_json_"): value = json.loads(value[len(u"_json_"):]) if isinstance(value, bytes): value = unicode(value, self.codepage) return value if isinstance(fieldtype, dict): fieldtype = fieldtype[u"datatype"] # call serialize callback function if fieldtype in self.deserializeCallbacks: return self.deserializeCallbacks[fieldtype](value, field) if fieldtype in ("date", "datetime"): # -> to datetime if isinstance(value, basestring): value = ConvertToDateTime(value) elif isinstance(value, (float, int, long)): value = datetime.fromtimestamp(value) elif fieldtype == "time": # -> to datetime.time if isinstance(value, basestring): # misuse datetime parser value2 = ConvertToDateTime(u"2015-01-01 " + unicode(value)) if value2: value = datetime_time(value2.hour, value2.minute, value2.second, value2.microsecond) elif isinstance(value, (float, int, long)): value = datetime.fromtimestamp(value) value = datetime_time(value.hour, value.minute, value.second, value.microsecond) elif fieldtype == "timestamp": if isinstance(value, basestring): value = float(value) elif fieldtype in ("multilist", "checkbox", "mselection", "mcheckboxes", "urllist", "unitlist"): # -> to string tuple # unitlist -> to number tuple if not value: value = u"" elif isinstance(value, basestring): try: value = tuple(json.loads(value)) except ValueError: # bw 0.9.12 convert line based values if "\r\n" in value: value = value.split("\r\n") else: value = (value, ) elif isinstance(value, list): value = tuple(value) if fieldtype == "unitlist": value = tuple([long(v) for v in value]) elif fieldtype == "json": # -> to python type if not value: value = None elif isinstance(value, basestring): value = json.loads(value) return value