From 5d37b0ea60201b728a8f9850924985608d48e5f4 Mon Sep 17 00:00:00 2001 From: Gilson Filho Date: Fri, 2 Dec 2011 14:47:25 +0000 Subject: [PATCH] =?UTF-8?q?Corrigindo=20e=20inserindo=20a=20valida=C3=A7?= =?UTF-8?q?=C3=A3o=20da=20data=20entre=20duas=20=C3=BAltimas=20fun=C3=A7?= =?UTF-8?q?=C3=B5es=20do=20servidor=20cadastrado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigi/apps/diagnosticos/models.py | 4 +++ sigi/apps/servidores/forms.py | 36 +++++++++++++------ sigi/apps/utils/validators.py | 10 ++---- sigi/templates/base_mobile.html | 3 +- .../diagnosticos_categorias_list.html | 2 +- 5 files changed, 34 insertions(+), 21 deletions(-) diff --git a/sigi/apps/diagnosticos/models.py b/sigi/apps/diagnosticos/models.py index 84c530f..8a4a3ae 100644 --- a/sigi/apps/diagnosticos/models.py +++ b/sigi/apps/diagnosticos/models.py @@ -2,6 +2,7 @@ from datetime import datetime from django.db import models +from sigi.apps.casas.models import CasaLegislativa from sigi.apps.utils import SearchField from sigi.apps.utils.email import enviar_email from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute @@ -51,6 +52,9 @@ class Diagnostico(BaseEntity): """ Retorna uma listas das categorias dinamicas que tem ao menos uma resposta """ + # Pesquisando se os contatos, que é a segunda categoria estão respondidas + casa_legislativa = CasaLegislativa.objects.get(pk=self.casa_legislativa.id) + # obtem todas as respostas dinamicas desse diagnostico respostas = Resposta.objects.filter(entity_id=self.id).all() diff --git a/sigi/apps/servidores/forms.py b/sigi/apps/servidores/forms.py index 5de2b21..cb5f753 100644 --- a/sigi/apps/servidores/forms.py +++ b/sigi/apps/servidores/forms.py @@ -2,9 +2,10 @@ from django import forms -from sigi.apps.utils.validators import valida_data +from sigi.apps.utils.validators import valida_data, valida_periodo_data + +from sigi.apps.servidores.models import Ferias, Licenca, Funcao, Servidor -from sigi.apps.servidores.models import Ferias, Licenca, Funcao class FeriasForm(forms.ModelForm): class Meta: @@ -13,9 +14,8 @@ class FeriasForm(forms.ModelForm): def clean(self): data = self.cleaned_data if valida_data(data.get('inicio_ferias'), data.get('fim_ferias')): - raise forms.ValidationError( - u"""A data de início deve ser menor que a data final. Verifique - novamente""") + raise forms.ValidationError(u"""A data de início deve ser menor + que a data final. Verifique novamente""") return data @@ -26,9 +26,8 @@ class LicencaForm(forms.ModelForm): def clean(self): data = self.cleaned_data if valida_data(data.get('inicio_licenca'), data.get('fim_licenca')): - raise forms.ValidationError( - u"""A data de início deve ser menor que a data final. Verifique - novamente""") + raise forms.ValidationError(u"""A data de início deve ser menor + que a data final. Verifique novamente""") return data @@ -39,7 +38,22 @@ class FuncaoForm(forms.ModelForm): def clean(self): data = self.cleaned_data if valida_data(data.get('inicio_funcao'), data.get('fim_funcao')): - raise forms.ValidationError( - u"""A data de início deve ser menor que a data final. Verifique - novamente""") + raise forms.ValidationError(u"""A data de início deve ser menor + que a data final. Verifique + novamente""") + + # Verifica na função anterior, se o seu período é igual + # ou está entre o período da função atual. + servidor = Servidor.objects.get(nome_completo=data.get('servidor')) + if len(servidor.funcao_set.all()) > 1: + funcao_anterior = servidor.funcao_set.all()[1] + else: + funcao_anterior = servidor.funcao_set.all()[0] + + if valida_periodo_data(funcao_anterior.inicio_funcao, + funcao_anterior.fim_funcao, data.get('inicio_funcao'), + data.get('fim_funcao')): + raise forms.ValidationError(u"""Você não pode exercer + uma função no mesmo período que a anterior, como também, + não pode ser entre o período da mesma.""") return data diff --git a/sigi/apps/utils/validators.py b/sigi/apps/utils/validators.py index e645609..fcfc8f7 100644 --- a/sigi/apps/utils/validators.py +++ b/sigi/apps/utils/validators.py @@ -1,5 +1,6 @@ # -*- coding: utf8 -*- + def valida_data(data_inicio, data_final): """Função responsável por validar se o intervalo das datas estão erradas, ou seja, se a data de início está @@ -13,6 +14,7 @@ def valida_data(data_inicio, data_final): else: return False + def valida_periodo_data(di01, df01, di02, df02): """Função responsável por validar dois períodos de datas. Isso é usado para verificar se determinado servidor exerceu @@ -34,13 +36,7 @@ def valida_periodo_data(di01, df01, di02, df02): # Verificando a primeira situação if di01 == di02 and df01 == df02: return True - else: - return False - - # Verificando a segunda situação - if di01 >= di02 or df01 <= df02: + elif ((di01 >= di02) or (di02 <= df01)) and df01 <= df02: return True else: return False - - diff --git a/sigi/templates/base_mobile.html b/sigi/templates/base_mobile.html index 16968dc..b5afad4 100644 --- a/sigi/templates/base_mobile.html +++ b/sigi/templates/base_mobile.html @@ -33,8 +33,7 @@ {% block rodape %} {% endblock rodape %} diff --git a/sigi/templates/diagnosticos/diagnosticos_categorias_list.html b/sigi/templates/diagnosticos/diagnosticos_categorias_list.html index b998953..14d9507 100644 --- a/sigi/templates/diagnosticos/diagnosticos_categorias_list.html +++ b/sigi/templates/diagnosticos/diagnosticos_categorias_list.html @@ -19,7 +19,7 @@
  • {% endif %} -

    01. Identificação da Casa Legislativa

    +

    01. Identificação da Casa Legislativa

  • {% if ultima_categoria == 2 %}