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 os
import re import re
from datetime import date from datetime import date
from glob import glob
from subprocess import PIPE, call from subprocess import PIPE, call
import pkg_resources import pkg_resources
@ -737,12 +738,21 @@ make_with_log.required = foreign_key_required
# MIGRAÇÃO DE DOCUMENTOS ################################################### # MIGRAÇÃO DE DOCUMENTOS ###################################################
DOCS = {'logotipo': ('props_sapl/logo_casa.gif', DOCS = {
'casa/logotipo/logo_casa.gif')} 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), DOCS = {tipo: (campo,
os.path.join('sapl', destino)) os.path.join('sapl_documentos', origem),
for k, (origem, destino) in DOCS.items()} os.path.join('sapl', destino))
for tipo, (campo, origem, destino) in DOCS.items()}
def em_media(caminho): def em_media(caminho):
@ -750,13 +760,14 @@ def em_media(caminho):
def mover_documento(origem, destino): 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.makedirs(os.path.dirname(destino), exist_ok=True)
os.rename(origem, destino) os.rename(origem, destino)
def migrar_docs_logo(): def migrar_docs_logo():
origem, destino = DOCS['logotipo'] _, 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))) == {
@ -767,9 +778,27 @@ def migrar_docs_logo():
casa.save() 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(): def migrar_documentos():
# aqui supomos que uma pasta chamada sapl_documentos está em MEDIA_ROOT # aqui supomos que uma pasta chamada sapl_documentos está em MEDIA_ROOT
# com o conteúdo da pasta de mesmo nome do zope # 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á # Os arquivos da pasta serão movidos para a nova estrutura e a pasta será
# apagada # apagada
migrar_docs_logo() migrar_docs_logo()
migrar_docs_por_ids(Parlamentar)

Loading…
Cancel
Save