Browse Source

Migra anexo de sessão plenária

pull/978/head
Marcio Mazza 8 years ago
parent
commit
6fa7f206e6
  1. 110
      sapl/legacy/migracao_documentos.py

110
sapl/legacy/migracao_documentos.py

@ -33,44 +33,49 @@ EXTENSOES = {
} }
DOCS = { DOCS = {
CasaLegislativa: ( CasaLegislativa: [(
'logotipo', 'logotipo',
'props_sapl/logo_casa.gif', 'props_sapl/logo_casa.gif',
'casa/logotipo/logo_casa.gif'), 'casa/logotipo/logo_casa.gif')],
Parlamentar: ( Parlamentar: [(
'fotografia', 'fotografia',
'parlamentar/fotos/{}_foto_parlamentar', 'parlamentar/fotos/{}_foto_parlamentar',
'parlamentar/{0}/{0}_foto_parlamentar{1}'), 'parlamentar/{0}/{0}_foto_parlamentar{1}')],
MateriaLegislativa: ( MateriaLegislativa: [(
'texto_original', 'texto_original',
'materia/{}_texto_integral', 'materia/{}_texto_integral',
'materialegislativa/{0}/{0}_texto_integral{1}'), 'materialegislativa/{0}/{0}_texto_integral{1}')],
DocumentoAcessorio: ( DocumentoAcessorio: [(
'arquivo', 'arquivo',
'materia/{}', 'materia/{}',
'documentoacessorio/{0}/{0}{1}'), 'documentoacessorio/{0}/{0}{1}')],
NormaJuridica: ( NormaJuridica: [(
'texto_original', 'texto_original',
'norma_juridica/{}_texto_integral', 'norma_juridica/{}_texto_integral',
'normajuridica/{0}/{0}_texto_integral{1}'), 'normajuridica/{0}/{0}_texto_integral{1}')],
SessaoPlenaria: ( SessaoPlenaria: [
'upload_ata', ('upload_ata',
'ata_sessao/{}_ata_sessao', 'ata_sessao/{}_ata_sessao',
'sessaoplenaria/{0}/ata/{0}_ata_sessao{1}'), 'sessaoplenaria/{0}/ata/{0}_ata_sessao{1}'),
Proposicao: ( ('upload_anexo',
'anexo_sessao/{}_texto_anexado',
'sessaoplenaria/{0}/anexo/{0}_texto_anexado{1}')
],
Proposicao: [(
'texto_original', 'texto_original',
'proposicao/{}', 'proposicao/{}',
'proposicao/{0}/{0}{1}'), 'proposicao/{0}/{0}{1}')],
DocumentoAdministrativo: ( DocumentoAdministrativo: [(
'texto_integral', 'texto_integral',
'administrativo/{}_texto_integral', 'administrativo/{}_texto_integral',
'documentoadministrativo/{0}/{0}_texto_integral{1}'), 'documentoadministrativo/{0}/{0}_texto_integral{1}')],
} }
DOCS = {tipo: (campo, DOCS = {tipo: [(campo,
os.path.join('sapl_documentos', origem), os.path.join('sapl_documentos', origem),
os.path.join('sapl', destino)) os.path.join('sapl', destino))
for tipo, (campo, origem, destino) in DOCS.items()} for campo, origem, destino in campos]
for tipo, campos in DOCS.items()}
def em_media(caminho): def em_media(caminho):
@ -94,8 +99,8 @@ def get_casa_legislativa():
def migrar_docs_logo(): def migrar_docs_logo():
print('Migrando logotipo da casa') print('#### Migrando logotipo da casa ####')
_, origem, destino = DOCS[CasaLegislativa] [(_, origem, destino)] = DOCS[CasaLegislativa]
props_sapl = os.path.dirname(origem) props_sapl = os.path.dirname(origem)
# a pasta props_sapl deve conter apenas o origem e metadatas! # a pasta props_sapl deve conter apenas o origem e metadatas!
assert set(os.listdir(em_media(props_sapl))) < { assert set(os.listdir(em_media(props_sapl))) < {
@ -124,29 +129,35 @@ def get_extensao(caminho):
def migrar_docs_por_ids(tipo): def migrar_docs_por_ids(tipo):
campo, base_origem, base_destino = DOCS[tipo] for campo, base_origem, base_destino in DOCS[tipo]:
print('Migrando {} de {}'.format(campo, tipo.__name__)) print('#### Migrando {} de {} ####'.format(campo, tipo.__name__))
dir_origem, nome_origem = os.path.split(em_media(base_origem)) dir_origem, nome_origem = os.path.split(em_media(base_origem))
pat = re.compile('^{}$'.format(nome_origem.format('(\d+)'))) pat = re.compile('^{}$'.format(nome_origem.format('(\d+)')))
for arq in os.listdir(dir_origem):
match = pat.match(arq) if not os.path.isdir(dir_origem):
if match: print(' >>> O diretório {} não existe! Abortado.'.format(
origem = os.path.join(dir_origem, match.group(0)) dir_origem))
id = match.group(1) continue
extensao = get_extensao(origem)
destino = base_destino.format(id, extensao) for arq in os.listdir(dir_origem):
mover_documento(origem, destino) match = pat.match(arq)
if match:
# associa documento ao objeto origem = os.path.join(dir_origem, match.group(0))
try: id = match.group(1)
obj = tipo.objects.get(pk=id) extensao = get_extensao(origem)
setattr(obj, campo, destino) destino = base_destino.format(id, extensao)
obj.save() mover_documento(origem, destino)
except tipo.DoesNotExist:
msg = '{} (pk={}) não encontrado para documento em [{}]' # associa documento ao objeto
print(msg.format( try:
tipo.__name__, id, destino)) obj = tipo.objects.get(pk=id)
setattr(obj, campo, destino)
obj.save()
except tipo.DoesNotExist:
msg = ' {} (pk={}) não encontrado para documento em [{}]'
print(msg.format(
tipo.__name__, id, destino))
def migrar_documentos(): def migrar_documentos():
@ -170,7 +181,8 @@ def migrar_documentos():
for (dir, _, files) in os.walk(em_media('sapl_documentos')) for (dir, _, files) in os.walk(em_media('sapl_documentos'))
for file in files] for file in files]
if sobrando: if sobrando:
print('{} documentos sobraram sem ser migrados!!!'.format( print('\n#### Encerrado ####\n\n'
len(sobrando))) '{} documentos sobraram sem ser migrados!!!'.format(
len(sobrando)))
for doc in sobrando: for doc in sobrando:
print(' {}'. format(doc)) print(' {}'. format(doc))

Loading…
Cancel
Save