""" Service GMS/thematic/calls/join to join thematic and vectorial tables """ from monitorT.task import Task from MG.tools.postgis_api import * from tools.layer import Layer, OutLayer class TaskCustom(Task): """ clase interna itasker """ CONTROL = True def post(task, user=None, vector_layer: Layer = None, thematic_layer: Layer = None, output_layer: OutLayer = None, vector_id=None, thematic_id=None, type_join=None, join_by_ID=None): """ Join between thematic and vectorial tables Parameters ---------- user vector_layer thematic_layer output_layer vector_id thematic_id type_join join_by_ID Returns ------- output_layer:OutLayer join output layer """ PostGis('public').delete_tables(user, output_layer['table_view_name']) if join_by_ID == 'false': contain = "" list_attributes_layer_vec = PostGis('Public').list_columns( user, vector_layer['table_view_name']) for i in list_attributes_layer_vec: if i[0] in ['fid']: continue else: contain += ('"'+vector_layer['table_view_name']+'"'+'.'+'"' + i[0]+'"'+',') list_attributes_layer_them = PostGis('Public').list_columns( user, thematic_layer['table_view_name']) for i in list_attributes_layer_them: if i[0] in [thematic_id, 'fid']: continue else: contain += ('"'+thematic_layer['table_view_name']+'"'+'.'+'"' + i[0]+'"' + ' AS ' + '"'+i[0]+'_'+'"'+',') contain = contain[:-1] join_layer = PostGis('Public').join_pg( user, output_layer['table_view_name'], vector_layer['table_view_name'], vector_id, thematic_layer['table_view_name'], thematic_id, contain, type_join, output_layer['autorefresh']) output_layer.attach_sources([output_layer['table_view_name']]) return output_layer else: contain = "" list_attributes_layer_vec = PostGis('Public').list_columns( user, vector_layer['table_view_name']) for i in list_attributes_layer_vec: if i[0] in ['fid']: continue else: contain += ('"' + vector_layer['table_view_name'] + '"' + '.' + '"' + i[0] + '"' + ',') list_attributes_layer_them = PostGis('Public').list_columns( user, thematic_layer['table_view_name']) for i in list_attributes_layer_them: if i[0] in [thematic_id, 'fid']: continue else: contain += ('"' + thematic_layer['table_view_name'] + '"' + '.' + '"' + i[0] + '"' + ' AS ' + '"' + i[0] + '_' + '"' + ',') contain = contain[:-1] join_layer = PostGis('Public').join_pg_id( user, output_layer['table_view_name'], vector_layer['table_view_name'], vector_id, thematic_layer['table_view_name'], thematic_id, contain, type_join, output_layer['autorefresh']) output_layer.attach_sources([output_layer['table_view_name']]) return output_layer