mirror of https://github.com/interlegis/sapl.git
Marcio Mazza
8 years ago
2 changed files with 75 additions and 71 deletions
@ -0,0 +1,74 @@ |
|||
import os |
|||
import re |
|||
from glob import glob |
|||
|
|||
from sapl.base.models import CasaLegislativa |
|||
from sapl.parlamentares.models import Parlamentar |
|||
from sapl.settings import MEDIA_ROOT |
|||
|
|||
# MIGRAÇÃO DE DOCUMENTOS ################################################### |
|||
|
|||
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 = {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): |
|||
return os.path.join(MEDIA_ROOT, caminho) |
|||
|
|||
|
|||
def mover_documento(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[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))) == { |
|||
'logo_casa.gif', '.metadata', 'logo_casa.gif.metadata'} |
|||
mover_documento(origem, destino) |
|||
casa = CasaLegislativa.objects.first() |
|||
casa.logotipo = destino |
|||
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) |
Loading…
Reference in new issue