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