Browse Source

Adiciona mais remoções

pull/1228/head
Edward Ribeiro 8 years ago
parent
commit
85ac742be8
  1. 57
      sapl/legacy/scripts/street_sweeper.py

57
sapl/legacy/scripts/street_sweeper.py

@ -14,7 +14,7 @@ SELECT_EXCLUIDOS = "SELECT %s FROM %s WHERE ind_excluido = 1 ORDER BY %s"
REGISTROS_INCONSISTENTES = "DELETE FROM %s WHERE %s in (%s) AND ind_excluido = 0 " REGISTROS_INCONSISTENTES = "DELETE FROM %s WHERE %s in (%s) AND ind_excluido = 0 "
EXCLUI_REGISTRO = "DELETE FROM %s WHERE ind_excluido=1" EXCLUI_REGISTRO = "DELETE FROM %s WHERE ind_excluido=1"
NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s) OR \ NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s) OR \
cod_norma_referida in (%s) AND ind_excluido = 0 " cod_norma_referida in (%s) AND ind_excluido = 0 "
@ -22,7 +22,7 @@ NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s
mapa = {} # mapa com tabela principal -> tabelas dependentes mapa = {} # mapa com tabela principal -> tabelas dependentes
mapa['materia_legislativa'] = ['acomp_materia', 'autoria', 'despacho_inicial', mapa['materia_legislativa'] = ['acomp_materia', 'autoria', 'despacho_inicial',
'documento_acessorio', 'expediente_materia', 'documento_acessorio', 'expediente_materia',
'legislacao_citada', 'materia_assunto', 'legislacao_citada', 'materia_assunto',
'numeracao', 'ordem_dia', 'parecer', 'numeracao', 'ordem_dia', 'parecer',
'proposicao', 'registro_votacao', 'proposicao', 'registro_votacao',
@ -32,9 +32,15 @@ mapa['comissao'] = ['composicao_comissao']
mapa['sessao_legislativa'] = ['composicao_mesa'] mapa['sessao_legislativa'] = ['composicao_mesa']
mapa['tipo_expediente'] = ['expediente_sessao_plenaria'] mapa['tipo_expediente'] = ['expediente_sessao_plenaria']
tab_pk = {'materia_legislativa': 'cod_materia'} """
mapa['autor'] = ['tipo_autor', 'partido', 'comissao', 'parlamentar']
mapa['parlamentar'] = ['autor', 'autoria', 'composicao_comissao',
'composicao_mesa', 'dependente', 'filiacao',
'mandato', 'mesa_sessao_plenaria', 'oradores',
'oradores_expediente', 'ordem_dia_presenca',
'registro_votacao_parlamentar', 'relatoria',
'sessao_plenaria_presenca', 'unidade_tramitacao']
"""
def get_ids_excluidos(cursor, query): def get_ids_excluidos(cursor, query):
""" """
@ -46,13 +52,13 @@ def get_ids_excluidos(cursor, query):
excluidos = [str(val) for sublist in excluidos for val in sublist] excluidos = [str(val) for sublist in excluidos for val in sublist]
return excluidos return excluidos
def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None): def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None):
QUERY = SELECT_EXCLUIDOS % (pk, tabela_principal, pk) QUERY = SELECT_EXCLUIDOS % (pk, tabela_principal, pk)
ids_excluidos = get_ids_excluidos(cursor, QUERY) ids_excluidos = get_ids_excluidos(cursor, QUERY)
print("\nRegistros da tabela '%s' com ind_excluido = 1: %s" % (tabela_principal.upper(), len(ids_excluidos))) print("\nRegistros da tabela '%s' com ind_excluido = 1: %s" % (tabela_principal.upper(), len(ids_excluidos)))
""" """
Remove registros de tabelas que dependem da tabela principal, Remove registros de tabelas que dependem da tabela principal,
e que se encontram com ind_excluido = 0 (nao excluidas), se e que se encontram com ind_excluido = 0 (nao excluidas), se
@ -61,14 +67,14 @@ def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None):
if ids_excluidos: if ids_excluidos:
print("Dependencias inconsistentes") print("Dependencias inconsistentes")
for tabela in mapa[tabela_principal]: for tabela in mapa[tabela_principal]:
QUERY_DEP = REGISTROS_INCONSISTENTES % (tabela, pk, ','.join(ids_excluidos)) QUERY_DEP = REGISTROS_INCONSISTENTES % (tabela, pk, ','.join(ids_excluidos))
# Trata caso especifico de norma_juridica # Trata caso especifico de norma_juridica
if query_dependentes: if query_dependentes:
QUERY_DEP = query_dependentes % (','.join(ids_excluidos), QUERY_DEP = query_dependentes % (','.join(ids_excluidos),
','.join(ids_excluidos)) ','.join(ids_excluidos))
print(tabela.upper(), cursor.execute(QUERY_DEP)) print(tabela.upper(), cursor.execute(QUERY_DEP))
""" """
@ -79,8 +85,8 @@ def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None):
for tabela in mapa[tabela_principal] + [tabela_principal]: for tabela in mapa[tabela_principal] + [tabela_principal]:
QUERY = EXCLUI_REGISTRO % tabela QUERY = EXCLUI_REGISTRO % tabela
print(tabela.upper(), cursor.execute(QUERY)) print(tabela.upper(), cursor.execute(QUERY))
def remove_excluidas(cursor): def remove_excluidas(cursor):
cursor.execute("SHOW_TABLES") cursor.execute("SHOW_TABLES")
for row in cursor.fetchall(): for row in cursor.fetchall():
@ -88,7 +94,13 @@ def remove_excluidas(cursor):
def remove_proposicao_invalida(cursor): def remove_proposicao_invalida(cursor):
return cursor.execute("DELETE FROM proposicao WHERE cod_mat_ou_doc is null") return cursor.execute(
"DELETE FROM proposicao WHERE cod_mat_ou_doc is null")
def remove_materia_assunto_invalida(cursor):
return cursor.execute(
"DELETE FROM materia_assunto WHERE cod_assunto = 0")
def shotgun_remove(cursor): def shotgun_remove(cursor):
@ -97,10 +109,13 @@ def shotgun_remove(cursor):
cursor.execute("DELETE FROM %s WHERE ind_excluido = 1" % tabela) cursor.execute("DELETE FROM %s WHERE ind_excluido = 1" % tabela)
except: except:
pass pass
if __name__ == '__main__': if __name__ == '__main__':
connection = pymysql.connect(host=HOST, user=USER, password=PASSWORD, db=DB) connection = pymysql.connect(host=HOST,
user=USER,
password=PASSWORD,
db=DB)
cursor = connection.cursor() cursor = connection.cursor()
# MATERIA LEGISLATIVA # MATERIA LEGISLATIVA
remove_tabelas(cursor, 'materia_legislativa', 'cod_materia') remove_tabelas(cursor, 'materia_legislativa', 'cod_materia')
@ -112,9 +127,17 @@ if __name__ == '__main__':
remove_tabelas(cursor, 'sessao_legislativa', 'cod_sessao_leg') remove_tabelas(cursor, 'sessao_legislativa', 'cod_sessao_leg')
# EXPEDIENTE SESSAO # EXPEDIENTE SESSAO
remove_tabelas(cursor, 'tipo_expediente', 'cod_expediente') remove_tabelas(cursor, 'tipo_expediente', 'cod_expediente')
# AUTOR
remove_tabelas(cursor, 'autor', 'cod_autor')
# PARLAMENTAR
remove_tabelas(cursor, 'parlamentar', 'cod_parlamentar')
# PROPOSICAO # PROPOSICAO
remove_proposicao_invalida(cursor) remove_proposicao_invalida(cursor)
# shotgun_remove(cursor) # MATERIA_ASSUNTO
remove_materia_assunto_invalida(cursor)
# shotgun_remove(cursor)
cursor.close() cursor.close()

Loading…
Cancel
Save