Browse Source

Implementado um validador, para verificar se a data de inicio é maior ou igual à data final. Com isso foi criado três forms dos modelos Férias, Função e Licença para que use o método clean() para que use essa validação.

diagnosticos
Gilson Filho 13 years ago
parent
commit
a6c81b4182
  1. 6
      sigi/apps/servidores/admin.py
  2. 45
      sigi/apps/servidores/forms.py
  3. 15
      sigi/apps/utils/validators.py

6
sigi/apps/servidores/admin.py

@ -1,17 +1,18 @@
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.contrib.auth.forms import UserCreationForm
from django.contrib.contenttypes import generic
from sigi.apps.utils.admin_widgets import AdminImageWidget
from sigi.apps.servidores.models import Servidor, Funcao, Licenca, Ferias
from sigi.apps.contatos.models import Endereco, Telefone
from sigi.apps.servidores.forms import FeriasForm, LicencaForm, FuncaoForm
class FuncaoInline(admin.TabularInline):
model = Funcao
extra = 1
class FuncaoAdmin(admin.ModelAdmin):
form = FuncaoForm
list_display = ('servidor', 'funcao', 'cargo','inicio_funcao', 'fim_funcao')
list_filter = ('inicio_funcao', 'fim_funcao')
search_fields = ('funcao', 'cargo', 'descricao',
@ -24,6 +25,7 @@ class FeriasInline(admin.TabularInline):
extra = 1
class FeriasAdmin(admin.ModelAdmin):
form = FeriasForm
list_display = ('servidor', 'inicio_ferias', 'fim_ferias')
list_filter = ('servidor', 'inicio_ferias', 'fim_ferias')
search_fields = ('obs',
@ -31,11 +33,13 @@ class FeriasAdmin(admin.ModelAdmin):
'servidor__user__email', 'servidor__user__first_name',
'servidor__user__last_name', 'servidor__user__username')
class LicencaInline(admin.TabularInline):
model = Licenca
extra = 1
class LicencaAdmin(admin.ModelAdmin):
form = LicencaForm
list_display = ('servidor', 'inicio_licenca', 'fim_licenca')
list_filter = ('servidor', 'inicio_licenca', 'fim_licenca')
search_fields = ('obs',

45
sigi/apps/servidores/forms.py

@ -0,0 +1,45 @@
# -*- coding: utf8 -*-
from django import forms
from sigi.apps.utils.validators import valida_data
from sigi.apps.servidores.models import Ferias, Licenca, Funcao
class FeriasForm(forms.ModelForm):
class Meta:
model = Ferias
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""")
return data
class LicencaForm(forms.ModelForm):
class Meta:
model = Licenca
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""")
return data
class FuncaoForm(forms.ModelForm):
class Meta:
model = Funcao
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""")
return data

15
sigi/apps/utils/validators.py

@ -0,0 +1,15 @@
# -*- 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á
maior ou igual a data final.
Caso seja maior ou igual retornará ``True``, caso contrário
retornará ``False``.
"""
if data_inicio >= data_final:
return True
else:
return False
Loading…
Cancel
Save