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