def attribute_formatter(self, col_type, col_prop, var=None): """ Format geoodk attributes collected in the field to conform to STDM database contrains :return: """ if col_type == 'BOOL': if len(var) < 1: return None if len(var) > 1: if var == '' or var is None: return None if var == 'Yes' or var == True: return True if var == 'No' or var == False: return False else: return None if col_type == 'LOOKUP': if len(var) < 1 or var is None: return None if len(var) < 4: if var == 'Yes' or var == 'No': return entity_attr_to_model(col_prop.parent, 'value', var).id if var != 'Yes' and var != 'No': lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code if len(var) > 3: if not str(entity_attr_to_id(col_prop.parent, 'code', var)).isdigit(): id_value = entity_attr_to_model(col_prop.parent, 'value', var) if id_value is not None: return id_value.id #return entity_attr_to_model(col_prop.parent, 'value', var).id else: lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code else: return None elif col_type == 'ADMIN_SPATIAL_UNIT': var_code = None try: if len(var) < 1 or var is None: return None elif not len(var) > 3: var_code = entity_attr_to_id(col_prop.parent, "code", var) if var_code and var_code == var: return None else: return var_code elif len(var) > 3 and entity_attr_to_id( col_prop.parent, "name", var) is not None: var_code = entity_attr_to_id(col_prop.parent, "name", var) if var_code and var_code == var: return None else: return var_code else: if entity_attr_to_id(col_prop.parent, "name", var) is None: var_code = entity_attr_to_id(col_prop.parent, "code", var) if not var_code or var_code == var: return None except: pass elif col_type == 'MULTIPLE_SELECT': print 'multiple select {}'.format(var) if var == '' or var is None: return None else: col_parent = col_prop.association.first_parent lk_val_list = col_parent.values.values() choices_list = [] for code in lk_val_list: choices_list.append( entity_attr_to_id(col_parent.association.first_parent, 'value', code.value)) if len(choices_list) > 1: return choices_list else: return None elif col_type == 'GEOMETRY': defualt_srid = 0 if var: geom_provider = STDMGeometry(var) if isinstance(col_prop, GeometryColumn): defualt_srid = col_prop.srid if defualt_srid != 0: geom_provider.set_user_srid(defualt_srid) else: geom_provider.set_user_srid(GEOMPARAM) if col_prop.geometry_type() == 'POINT': return geom_provider.point_to_Wkt() if col_prop.geometry_type() == 'POLYGON': return geom_provider.polygon_to_Wkt() else: return None elif col_type == 'FOREIGN_KEY': ret_val = None for code, val in self.parents_ids.iteritems(): if col_prop.parent.name == code: ret_val = val[0] break return ret_val elif col_type == 'INT' or col_type == 'DOUBLE' or col_type == 'PERCENT': ret_val = None if var <> '': ret_val = var return ret_val elif col_type == 'DATETIME' or col_type == 'DATE': ret_val = None if var <> '': ret_val = var return ret_val else: return var
def attribute_formatter(self, col_type, col_prop, var=None): """ Format geoodk attributes collected in the field to conform to STDM database contrains :return: """ if col_type == 'BOOL': if len(var) < 1: return None if len(var) > 1: if var == '' or var is None: return None if var == 'Yes' or var == True: return True if var == 'No' or var == False: return False else: return None if col_type == 'LOOKUP': if len(var) < 1 or var is None: return None if len(var) < 4: if var == 'Yes' or var == 'No': return entity_attr_to_model(col_prop.parent, 'value', var).id if var != 'Yes' and var != 'No': lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code if len(var) > 3: if not str(entity_attr_to_id(col_prop.parent, 'code', var)).isdigit(): id_value = entity_attr_to_model(col_prop.parent, 'value', var) if id_value is not None: return id_value.id # return entity_attr_to_model(col_prop.parent, 'value', var).id else: lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code else: return None elif col_type == 'ADMIN_SPATIAL_UNIT': if not len(var) > 3: return entity_attr_to_id(col_prop.parent, "code", var) else: if entity_attr_to_id(col_prop.parent, "name", var) is None: return entity_attr_to_id(col_prop.parent, "code", var) else: return entity_attr_to_id(col_prop.parent, "name", var) elif col_type == 'MULTIPLE_SELECT': if var == '' or var is None: return None if not len(var) > 3: return entity_attr_to_id(col_prop.association.first_parent, "code", var) elif len(var) > 3: var0 = var.split(',') if not str( entity_attr_to_id(col_prop.association.first_parent, "code", var0)).isdigit(): return entity_attr_to_model( col_prop.association.first_parent, 'value', var0).id else: return entity_attr_to_id(col_prop.association.first_parent, "code", var0) elif col_type == 'GEOMETRY': defualt_srid = 0 if var: geom_provider = STDMGeometry(var) if isinstance(col_prop, GeometryColumn): defualt_srid = col_prop.srid if defualt_srid != 0: geom_provider.set_user_srid(defualt_srid) else: geom_provider.set_user_srid(GEOMPARAM) if col_prop.geometry_type() == 'POINT': return geom_provider.point_to_Wkt() if col_prop.geometry_type() == 'POLYGON': return geom_provider.polygon_to_Wkt() else: return None elif col_type == 'FOREIGN_KEY': if self.parents_ids is None or len(self.parents_ids) < 0: return None else: for code, val in self.parents_ids.iteritems(): if code is not None: if col_prop.parent.name == code: return val[0] else: return None elif col_type == 'INT' or col_type == 'DOUBLE' or col_type == 'PERCENT': if var == '': return None else: return var elif col_type == 'DATETIME' or col_type == 'DATE': if var is None: return None if var == '': return None else: return var else: return var
def attribute_formatter(self, col_type, col_prop, var): """ :return: """ if col_type == 'LOOKUP': if var == '' or var is None: return None if var == 'Yes' or var == 'No': return entity_attr_to_model(col_prop.parent, 'value', var).id if not len(var) > 3 and var != 'Yes' and var != 'No': lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code if len(var) > 3: if not str(entity_attr_to_id(col_prop.parent, 'code', var)).isdigit(): return entity_attr_to_model(col_prop.parent, 'value', var).id else: lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code else: return None elif col_type == 'ADMIN_SPATIAL_UNIT': if not len(var) > 3: return entity_attr_to_id(col_prop.parent, "code", var) else: return entity_attr_to_id(col_prop.parent, "name", var) elif col_type == 'MULTIPLE_SELECT': if var == '' or var is None: return None if not len(var) > 3: return entity_attr_to_id(col_prop.association.first_parent, "code", var) elif len(var) > 3: if not str( entity_attr_to_id(col_prop.association.first_parent, "code", var)).isdigit(): return entity_attr_to_model( col_prop.association.first_parent, 'value', var).id else: return entity_attr_to_id(col_prop.association.first_parent, "code", var) elif col_type == 'GEOMETRY': defualt_srid = 0 geom_provider = STDMGeometry(var) if isinstance(col_prop, GeometryColumn): defualt_srid = col_prop.srid if defualt_srid != 0: geom_provider.set_user_srid(defualt_srid) else: geom_provider.set_user_srid(GEOMPARAM) if col_prop.geometry_type() == 'POINT': return geom_provider.point_to_Wkt() if col_prop.geometry_type() == 'POLYGON': return geom_provider.polygon_to_Wkt() elif col_type == 'FOREIGN_KEY': if self.parents_ids is None or len(self.parents_ids) < 0: return else: for code, val in self.parents_ids.iteritems(): if code is not None: if val[1] == GROUPCODE and col_prop.parent.name == code: return val[0] else: if col_prop.parent.name == code: return val[0] elif col_type == 'INT' or col_type == 'DOUBLE': if var == '': return 0 else: return var else: return var
def attribute_formatter(self, col_type, col_prop, var=None): """ Format geoodk attributes collected in the field to conform to STDM database contrains :return: """ if col_type == 'BOOL': if len(var) < 1: return None if len(var)>1: if var == '' or var is None: return None if var == 'Yes' or var == True: return True if var == 'No' or var == False: return False else: return None if col_type == 'LOOKUP': if len(var) < 1 or var is None: return None if len(var) <4: if var == 'Yes' or var == 'No': return entity_attr_to_model(col_prop.parent, 'value', var).id if var != 'Yes' and var != 'No': lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code if len(var) > 3: if not str(entity_attr_to_id(col_prop.parent, 'code', var)).isdigit(): id_value = entity_attr_to_model(col_prop.parent, 'value', var) if id_value is not None: return id_value.id #return entity_attr_to_model(col_prop.parent, 'value', var).id else: lk_code = entity_attr_to_id(col_prop.parent, "code", var) if not str(lk_code).isdigit(): return None else: return lk_code else: return None elif col_type == 'ADMIN_SPATIAL_UNIT': var_code = None try: if len(var) < 1 or var is None: return None elif not len(var) > 3: var_code = entity_attr_to_id(col_prop.parent, "code", var) if var_code and var_code == var: return None else: return var_code elif len(var) > 3 and entity_attr_to_id(col_prop.parent, "name", var) is not None: var_code = entity_attr_to_id(col_prop.parent, "name", var) if var_code and var_code == var: return None else: return var_code else: if entity_attr_to_id(col_prop.parent, "name", var) is None: var_code = entity_attr_to_id(col_prop.parent, "code", var) if not var_code or var_code == var: return None except: pass elif col_type == 'MULTIPLE_SELECT': print 'multiple select {}'.format(var) if var == '' or var is None: return None else: print var col_parent = col_prop.association.first_parent lk_val_list = col_parent.values.values() choices_list = [] for code in lk_val_list: choices_list.append(entity_attr_to_id( col_parent.association.first_parent, 'value', code.value)) print choices_list if len(choices_list) > 1: return choices_list else: return None elif col_type == 'GEOMETRY': defualt_srid = 0 if var: geom_provider = STDMGeometry(var) if isinstance(col_prop, GeometryColumn): defualt_srid = col_prop.srid if defualt_srid != 0: geom_provider.set_user_srid(defualt_srid) else: geom_provider.set_user_srid(GEOMPARAM) if col_prop.geometry_type() == 'POINT': return geom_provider.point_to_Wkt() if col_prop.geometry_type() == 'POLYGON': return geom_provider.polygon_to_Wkt() else: return None elif col_type == 'FOREIGN_KEY': if self.parents_ids is None or len(self.parents_ids) < 0: return None else: for code, val in self.parents_ids.iteritems(): if col_prop.parent.name == code: return val[0] else: return None elif col_type == 'INT' or col_type == 'DOUBLE' or col_type == 'PERCENT': if var == '': return None else: return var elif col_type == 'DATETIME' or col_type == 'DATE': if var is None: return None if var == '': return None else: return var else: return var