Browse Source

Validação de convênios pendentes com datas de vigência. Gertiq#184827

dependabot/pip/requirements/djangorestframework-3.15.2 3.0.89
Sesóstris Vieira 6 months ago
parent
commit
50de5286ca
  1. 28
      sigi/apps/convenios/migrations/0037_ajusta_acts_pendentes_gertiq_184827.py
  2. 52
      sigi/apps/convenios/models.py

28
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),
]

52
sigi/apps/convenios/models.py

@ -6,6 +6,7 @@ from pathlib import Path
from django.db import models from django.db import models
from django.db.models import Q, F from django.db.models import Q, F
from django.contrib.sites.shortcuts import get_current_site 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.mail import send_mail
from django.core.validators import FileExtensionValidator from django.core.validators import FileExtensionValidator
from django.template import Template, Context from django.template import Template, Context
@ -406,10 +407,59 @@ class Convenio(models.Model):
return self.anexo_set.first().arquivo.url return self.anexo_set.first().arquivo.url
return "" 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): def save(self, *args, **kwargs):
self.conveniada = self.data_retorno_assinatura is not None self.conveniada = self.data_retorno_assinatura is not None
self.equipada = self.data_termo_aceite is not None self.equipada = self.data_termo_aceite is not None
super(Convenio, self).save(*args, **kwargs) super().save(*args, **kwargs)
class Meta: class Meta:
get_latest_by = "id" get_latest_by = "id"

Loading…
Cancel
Save