def _convert_instance(obj): values = {"id": obj.id} for metadata in models.get_metadata_iterator(obj.__class__): if metadata.coltype == "RelationshipProperty": value = getattr(obj, metadata.colname) if value is not None: if metadata.uselist: if metadata.collection == "MappedCollection": value = value.itervalues() values[metadata.colname] = [_obj_representation(o, {"id": o.id}) for o in value] else: values[metadata.colname] = _obj_representation(value, {"id": value.id}) else: values[metadata.colname] = value # None/null else: values[metadata.colname] = getattr(obj, metadata.colname) return _obj_representation(obj, values)
def update_row(data, klass, dbrow): for metadata in models.get_metadata_iterator(klass): value = data.get(metadata.colname) _update_row(data, klass, dbrow, metadata, value)
def update_row_from_data(data, klass, dbrow): for metadata in models.get_metadata_iterator(klass): value = data.get(metadata.colname, NULL) if value is NULL: # can't use None since its a valid value continue _update_row(data, klass, dbrow, metadata, value)