From f25c23511af54b457a716d415c153ef03cc90b61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Tue, 17 Jun 2025 12:06:02 -0300 Subject: [PATCH] Corrige bug reportado no Gertiq #220333 --- sigi/apps/espacos/models.py | 26 +++++-------------- .../snippets/alerta_conflitos_snippet.html | 25 ++++++++++++++++++ 2 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 sigi/apps/espacos/templates/espacos/snippets/alerta_conflitos_snippet.html diff --git a/sigi/apps/espacos/models.py b/sigi/apps/espacos/models.py index e31f113..8b0059b 100644 --- a/sigi/apps/espacos/models.py +++ b/sigi/apps/espacos/models.py @@ -1,6 +1,7 @@ import re from django.core.exceptions import ValidationError from django.db import models +from django.template.loader import render_to_string from django.urls import reverse from django.utils.safestring import mark_safe from django.utils.translation import gettext as _ @@ -179,7 +180,7 @@ class Reserva(models.Model): _("Hora de início deve ser anterior à hora de término") ) - if self.espaco is None: + if not hasattr(self, "espaco"): # Se não informou o espaço, não há como verificar conflito # Deixa seguir para o clean_fields lançar a exceção return super().clean() @@ -191,26 +192,11 @@ class Reserva(models.Model): reservas_conflitantes.update(status=Reserva.STATUS_CONFLITO) elif self.status == Reserva.STATUS_ATIVO: # Não pode salvar assim. Lança exceção - link_list = "\n".join( - [ - f"' - f"{ reserva }" - for reserva in reservas_conflitantes - ] - ) - raise ValidationError( - mark_safe( - _( - "
" - "
Existe(m) reserva(s) que conflita(m) " - f"com essas datas:
" - f'
{link_list}
' - "
" - ) - ) + erro_txt = render_to_string( + "espacos/snippets/alerta_conflitos_snippet.html", + context={"reservas_conflitantes": reservas_conflitantes}, ) + raise ValidationError(mark_safe(erro_txt)) return super().clean() def save(self, *args, **kwargs): diff --git a/sigi/apps/espacos/templates/espacos/snippets/alerta_conflitos_snippet.html b/sigi/apps/espacos/templates/espacos/snippets/alerta_conflitos_snippet.html new file mode 100644 index 0000000..b230764 --- /dev/null +++ b/sigi/apps/espacos/templates/espacos/snippets/alerta_conflitos_snippet.html @@ -0,0 +1,25 @@ +{% load i18n %} + +
+
+ {% blocktranslate count counter=reservas_conflitantes.count %} + Existe uma reserva que conflita com essas datas: + {% plural %} + Existem {{ counter }} reservas que conflitam com essas datas: + {% endblocktranslate %} +
+ +
+ +