Browse Source

Corrigindo problema de nomes iguais ao atualizar arquivo FIX #2891

pull/2892/head
ulyssesBML 7 years ago
parent
commit
74c7bf3c46
  1. 7
      sapl/audiencia/models.py
  2. 7
      sapl/comissoes/models.py
  3. 6
      sapl/materia/models.py
  4. 5
      sapl/norma/models.py
  5. 5
      sapl/protocoloadm/models.py
  6. 8
      sapl/sessao/models.py
  7. 14
      sapl/utils.py

7
sapl/audiencia/models.py

@ -7,7 +7,8 @@ from sapl.materia.models import MateriaLegislativa
from sapl.parlamentares.models import (CargoMesa, Parlamentar)
from sapl.utils import (YES_NO_CHOICES, SaplGenericRelation,
restringe_tipos_de_arquivo_txt, texto_upload_path)
restringe_tipos_de_arquivo_txt, texto_upload_path,
OverwriteStorage)
def get_audiencia_media_path(instance, subpath, filename):
@ -89,6 +90,7 @@ class AudienciaPublica(models.Model):
blank=True,
null=True,
upload_to=pauta_upload_path,
storage=OverwriteStorage(),
verbose_name=_('Pauta da Audiência Pública'),
validators=[restringe_tipos_de_arquivo_txt])
upload_ata = models.FileField(
@ -96,11 +98,13 @@ class AudienciaPublica(models.Model):
null=True,
upload_to=ata_upload_path,
verbose_name=_('Ata da Audiência Pública'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
upload_anexo = models.FileField(
blank=True,
null=True,
upload_to=anexo_upload_path,
storage=OverwriteStorage(),
verbose_name=_('Anexo da Audiência Pública'))
class Meta:
@ -156,6 +160,7 @@ class AnexoAudienciaPublica(models.Model):
on_delete=models.PROTECT)
arquivo = models.FileField(
upload_to=texto_upload_path,
storage=OverwriteStorage(),
verbose_name=_('Arquivo'))
data = models.DateField(
auto_now=timezone.now)

7
sapl/comissoes/models.py

@ -6,7 +6,8 @@ from model_utils import Choices
from sapl.base.models import Autor
from sapl.parlamentares.models import Parlamentar
from sapl.utils import (YES_NO_CHOICES, SaplGenericRelation,
restringe_tipos_de_arquivo_txt, texto_upload_path)
restringe_tipos_de_arquivo_txt, texto_upload_path,
OverwriteStorage)
@reversion.register()
@ -238,15 +239,18 @@ class Reuniao(models.Model):
blank=True, null=True,
upload_to=pauta_upload_path,
verbose_name=_('Pauta da Reunião'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
upload_ata = models.FileField(
blank=True, null=True,
upload_to=ata_upload_path,
verbose_name=_('Ata da Reunião'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
upload_anexo = models.FileField(
blank=True, null=True,
upload_to=anexo_upload_path,
storage=OverwriteStorage(),
verbose_name=_('Anexo da Reunião'))
class Meta:
@ -313,6 +317,7 @@ class DocumentoAcessorio(models.Model):
null=True,
upload_to=anexo_upload_path,
verbose_name=_('Texto Integral'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
data_ultima_atualizacao = models.DateTimeField(

6
sapl/materia/models.py

@ -18,7 +18,8 @@ from sapl.parlamentares.models import Parlamentar
#from sapl.protocoloadm.models import Protocolo
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, SaplGenericForeignKey,
SaplGenericRelation, restringe_tipos_de_arquivo_txt,
texto_upload_path, get_settings_auth_user_model)
texto_upload_path, get_settings_auth_user_model,
OverwriteStorage)
EM_TRAMITACAO = [(1, 'Sim'),
@ -260,6 +261,7 @@ class MateriaLegislativa(models.Model):
null=True,
upload_to=materia_upload_path,
verbose_name=_('Texto Original'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
texto_articulado = GenericRelation(
@ -538,6 +540,7 @@ class DocumentoAcessorio(models.Model):
max_length=255,
upload_to=anexo_upload_path,
verbose_name=_('Texto Integral'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
proposicao = GenericRelation(
@ -801,6 +804,7 @@ class Proposicao(models.Model):
blank=True,
null=True,
verbose_name=_('Texto Original'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
texto_articulado = GenericRelation(

5
sapl/norma/models.py

@ -12,7 +12,8 @@ from sapl.materia.models import MateriaLegislativa
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
restringe_tipos_de_arquivo_txt,
texto_upload_path,
get_settings_auth_user_model)
get_settings_auth_user_model,
OverwriteStorage)
@reversion.register()
@ -82,6 +83,7 @@ class NormaJuridica(models.Model):
null=True,
upload_to=norma_upload_path,
verbose_name=_('Texto Integral'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
tipo = models.ForeignKey(
TipoNormaJuridica,
@ -356,6 +358,7 @@ class AnexoNormaJuridica(models.Model):
null=True,
upload_to=norma_upload_path,
verbose_name=_('Arquivo Anexo'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'),
choices=RANGE_ANOS)

5
sapl/protocoloadm/models.py

@ -7,7 +7,8 @@ import reversion
from sapl.base.models import Autor
from sapl.materia.models import TipoMateriaLegislativa, UnidadeTramitacao
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, texto_upload_path,
get_settings_auth_user_model)
get_settings_auth_user_model,
OverwriteStorage)
@reversion.register()
@ -164,6 +165,7 @@ class DocumentoAdministrativo(models.Model):
texto_integral = models.FileField(
blank=True,
null=True,
storage=OverwriteStorage(),
upload_to=texto_upload_path,
verbose_name=_('Texto Integral'))
restrito = models.BooleanField(default=False,
@ -229,6 +231,7 @@ class DocumentoAcessorioAdministrativo(models.Model):
blank=True,
null=True,
upload_to=texto_upload_path,
storage=OverwriteStorage(),
verbose_name=_('Arquivo'))
data = models.DateField(blank=True, null=True, verbose_name=_('Data'))
autor = models.CharField(

8
sapl/sessao/models.py

@ -14,7 +14,8 @@ from sapl.parlamentares.models import (CargoMesa, Legislatura, Parlamentar,
Partido, SessaoLegislativa)
from sapl.utils import (YES_NO_CHOICES, SaplGenericRelation,
get_settings_auth_user_model,
restringe_tipos_de_arquivo_txt, texto_upload_path)
restringe_tipos_de_arquivo_txt, texto_upload_path,
OverwriteStorage)
@reversion.register()
@ -185,16 +186,19 @@ class SessaoPlenaria(models.Model):
null=True,
upload_to=pauta_upload_path,
verbose_name=_('Pauta da Sessão'),
storage=OverwriteStorage(),
validators=[restringe_tipos_de_arquivo_txt])
upload_ata = models.FileField(
blank=True,
null=True,
upload_to=ata_upload_path,
storage=OverwriteStorage(),
verbose_name=_('Ata da Sessão'),
validators=[restringe_tipos_de_arquivo_txt])
upload_anexo = models.FileField(
blank=True,
null=True,
storage=OverwriteStorage(),
upload_to=anexo_upload_path,
verbose_name=_('Anexo da Sessão'))
iniciada = models.NullBooleanField(blank=True,
@ -421,6 +425,7 @@ class AbstractOrador(models.Model): # Oradores
upload_anexo = models.FileField(
blank=True,
null=True,
storage=OverwriteStorage(),
upload_to=anexo_upload_path,
verbose_name=_('Anexo do Orador'))
@ -763,6 +768,7 @@ class JustificativaAusencia(models.Model):
upload_anexo = models.FileField(
blank=True,
null=True,
storage=OverwriteStorage(),
upload_to=anexo_upload_path,
verbose_name=_('Anexo de Justificativa'))

14
sapl/utils.py

@ -23,6 +23,7 @@ from django.forms.widgets import SplitDateTimeWidget
from django.utils import six, timezone
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.core.files.storage import FileSystemStorage
import django_filters
from easy_thumbnails import source_generators
from floppyforms import ClearableFileInput
@ -983,3 +984,16 @@ def lista_anexados(principal, isMateriaLegislativa=True):
if principal in anexados_total:
anexados_total.remove(principal)
return anexados_total
class OverwriteStorage(FileSystemStorage):
'''
Solução derivada do gist: https://gist.github.com/fabiomontefuscolo/1584462
Muda o comportamento padrão do Django e o faz sobrescrever arquivos de
mesmo nome que foram carregados pelo usuário ao invés de renomeá-los.
'''
def get_available_name(self, name, max_length=None):
if self.exists(name):
os.remove(os.path.join(settings.MEDIA_ROOT, name))
return name
Loading…
Cancel
Save