From 6be75a03b247c186a4e0ca988506dbb68865dcc5 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 17 Mar 2017 18:08:16 -0300 Subject: [PATCH] Migra fotos dos parlamentares --- sapl/legacy/migration.py | 43 +++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py index 23cdec286..86cd48793 100644 --- a/sapl/legacy/migration.py +++ b/sapl/legacy/migration.py @@ -1,6 +1,7 @@ import os import re from datetime import date +from glob import glob from subprocess import PIPE, call import pkg_resources @@ -737,12 +738,21 @@ make_with_log.required = foreign_key_required # MIGRAÇÃO DE DOCUMENTOS ################################################### -DOCS = {'logotipo': ('props_sapl/logo_casa.gif', - 'casa/logotipo/logo_casa.gif')} +DOCS = { + CasaLegislativa: ( + 'logotipo', + 'props_sapl/logo_casa.gif', + 'casa/logotipo/logo_casa.gif'), + Parlamentar: ( + 'fotografia', + 'parlamentar/fotos/{}_foto_parlamentar', + 'parlamentar/{0}/{0}_foto_parlamentar'), +} -DOCS = {k: (os.path.join('sapl_documentos', origem), - os.path.join('sapl', destino)) - for k, (origem, destino) in DOCS.items()} +DOCS = {tipo: (campo, + os.path.join('sapl_documentos', origem), + os.path.join('sapl', destino)) + for tipo, (campo, origem, destino) in DOCS.items()} def em_media(caminho): @@ -750,13 +760,14 @@ def em_media(caminho): def mover_documento(origem, destino): - origem, destino = map(em_media, (origem, destino)) + origem, destino = [em_media(c) if not os.path.isabs(c) else c + for c in (origem, destino)] os.makedirs(os.path.dirname(destino), exist_ok=True) os.rename(origem, destino) def migrar_docs_logo(): - origem, destino = DOCS['logotipo'] + _, origem, destino = DOCS[CasaLegislativa] props_sapl = os.path.dirname(origem) # a pasta props_sapl deve conter apenas o origem e metadatas! assert set(os.listdir(em_media(props_sapl))) == { @@ -767,9 +778,27 @@ def migrar_docs_logo(): casa.save() +def migrar_docs_por_ids(tipo): + campo, base_origem, base_destino = DOCS[tipo] + origens = glob.glob(em_media(base_origem.format('*'))) + + def get_id(caminho): + match = re.match('.*/' + base_origem.format('(\d+)'), caminho) + return int(match.group(1)) + + for origem in origens: + id = get_id(origem) + destino = base_destino.format(id) + mover_documento(origem, destino) + obj = tipo.objects.get(pk=id) + setattr(obj, campo, destino) + obj.save() + + def migrar_documentos(): # aqui supomos que uma pasta chamada sapl_documentos está em MEDIA_ROOT # com o conteúdo da pasta de mesmo nome do zope # Os arquivos da pasta serão movidos para a nova estrutura e a pasta será # apagada migrar_docs_logo() + migrar_docs_por_ids(Parlamentar)