|
|
@ -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) |
|
|
|