Browse Source

Corrige bug reportado no Gertiq #220333

dependabot/pip/requirements/pillow-11.3.0
Sesóstris Vieira 2 months ago
parent
commit
f25c23511a
  1. 26
      sigi/apps/espacos/models.py
  2. 25
      sigi/apps/espacos/templates/espacos/snippets/alerta_conflitos_snippet.html

26
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"<a href='"
f"{reverse('admin:espacos_reserva_change', args=[reserva.pk])}' "
'class="list-group-item list-group-item-action list-group-item-danger">'
f"{ reserva }</a>"
for reserva in reservas_conflitantes
]
)
raise ValidationError(
mark_safe(
_(
"<div class='mx-2 w-100'>"
"<h6>Existe(m) reserva(s) que conflita(m) "
f"com essas datas:</h6>"
f'<div class="list-group">{link_list}</div>'
"</div>"
)
)
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):

25
sigi/apps/espacos/templates/espacos/snippets/alerta_conflitos_snippet.html

@ -0,0 +1,25 @@
{% load i18n %}
<div class="mx-2 w-100">
<h6>
{% blocktranslate count counter=reservas_conflitantes.count %}
Existe uma reserva que conflita com essas datas:
{% plural %}
Existem {{ counter }} reservas que conflitam com essas datas:
{% endblocktranslate %}
</h6>
<div class="list-group">
{% for reserva in reservas_conflitantes %}
<a href="{% url "admin:espacos_reserva_change" reserva.pk %}" class="list-group-item list-group-item-action list-group-item-danger alert-danger">
<p class="alert-link mb-0">{{ reserva }}</p>
<small>
{% blocktranslate with data_inicio=reserva.data_inicio|date:"SHORT_DATE_FORMAT" hora_inicio=reserva.hora_inicio|time:"TIME_FORMAT" data_termino=reserva.data_termino|date:"SHORT_DATE_FORMAT" hora_termino=reserva.hora_termino|time:"TIME_FORMAT" %}
De {{ data_inicio }} {{ hora_inicio }} até {{ data_termino }} {{ hora_termino }}
{% endblocktranslate %}
</small>
</a>
{% endfor %}
</div>
</div>
Loading…
Cancel
Save