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 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"<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()
]
if anexos:
return "<ul>" + "".join(anexos) + "</ul>"
return '<div class="list-group">' + "".join(anexos) + "</div>"
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:

14
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

Loading…
Cancel
Save