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 %}