Browse Source

Corrige bug ao criar nova ocorrência com anexo dentro do admin de Casa

dependabot/pip/requirements/pillow-11.3.0 4.0.5
Sesóstris Vieira 2 months ago
parent
commit
7465769455
  1. 15
      sigi/apps/casas/admin.py
  2. 14
      sigi/apps/casas/forms.py

15
sigi/apps/casas/admin.py

@ -1,5 +1,7 @@
from pathlib import Path
from typing import Any from typing import Any
from django.db.models.query import QuerySet from django.db.models.query import QuerySet
from django.forms import ValidationError
from django.http import HttpRequest from django.http import HttpRequest
from email_validator import validate_email, EmailNotValidError from email_validator import validate_email, EmailNotValidError
from django.db.models import F from django.db.models import F
@ -340,11 +342,15 @@ class OcorrenciaInline(admin.StackedInline):
@mark_safe @mark_safe
def get_anexos(self, obj): def get_anexos(self, obj):
anexos = [ anexos = [
f"<li><a href='{a.arquivo.url}'>{a.descricao}</a></li>" f'<a href="{a.arquivo.url}" '
'class="list-group-item list-group-item-action" download>'
'<i class="bi bi-filetype-'
f'{Path(a.arquivo.path).suffix.replace('.','')}"></i> '
f"{a.descricao or Path(a.arquivo.path).name}</a>"
for a in obj.anexo_set.all() for a in obj.anexo_set.all()
] ]
if anexos: if anexos:
return "<ul>" + "".join(anexos) + "</ul>" return '<div class="list-group">' + "".join(anexos) + "</div>"
else: else:
return "Sem anexos" return "Sem anexos"
@ -528,7 +534,10 @@ class OrgaoAdmin(AsciifyQParameter, ExportActionMixin, admin.ModelAdmin):
try: try:
servidor = Servidor.objects.get(user=request.user) servidor = Servidor.objects.get(user=request.user)
except Servidor.DoesNotExist: except Servidor.DoesNotExist:
servidor = None raise ValidationError(
_("Seu usuário não pode registrar ocorrênciaa"),
code="invalid_user",
)
if servidor is not None: if servidor is not None:
instances = ocorrencia_formset.save(commit=False) instances = ocorrencia_formset.save(commit=False)
for obj in instances: for obj in instances:

14
sigi/apps/casas/forms.py

@ -123,13 +123,17 @@ class OcorrenciaInlineForm(forms.ModelForm):
fields = "__all__" fields = "__all__"
def save(self, commit=True): def save(self, commit=True):
instance = super().save(commit=False) instance = super().save(commit=commit)
# Ocorrencia instance needs to have a value for field "id" before
# their relationships can be used.
if instance.id is None:
return instance
arquivo = self.cleaned_data["anexo"] arquivo = self.cleaned_data["anexo"]
descricao = self.cleaned_data["descricao_anexo"] descricao = self.cleaned_data["descricao_anexo"]
if arquivo: if arquivo:
anexo = Anexo(arquivo=arquivo, descricao=descricao) anexo = Anexo(
instance.anexo_set.add(anexo, bulk=False) ocorrencia=instance, arquivo=arquivo, descricao=descricao
)
anexo.save()
self.cleaned_data["anexo"] = None self.cleaned_data["anexo"] = None
if commit:
instance.save()
return instance return instance

Loading…
Cancel
Save