mirror of https://github.com/interlegis/sapl.git
joao
2 years ago
1 changed files with 155 additions and 0 deletions
@ -0,0 +1,155 @@ |
|||||
|
import os |
||||
|
|
||||
|
import sapl.utils |
||||
|
|
||||
|
from sapl import settings |
||||
|
from sapl.norma.models import NormaJuridica, TipoNormaJuridica |
||||
|
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa, RegimeTramitacao |
||||
|
from django.utils import timezone |
||||
|
|
||||
|
from sapl.utils import texto_upload_path |
||||
|
|
||||
|
|
||||
|
def migra_atas_normas(tipos_array): |
||||
|
for t in tipos_array: |
||||
|
print(t['old_descricao']) |
||||
|
for x in NormaJuridica.objects.filter(tipo__descricao__icontains=t['old_descricao']): |
||||
|
tipo_materia = get_or_create_tipo_materia(t['sigla'], t['descricao']) |
||||
|
n_mat = create_materia_from_norma(x, tipo_materia) |
||||
|
if n_mat is not None: |
||||
|
if NormaJuridica.objects.get(pk=x.id).delete(): |
||||
|
print("Removida NormaJuridica:", x) |
||||
|
else: |
||||
|
print("Impossível copiar Norma para tipo Materia:", x) |
||||
|
|
||||
|
for t in tipos_array: |
||||
|
a = TipoNormaJuridica.objects.filter(descricao__icontains=t['old_descricao']).first() |
||||
|
print(a, t['old_descricao']) |
||||
|
if a is not None: |
||||
|
print("Removido TipoNormaJuridica:", a) |
||||
|
a.delete() |
||||
|
else: |
||||
|
print("Erro ao remover TipoNormaJuridica:", a) |
||||
|
|
||||
|
|
||||
|
def get_or_create_tipo_materia(sigla, descricao): |
||||
|
tipo_materia = TipoMateriaLegislativa.objects.filter(descricao=descricao, sigla=sigla).first() |
||||
|
|
||||
|
if not tipo_materia: |
||||
|
tipo_materia = TipoMateriaLegislativa(sigla=sigla, descricao=descricao) |
||||
|
tipo_materia.save() |
||||
|
|
||||
|
return tipo_materia |
||||
|
|
||||
|
|
||||
|
def create_materia_from_norma(norma, tipo): |
||||
|
if not norma or not tipo: |
||||
|
print("Norma e/ou tipo invalidos:", norma, tipo) |
||||
|
return False |
||||
|
else: |
||||
|
n_materia = MateriaLegislativa() |
||||
|
n_materia.tipo = tipo |
||||
|
if norma.numero: |
||||
|
n_materia.numero = norma.numero |
||||
|
if norma.ano: |
||||
|
n_materia.ano = norma.ano |
||||
|
if norma.data_publicacao: |
||||
|
n_materia.data_publicacao = norma.data_publicacao |
||||
|
if norma.ementa: |
||||
|
n_materia.ementa = norma.ementa |
||||
|
if norma.texto_integral: |
||||
|
n_materia.texto_original = norma.texto_integral |
||||
|
if norma.data_ultima_atualizacao: |
||||
|
n_materia.data_ultima_atualizacao = norma.data_ultima_atualizacao |
||||
|
if norma.user: |
||||
|
n_materia.user = norma.user |
||||
|
if norma.ip: |
||||
|
n_materia.ip = norma.ip |
||||
|
if norma.ultima_edicao: |
||||
|
n_materia.ultima_edicao = norma.ultima_edicao |
||||
|
if norma.data is None: |
||||
|
n_materia.data_apresentacao = timezone.now() |
||||
|
else: |
||||
|
n_materia.data_apresentacao = norma.data |
||||
|
n_materia.regime_tramitacao = RegimeTramitacao.objects.first() |
||||
|
|
||||
|
n_materia.save() |
||||
|
print("Criada nova MateriaLegislativa:", n_materia.__str__()) |
||||
|
update_file_location_to_new_model(n_materia) |
||||
|
return True |
||||
|
|
||||
|
|
||||
|
def update_file_location_to_new_model(new_model): |
||||
|
try: |
||||
|
initial_path = new_model.texto_original.path |
||||
|
except ValueError: |
||||
|
print("arquivo não existe", new_model.texto_original.name) |
||||
|
return False |
||||
|
|
||||
|
if not os.path.exists(initial_path): |
||||
|
print("Arquivo nao existe:", initial_path) |
||||
|
return False |
||||
|
|
||||
|
# get new path using already defined function |
||||
|
print(os.path.basename(new_model.texto_original.name)) |
||||
|
new_name = texto_upload_path(new_model, os.path.basename(new_model.texto_original.name), subpath=new_model.ano) |
||||
|
new_path = os.path.join(settings.MEDIA_ROOT, new_name) |
||||
|
print("New name:", new_name) |
||||
|
print("Novo diretorio:", new_path) |
||||
|
# check if the dir exists |
||||
|
if not os.path.exists(os.path.dirname(new_path)): |
||||
|
print("criando novo diretorio...:", os.path.dirname(new_path)) |
||||
|
os.makedirs(os.path.dirname(new_path)) |
||||
|
|
||||
|
if os.path.exists(os.path.dirname(new_path)): |
||||
|
print("movendo arquivo de local:", new_path) |
||||
|
os.rename(initial_path, new_path) |
||||
|
# Update the file field |
||||
|
new_model.texto_original.name = new_name |
||||
|
new_model.save() |
||||
|
print("success!", new_model.texto_original) |
||||
|
return True |
||||
|
else: |
||||
|
print("Não foi possível criar diretorio:", os.path.dirname(new_path)) |
||||
|
|
||||
|
return False |
||||
|
|
||||
|
|
||||
|
def main(): |
||||
|
tipos_movimentacao = [ |
||||
|
{ |
||||
|
'old_descricao': 'ATA COMISS', |
||||
|
'descricao': 'Ata de Comissão', |
||||
|
'sigla': 'ACM' |
||||
|
}, |
||||
|
{ |
||||
|
'old_descricao': 'ATA CPI Nº 01', |
||||
|
'descricao': 'Ata CPI', |
||||
|
'sigla': 'ACPI' |
||||
|
}, |
||||
|
{ |
||||
|
'old_descricao': 'Atas Audiências Públicas', |
||||
|
'descricao': 'Ata de Audiência Pública', |
||||
|
'sigla': 'AAP' |
||||
|
}, |
||||
|
{ |
||||
|
'old_descricao': 'ATAS DA CPI Nº 2', |
||||
|
'descricao': 'Ata de CPI', |
||||
|
'sigla': 'ACPI' |
||||
|
}, |
||||
|
{ |
||||
|
'old_descricao': 'Atas Reuniões Extraordinárias', |
||||
|
'descricao': 'Ata de Reunião Extraordinária', |
||||
|
'sigla': 'ARE' |
||||
|
}, |
||||
|
{ |
||||
|
'old_descricao': 'Atas Reuniões Ordinárias', |
||||
|
'descricao': 'Ata de Reunião Ordinária', |
||||
|
'sigla': 'ARO' |
||||
|
}, |
||||
|
] |
||||
|
migra_atas_normas(tipos_movimentacao) |
||||
|
|
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
Loading…
Reference in new issue