Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #-*- coding:utf-8 -*-
  2. import os
  3. from django.db.models import signals
  4.  
  5. def post_delete(signal, instance, sender, **kwargs):
  6.     instance.deletar_miniaturas()
  7.  
  8. def gerador_criar_miniaturas(classe_alvo, self = None):
  9.     from modulos.utils.utils import criar_miniatura
  10.     if hasattr(classe_alvo, "__miniatura_admin__"):
  11.         miniatura_admin = getattr("__miniatura_admin__")
  12.     else:
  13.         miniatura_admin = (32, 32)
  14.     campos_processados = []
  15.     if hasattr(classe_alvo, "__miniaturas__"):        
  16.         #Adiciona o metodo para gerar as miniaturas
  17.         def gerar_miniaturas(self, request_files = None):
  18.             campos_processados = []
  19.             for miniatura in getattr(self, "__miniaturas__"):
  20.                 if hasattr(self, miniatura[0]):
  21.                     campo = self.__getattribute__(miniatura[0])
  22.                     if campo:
  23.                         if request_files == None or (request_files.keys().__contains__(miniatura[0])):
  24.                             diretorio, imagem = os.path.split(campo.path)
  25.                             if not os.path.exists("%s/thumbnails" % diretorio):
  26.                                 os.mkdir("%s/thumbnails" % diretorio)
  27.                             caminho_thumbnail = "%s/thumbnails/%s_%s_%s" % (diretorio, miniatura[1][0], miniatura[0],imagem)
  28.                             criar_miniatura(campo.path, (miniatura[1][1], miniatura[1][2]), caminho_thumbnail, False)
  29.                                                
  30.                             if not campo in campos_processados:
  31.                                 campos_processados.append(campo)
  32.                                 caminho_thumbnail = "%s/thumbnails/admin_%s_%s" % (diretorio, miniatura[0], imagem)
  33.                                 criar_miniatura(campo.path, miniatura_admin, caminho_thumbnail, False)
  34.         setattr(classe_alvo, "criar_miniaturas", gerar_miniaturas)                
  35.                        
  36.         #Adiciona os metodos para recuperar as miniaturas
  37.         campos_processados = []
  38.         for miniatura in getattr(classe_alvo, "__miniaturas__"):
  39.             if classe_alvo.__dict__.has_key(miniatura[0]):
  40. #                raise Exception()
  41.                 def thumbnail_factory(linha_miniatura):
  42.                     def thumbnail(self):
  43.                         campo = self.__getattribute__(linha_miniatura[0])
  44.                         diretorio, imagem = os.path.split(campo.url)
  45.                         return "%s/thumbnails/%s_%s_%s" % (diretorio,  linha_miniatura[1][0], linha_miniatura[0],imagem)
  46. #                        raise Exception()
  47.                     return thumbnail
  48.                 funcao_thumbnail = thumbnail_factory(miniatura)
  49.                 setattr(classe_alvo, "%s_%s_thumbnail" % (miniatura[0], miniatura[1][0]), funcao_thumbnail)
  50.                
  51.                 if not miniatura[0] in campos_processados:
  52.                     campos_processados.append(miniatura[0])    
  53.                    
  54.                     def admin_thumbnail_factory(linha_miniatura):                    
  55.                         def admin_thumbnail(self) :
  56.                             campo = self.__getattribute__(linha_miniatura[0])
  57.                             if campo:
  58.                                 valor = True
  59.                             else:
  60.                                 valor = False
  61.                             if campo:
  62.                                 diretorio, imagem = os.path.split(campo.url)
  63.                                 return u'<a href="%s/%s" class="fancy-trigger"><img src="%s/thumbnails/admin_%s_%s"/></a>' % (
  64.                                     diretorio, imagem, diretorio, linha_miniatura[0], imagem)
  65.                             else:
  66.                                 return ""
  67.                         return admin_thumbnail  
  68.                     funcao_thumbnail = admin_thumbnail_factory(miniatura)
  69.                     funcao_thumbnail.short_description = '%s' % miniatura[0]
  70.                     funcao_thumbnail.allow_tags = True
  71.                     setattr(classe_alvo, "admin_%s_thumbnail" % miniatura[0], funcao_thumbnail)
  72.                    
  73.                    
  74.         def deletar_miniaturas(self):
  75.             try:
  76.                 campos_processados = []
  77.                 for miniatura in getattr(classe_alvo, "__miniaturas__"):
  78.                     campo = self.__getattribute__(miniatura[0])
  79.                     diretorio, imagem = os.path.split(campo.path)
  80.                     thumbnail_file = "%s/thumbnails/%s_%s_%s" % (diretorio, miniatura[1][0], miniatura[0], imagem)
  81.                     os.unlink(thumbnail_file)
  82.                     if not miniatura[0] in campos_processados:
  83.                         campos_processados.append(miniatura[0])
  84.                         thumbnail_file = "%s/thumbnails/admin_%s_%s" % (diretorio, miniatura[0], imagem)
  85.                         os.unlink(thumbnail_file)
  86.                        
  87.             except Exception:
  88.                 pass            
  89.         setattr(classe_alvo, "deletar_miniaturas", deletar_miniaturas)            
  90.            
  91.         signals.pre_delete.connect(post_delete, sender = classe_alvo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement