From 50de5286ca3e6772036d258b422e6082c78e3cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Wed, 19 Jun 2024 14:11:18 -0300 Subject: [PATCH] =?UTF-8?q?Valida=C3=A7=C3=A3o=20de=20conv=C3=AAnios=20pen?= =?UTF-8?q?dentes=20com=20datas=20de=20vig=C3=AAncia.=20Gertiq#184827?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...037_ajusta_acts_pendentes_gertiq_184827.py | 28 ++++++++++ sigi/apps/convenios/models.py | 52 ++++++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 sigi/apps/convenios/migrations/0037_ajusta_acts_pendentes_gertiq_184827.py diff --git a/sigi/apps/convenios/migrations/0037_ajusta_acts_pendentes_gertiq_184827.py b/sigi/apps/convenios/migrations/0037_ajusta_acts_pendentes_gertiq_184827.py new file mode 100644 index 0000000..4bf0581 --- /dev/null +++ b/sigi/apps/convenios/migrations/0037_ajusta_acts_pendentes_gertiq_184827.py @@ -0,0 +1,28 @@ +# Generated by Django 5.0.6 on 2024-06-19 12:49 + +from django.db import migrations +from django.db.models import Q + + +def ajusta_acts(apps, schema_editor): + Convenio = apps.get_model("convenios", "Convenio") + res = ( + Convenio.objects.filter(projeto__sigla="ACT", num_convenio="") + .filter( + Q(data_retorno_assinatura__isnull=False) + | Q(data_termino_vigencia__isnull=False) + ) + .update(data_retorno_assinatura=None, data_termino_vigencia=None) + ) + print(f"{res} convênios ajustados... ", end="") + + +class Migration(migrations.Migration): + + dependencies = [ + ("convenios", "0036_convenio_erro_gescon"), + ] + + operations = [ + migrations.RunPython(ajusta_acts, migrations.RunPython.noop), + ] diff --git a/sigi/apps/convenios/models.py b/sigi/apps/convenios/models.py index 2126b87..9313394 100644 --- a/sigi/apps/convenios/models.py +++ b/sigi/apps/convenios/models.py @@ -6,6 +6,7 @@ from pathlib import Path from django.db import models from django.db.models import Q, F from django.contrib.sites.shortcuts import get_current_site +from django.core.exceptions import ValidationError, NON_FIELD_ERRORS from django.core.mail import send_mail from django.core.validators import FileExtensionValidator from django.template import Template, Context @@ -406,10 +407,59 @@ class Convenio(models.Model): return self.anexo_set.first().arquivo.url return "" + def clean(self): + # Gertiq #184827 + if self.num_convenio: + if ( + self.data_retorno_assinatura is None + or self.data_termino_vigencia is None + ): + errors = { + NON_FIELD_ERRORS: ValidationError( + _( + "Um convênio vigente precisa ter as datas de " + "início e término de vigência" + ) + ) + } + if self.data_retorno_assinatura is None: + errors["data_retorno_assinatura"] = ValidationError( + _("Obrigatório para convênios vigentes") + ) + if self.data_termino_vigencia is None: + errors["data_termino_vigencia"] = ValidationError( + _("Obrigatório para convênios vigentes") + ) + raise ValidationError(errors) + else: + if ( + self.data_retorno_assinatura is not None + or self.data_termino_vigencia is not None + ): + errors = { + NON_FIELD_ERRORS: ValidationError( + _( + "Um convênio pendente não pode ter datas de " + "início e término de vigência" + ) + ) + } + if self.data_retorno_assinatura is not None: + errors["data_retorno_assinatura"] = ValidationError( + _("Não pode ser preenchido para convênios pendentes") + ) + if self.data_termino_vigencia is not None: + errors["data_termino_vigencia"] = ValidationError( + _("Não pode ser preenchido para convênios pendentes") + ) + raise ValidationError(errors) + + return super().clean() + def save(self, *args, **kwargs): self.conveniada = self.data_retorno_assinatura is not None self.equipada = self.data_termo_aceite is not None - super(Convenio, self).save(*args, **kwargs) + super().save(*args, **kwargs) class Meta: get_latest_by = "id"