Browse Source

Migra fotos dos parlamentares

pull/978/head
Marcio Mazza 8 years ago
parent
commit
6be75a03b2
  1. 43
      sapl/legacy/migration.py

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

Loading…
Cancel
Save