|
|
@ -27,11 +27,12 @@ Importa dados de serviços de arquivos TXT gerados pela COTIN. |
|
|
|
if (not 'TEMPLATE' in reader.fieldnames or |
|
|
|
not 'NAME' in reader.fieldnames or |
|
|
|
not 'COD_ORGAO' in reader.fieldnames): |
|
|
|
print reader.fieldnames |
|
|
|
raise CommandError(u"Formato inválido do arquivo.") |
|
|
|
self.stdout.write(u'Estrutura parece ok.') |
|
|
|
self.stdout.write("Preparando dados...") |
|
|
|
casas = { |
|
|
|
to_ascii(c.municipio.nome).replace(' ','').replace('-','').lower() |
|
|
|
to_ascii(c.municipio.nome).replace(' ','').replace('-','').replace("'", '').lower() |
|
|
|
+ '-' + to_ascii(c.municipio.uf.sigla).lower(): c.pk |
|
|
|
for c in Orgao.objects.filter(tipo__sigla='CM') |
|
|
|
} |
|
|
@ -53,29 +54,35 @@ Importa dados de serviços de arquivos TXT gerados pela COTIN. |
|
|
|
can_deactivate = True |
|
|
|
|
|
|
|
for rec in reader: |
|
|
|
nome = rec['NAME'] |
|
|
|
sigla = rec['TEMPLATE'] |
|
|
|
name = rec['NAME'] |
|
|
|
template = rec['TEMPLATE'] |
|
|
|
cod_orgao = rec['COD_ORGAO'] |
|
|
|
|
|
|
|
if sigla == 'DNS': |
|
|
|
dominio = nome |
|
|
|
if '.leg.br' in nome: |
|
|
|
nome = nome.replace('.leg.br', '') |
|
|
|
if template == 'DNS': |
|
|
|
s = name.split('.') |
|
|
|
nome_casa = s[0]+"-"+s[1] |
|
|
|
dominio = s[0] |
|
|
|
sufixo = ".".join(s[1:]) |
|
|
|
if '.leg.br' in name: |
|
|
|
sigla = 'LEGBR' |
|
|
|
elif '.gov.br' in nome: |
|
|
|
nome = nome.replace('.gov.br', '') |
|
|
|
if nome.startswith('camara'): |
|
|
|
nome = nome.replace('camara', '') |
|
|
|
if nome.startswith('cm'): |
|
|
|
nome = nome.replace('cm','') |
|
|
|
elif '.gov.br' in name: |
|
|
|
sigla = 'GOVBR' |
|
|
|
nome = nome.replace('.', '-') |
|
|
|
else: |
|
|
|
dominio = nome.replace('-','.')+'.leg.br' |
|
|
|
s = name.split("-") |
|
|
|
nome_casa = name |
|
|
|
dominio = name[0] |
|
|
|
sufixo = ".".join(s[1:]) + '.leg.br' |
|
|
|
sigla = template |
|
|
|
|
|
|
|
url = u"https://{subdominio}.{dominio}".format( |
|
|
|
if nome_casa.startswith('camara'): |
|
|
|
nome_casa = nome_casa.replace('camara', '') |
|
|
|
if nome_casa.startswith('cm'): |
|
|
|
nome_casa = nome_casa.replace('cm','') |
|
|
|
|
|
|
|
url = u"https://{subdominio}.{dominio}.{sufixo}".format( |
|
|
|
subdominio=subdominios[sigla], |
|
|
|
dominio=dominio |
|
|
|
dominio=dominio, |
|
|
|
sufixo=sufixo |
|
|
|
) |
|
|
|
tipo_servico = TipoServico.objects.get(sigla=sigla) |
|
|
|
lista_tipos.add(tipo_servico) |
|
|
@ -85,33 +92,67 @@ Importa dados de serviços de arquivos TXT gerados pela COTIN. |
|
|
|
self.stdout.write( |
|
|
|
"{template} {name} {cod_orgao} " |
|
|
|
"registro ignorado".format( |
|
|
|
template=rec['TEMPLATE'], |
|
|
|
name=rec['NAME'], |
|
|
|
cod_orgao=rec['COD_ORGAO'] |
|
|
|
template=template, |
|
|
|
name=name, |
|
|
|
cod_orgao=cod_orgao |
|
|
|
) |
|
|
|
) |
|
|
|
continue |
|
|
|
else: |
|
|
|
casa = Orgao.objects.get(id=cod_orgao) |
|
|
|
try: |
|
|
|
casa = Orgao.objects.get(id=cod_orgao) |
|
|
|
except Orgao.DoesNotExist: |
|
|
|
self.stdout.write( |
|
|
|
"{template} {name} {cod_orgao} " |
|
|
|
"codigo inexistente".format( |
|
|
|
template=template, |
|
|
|
name=name, |
|
|
|
cod_orgao=cod_orgao |
|
|
|
) |
|
|
|
) |
|
|
|
can_deactivate = False |
|
|
|
continue |
|
|
|
else: |
|
|
|
if nome not in casas: |
|
|
|
self.stdout.write( |
|
|
|
"{template} {name} {cod_orgao} " |
|
|
|
"orgao nao encontrado ({s})".format( |
|
|
|
template=rec['TEMPLATE'], |
|
|
|
name=rec['NAME'], |
|
|
|
cod_orgao=rec['COD_ORGAO'], |
|
|
|
s=nome |
|
|
|
if nome_casa in casas: |
|
|
|
casa = Orgao.objects.get(id=casas[nome_casa]) |
|
|
|
else: |
|
|
|
# Nome pode divergir, vamos procurar pelo domínio |
|
|
|
try: |
|
|
|
servico = Servico.objects.get( |
|
|
|
url__icontains=dominio, |
|
|
|
tipo_servico=tipo_servico |
|
|
|
) |
|
|
|
) |
|
|
|
can_deactivate = False |
|
|
|
continue |
|
|
|
casa = Orgao.objects.get(id=casas[nome]) |
|
|
|
servico.save() |
|
|
|
continue |
|
|
|
except (Servico.DoesNotExist, |
|
|
|
Servico.MultipleObjectsReturned): |
|
|
|
# tenta descobrir outro serviço do mesmo domínio |
|
|
|
casa = None |
|
|
|
for servico in Servico.objects.filter( |
|
|
|
url__icontains=dominio): |
|
|
|
if casa is None: |
|
|
|
casa = servico.casa_legislativa |
|
|
|
elif casa != servico.casa_legislativa: |
|
|
|
# Mais de uma casa usando o mesmo domínio!!! |
|
|
|
casa = None |
|
|
|
break |
|
|
|
if casa is None: # Impossível identificar a casa |
|
|
|
self.stdout.write( |
|
|
|
"{template} {name} {cod_orgao} " |
|
|
|
"orgao nao encontrado ({s})".format( |
|
|
|
template=template, |
|
|
|
name=name, |
|
|
|
cod_orgao=cod_orgao, |
|
|
|
s=nome_casa |
|
|
|
) |
|
|
|
) |
|
|
|
can_deactivate = False |
|
|
|
continue |
|
|
|
|
|
|
|
try: |
|
|
|
contato, created = casa.funcionario_set.get_or_create( |
|
|
|
setor='contato_interlegis', |
|
|
|
defaults={'nome': u"<<CRIADO PELO SISTEMA>>"} |
|
|
|
defaults={'nome': u"<<CRIADO PELA IMPORTAÇÃO DE SERVIÇOS SEIT>>"} |
|
|
|
) |
|
|
|
except Funcionario.MultipleObjectsReturned: |
|
|
|
contato = casa.funcionario_set.filter( |
|
|
@ -133,13 +174,16 @@ Importa dados de serviços de arquivos TXT gerados pela COTIN. |
|
|
|
servico.save() |
|
|
|
except Servico.MultipleObjectsReturned: |
|
|
|
self.stdout.write( |
|
|
|
u"{template} {name} mais de um servico encontrado " |
|
|
|
u"({s})".format(template=rec['TEMPLATE'], |
|
|
|
name=rec['NAME'], s=nome) |
|
|
|
u"{template} {name} {cod_orgao} mais de um servico " |
|
|
|
u"encontrado ({s})".format( |
|
|
|
template=template, |
|
|
|
name=name, |
|
|
|
cod_orgao=cod_orgao, |
|
|
|
s=nome_casa |
|
|
|
) |
|
|
|
) |
|
|
|
can_deactivate = False |
|
|
|
|
|
|
|
|
|
|
|
if can_deactivate: |
|
|
|
for tipo_servico in lista_tipos: |
|
|
|
tipo_servico.servico_set.filter( |
|
|
|