From a6e66a9fa1a1817076e22a6762b5cb8aecc0c7e0 Mon Sep 17 00:00:00 2001 From: Edward <9326037+edwardoliveira@users.noreply.github.com> Date: Tue, 7 Mar 2023 03:02:29 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20valida=C3=A7=C3=B5es=20extra=20em=20?= =?UTF-8?q?Audi=C3=AAncia=20P=C3=BAblica=20(#3632)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Adiciona validações extra em Audiência Pública * Mudanças recomendadas por review 1 --- sapl/audiencia/forms.py | 24 +++++++++++++++++++++++- sapl/audiencia/views.py | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/sapl/audiencia/forms.py b/sapl/audiencia/forms.py index 126edf174..211db9855 100755 --- a/sapl/audiencia/forms.py +++ b/sapl/audiencia/forms.py @@ -1,5 +1,7 @@ import logging +from datetime import datetime + from django import forms from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import transaction @@ -86,6 +88,26 @@ class AudienciaForm(FileFieldCheckMixin, forms.ModelForm): parlamentar_autor = cleaned_data["parlamentar_autor"] requerimento = cleaned_data["requerimento"] + if cleaned_data["ano"] != cleaned_data["data"].year: + raise ValidationError(f"Ano da audiência ({cleaned_data['ano']}) difere " + f"do ano no campo data ({cleaned_data['data'].year})") + + # + # TODO: converter hora_inicio e hora_fim para TimeField + # + # valida hora inicio + try: + datetime.strptime(cleaned_data["hora_inicio"], '%H:%M').time() + except ValueError: + raise ValidationError(f"Formato de horário de início inválido: {cleaned_data['hora_inicio']}") + + # valida hora fim + if cleaned_data["hora_fim"]: + try: + datetime.strptime(cleaned_data["hora_fim"], '%H:%M').time() + except ValueError: + raise ValidationError(f"Formato de horário de fim inválido: {cleaned_data['hora_fim']}") + if materia and ano_materia and tipo_materia: try: self.logger.debug("Tentando obter MateriaLegislativa %s nº %s/%s." % (tipo_materia, materia, ano_materia)) @@ -123,7 +145,7 @@ class AudienciaForm(FileFieldCheckMixin, forms.ModelForm): cleaned_data['numero'] = 1 else: if AudienciaPublica.objects.filter(numero=cleaned_data['numero'], ano=cleaned_data['ano']).exclude(pk=self.instance.pk).exists(): - raise ValidationError(f"Já existe uma audiência com a numeração {cleaned_data['numero']}.") + raise ValidationError(f"Já existe uma audiência pública com a numeração {str(cleaned_data['numero']).rjust(3, '0')}/{cleaned_data['ano']}.") if self.cleaned_data['hora_inicio'] and self.cleaned_data['hora_fim']: if self.cleaned_data['hora_fim'] < self.cleaned_data['hora_inicio']: diff --git a/sapl/audiencia/views.py b/sapl/audiencia/views.py index 296a5d7aa..443fc81e8 100755 --- a/sapl/audiencia/views.py +++ b/sapl/audiencia/views.py @@ -32,7 +32,7 @@ class AudienciaCrud(Crud): for row in context['rows']: audiencia_id = row[0][1].split('/')[-1] - tema = str(audiencia_materia[audiencia_id][1]) + '/' + str(audiencia_materia[audiencia_id][2]) + tema = str(audiencia_materia[audiencia_id][1]).rjust(3, '0') + '/' + str(audiencia_materia[audiencia_id][2]) row[0] = (tema, row[0][1]) coluna_materia = row[3] # Se mudar a ordem de listagem, mudar aqui. if coluna_materia[0]: