From 74657694550870de0d0fb582e5068292c9b31bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Mon, 16 Jun 2025 18:13:42 -0300 Subject: [PATCH] =?UTF-8?q?Corrige=20bug=20ao=20criar=20nova=20ocorr=C3=AA?= =?UTF-8?q?ncia=20com=20anexo=20dentro=20do=20admin=20de=20Casa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigi/apps/casas/admin.py | 15 ++++++++++++--- sigi/apps/casas/forms.py | 14 +++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py index 9991e67..0c85ddd 100644 --- a/sigi/apps/casas/admin.py +++ b/sigi/apps/casas/admin.py @@ -1,5 +1,7 @@ +from pathlib import Path from typing import Any from django.db.models.query import QuerySet +from django.forms import ValidationError from django.http import HttpRequest from email_validator import validate_email, EmailNotValidError from django.db.models import F @@ -340,11 +342,15 @@ class OcorrenciaInline(admin.StackedInline): @mark_safe def get_anexos(self, obj): anexos = [ - f"
  • {a.descricao}
  • " + f'' + ' ' + f"{a.descricao or Path(a.arquivo.path).name}" for a in obj.anexo_set.all() ] if anexos: - return "" + return '
    ' + "".join(anexos) + "
    " else: return "Sem anexos" @@ -528,7 +534,10 @@ class OrgaoAdmin(AsciifyQParameter, ExportActionMixin, admin.ModelAdmin): try: servidor = Servidor.objects.get(user=request.user) except Servidor.DoesNotExist: - servidor = None + raise ValidationError( + _("Seu usuário não pode registrar ocorrênciaa"), + code="invalid_user", + ) if servidor is not None: instances = ocorrencia_formset.save(commit=False) for obj in instances: diff --git a/sigi/apps/casas/forms.py b/sigi/apps/casas/forms.py index 8c6ad46..ae89f49 100644 --- a/sigi/apps/casas/forms.py +++ b/sigi/apps/casas/forms.py @@ -123,13 +123,17 @@ class OcorrenciaInlineForm(forms.ModelForm): fields = "__all__" 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"] descricao = self.cleaned_data["descricao_anexo"] if arquivo: - anexo = Anexo(arquivo=arquivo, descricao=descricao) - instance.anexo_set.add(anexo, bulk=False) + anexo = Anexo( + ocorrencia=instance, arquivo=arquivo, descricao=descricao + ) + anexo.save() self.cleaned_data["anexo"] = None - if commit: - instance.save() return instance