Browse Source

Refatora parlamentar

pull/269/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
committed by Edward Ribeiro
parent
commit
8140633b30
  1. 126
      parlamentares/forms.py
  2. 163
      parlamentares/views.py

126
parlamentares/forms.py

@ -266,66 +266,6 @@ class FiliacaoForm(ModelForm):
'data',
'data_desfiliacao']
# def clean(self):
# cleaned_data = super(FiliacaoForm, self).clean()
#
# data_filiacao = cleaned_data['data']
# data_desfiliacao = cleaned_data['data_desfiliacao']
#
# # Dá erro caso a data de desfiliação seja anterior a de filiação
# if data_desfiliacao and data_desfiliacao < data_filiacao:
# error_msg = _("A data de filiação não pode anterior \
# à data de desfiliação")
# raise forms.ValidationError(error_msg)
# return cleaned_data
#
# filiacao = self.instance
# parlamentar = filiacao.parlamentar
#
# # Esse bloco garante que não haverá intersecção entre os
# # períodos de filiação
# id_filiacao_atual = filiacao.pk
# todas_filiacoes = parlamentar.filiacao_set.all()
#
# # Nenhuma filiacao
# if not todas_filiacoes:
# return cleaned_data
#
# error_msg = None
# for filiacoes in todas_filiacoes:
# if filiacoes.id != id_filiacao_atual:
#
# data_init = filiacoes.data
# data_fim = filiacoes.data_desfiliacao
#
# if data_init <= data_filiacao < data_fim:
#
# error_msg = _("A data de filiação e \
# desfiliação não podem estar no intervalo \
# de outro período de filiação")
# break
#
# if (data_desfiliacao and
# data_init < data_desfiliacao < data_fim):
#
# error_msg = _("A data de filiação e \
# desfiliação não podem estar no intervalo \
# de outro período de filiação")
# break
#
# if (data_desfiliacao and
# data_filiacao <= data_init and
# data_desfiliacao >= data_fim):
#
# error_msg = _("A data de filiação e \
# desfiliação não podem estar no intervalo \
# de outro período de filiação")
# break
#
# if error_msg:
# raise forms.ValidationError(error_msg)
#
def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
@ -353,69 +293,3 @@ class FiliacaoEditForm(FiliacaoForm):
HTML('&nbsp;'),
Submit('excluir', 'Excluir',
css_class='btn btn-primary')])
# def clean(self):
# cleaned_data = super(FiliacaoEditForm, self).clean()
#
# data_filiacao = cleaned_data['data']
# data_desfiliacao = cleaned_data['data_desfiliacao']
#
# # Dá erro caso a data de desfiliação seja anterior a de filiação
# if data_desfiliacao and data_desfiliacao < data_filiacao:
# error_msg = _("A data de filiação não pode anterior \
# à data de desfiliação")
# raise forms.ValidationError(error_msg)
#
# return cleaned_data
#
# filiacao = self.instance
# parlamentar = Parlamentar.objects.get(pk=self.kwargs['pk'])
#
# # Esse bloco garante que não haverá intersecção entre os
# # períodos de filiação
# id_filiacao_atual = filiacao.pk
# todas_filiacoes = parlamentar.filiacao_set.all()
#
# # ainda filiado
# for f in todas_filiacoes:
# if not f.data_desfiliacao:
# error_msg = _("O parlamentar não pode se filiar a algum partido \
# sem antes se desfiliar do partido anterior")
# raise forms.ValidationError(error_msg)
#
# # Esse bloco garante que não haverá intersecção entre os
# # períodos de filiação
# error_msg = None
# for filiacoes in todas_filiacoes:
# if filiacoes.id != id_filiacao_atual:
#
# data_init = filiacoes.data
# data_fim = filiacoes.data_desfiliacao
#
# if data_init <= data_filiacao < data_fim:
#
# error_msg = _("A data de filiação e \
# desfiliação não podem estar no intervalo \
# de outro período de filiação")
# break
#
# if (data_desfiliacao and
# data_init < data_desfiliacao < data_fim):
#
# error_msg = _("A data de filiação e \
# desfiliação não podem estar no intervalo \
# de outro período de filiação")
# break
#
# if (data_desfiliacao and
# data_filiacao <= data_init and
# data_desfiliacao >= data_fim):
#
# error_msg = _("A data de filiação e \
# desfiliação não podem estar no intervalo \
# de outro período de filiação")
# break
#
# if error_msg:
# raise forms.ValidationError(error_msg)
#

163
parlamentares/views.py

@ -2,9 +2,10 @@ import os
from django.contrib import messages
from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponseRedirect
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView, FormView, UpdateView
from django.http import HttpResponseRedirect
from crud.base import Crud
@ -32,6 +33,67 @@ TipoAfastamentoCrud = Crud.build(TipoAfastamento, 'tipo_afastamento')
TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar')
def validate(form, parlamentar, filiacao, request):
data_filiacao = form.cleaned_data['data']
data_desfiliacao = form.cleaned_data['data_desfiliacao']
# Dá erro caso a data de desfiliação seja anterior a de filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
error_msg = _("A data de filiação não pode anterior \
à data de desfiliação")
messages.add_message(request, messages.ERROR, error_msg)
return False
# Esse bloco garante que não haverá intersecção entre os
# períodos de filiação
id_filiacao_atual = filiacao.pk
todas_filiacoes = parlamentar.filiacao_set.all()
for f in todas_filiacoes:
if not f.data_desfiliacao:
error_msg = _("O parlamentar não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior")
messages.add_message(request, messages.ERROR, error_msg)
return False
error_msg = None
for filiacoes in todas_filiacoes:
if filiacoes.id != id_filiacao_atual:
data_init = filiacoes.data
data_fim = filiacoes.data_desfiliacao
if data_init <= data_filiacao < data_fim:
error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if (data_desfiliacao and
data_init < data_desfiliacao < data_fim):
error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if (data_desfiliacao and
data_filiacao <= data_init and
data_desfiliacao >= data_fim):
error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if error_msg:
messages.add_message(request, messages.ERROR, error_msg)
return False
else:
return True
class ParlamentaresView(FormView):
template_name = "parlamentares/parlamentares_list.html"
@ -110,12 +172,14 @@ class ParlamentaresCadastroView(CreateView):
template_name = "parlamentares/parlamentares_cadastro.html"
form_class = ParlamentaresForm
model = Parlamentar
success_url = reverse_lazy('parlamentares')
def get_success_url(self):
return reverse('parlamentares')
def get_context_data(self, **kwargs):
context = super(ParlamentaresCadastroView, self).get_context_data(**kwargs)
context = super(ParlamentaresCadastroView, self).get_context_data(
**kwargs)
legislatura_id = self.kwargs['pk']
# precisa de legislatura id?
context.update({'legislatura_id': legislatura_id})
return context
@ -125,7 +189,7 @@ class ParlamentaresCadastroView(CreateView):
mandato.parlamentar = form.instance
mandato.legislatura = Legislatura.objects.get(id=self.kwargs['pk'])
mandato.save()
return HttpResponseRedirect(self.get_success_url())
return redirect(self.get_success_url())
class ParlamentaresEditarView(UpdateView):
@ -141,7 +205,7 @@ class ParlamentaresEditarView(UpdateView):
elif 'excluir' in self.request.POST:
Mandato.objects.get(parlamentar=parlamentar).delete()
parlamentar.delete()
elif "remover-foto" in self.request.POST:
elif "remover" in self.request.POST:
try:
os.unlink(parlamentar.fotografia.path)
except OSError:
@ -343,93 +407,22 @@ class FiliacaoView(CreateView):
context.update(
{'object': parlamentar,
'filiacoes': filiacoes,
# precisa????
'legislatura_id': parlamentar.mandato_set.last().legislatura.id})
return context
def validate(self, form, parlamentar, filiacao):
from django.core.exceptions import ValidationError
data_filiacao = form.cleaned_data['data']
data_desfiliacao = form.cleaned_data['data_desfiliacao']
# Dá erro caso a data de desfiliação seja anterior a de filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
error_msg = _("A data de filiação não pode anterior \
à data de desfiliação")
messages.add_message(request, messages.ERROR, error_msg)
return False
# Esse bloco garante que não haverá intersecção entre os
# períodos de filiação
id_filiacao_atual = filiacao.pk
todas_filiacoes = parlamentar.filiacao_set.all()
# # Nenhuma filiacao
# if not todas_filiacoes:
# return None
for f in todas_filiacoes:
if not f.data_desfiliacao:
error_msg = _("O parlamentar não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior")
messages.add_message(request, messages.ERROR, error_msg)
return False
error_msg = None
for filiacoes in todas_filiacoes:
if filiacoes.id != id_filiacao_atual:
data_init = filiacoes.data
data_fim = filiacoes.data_desfiliacao
if data_init <= data_filiacao < data_fim:
error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if (data_desfiliacao and
data_init < data_desfiliacao < data_fim):
error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if (data_desfiliacao and
data_filiacao <= data_init and
data_desfiliacao >= data_fim):
error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if error_msg:
messages.add_message(request, messages.ERROR, error_msg)
return False
else:
return True
def form_valid(self, form):
if 'salvar' in self.request.POST:
filiacao = form.save(commit=False)
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
filiacao.parlamentar = parlamentar
if not self.validate(form, parlamentar, filiacao):
if not validate(form, parlamentar, filiacao, self.request):
return self.form_invalid(form)
filiacao.save()
return HttpResponseRedirect(self.get_success_url())
class FiliacaoEditView(UpdateView):
template_name = "parlamentares/parlamentares_filiacao_edit.html"
form_class = FiliacaoEditForm
@ -445,7 +438,6 @@ class FiliacaoEditView(UpdateView):
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
context.update(
{'object': parlamentar,
# precisa de legislatura????
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id})
return context
@ -457,9 +449,14 @@ class FiliacaoEditView(UpdateView):
elif 'salvar' in self.request.POST:
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
filiacao.parlamentar = parlamentar
if not validate(form, parlamentar, filiacao, self.request):
return self.form_invalid(form)
filiacao.save()
return HttpResponseRedirect(self.get_success_url())
class MandatoView(CreateView):
template_name = "parlamentares/parlamentares_mandato.html"
model = Mandato
@ -478,8 +475,7 @@ class MandatoView(CreateView):
context.update(
{'object': parlamentar,
'mandatos': mandatos,
# precisa de legislatura ?
#'legislatura_id': parlamentar.mandato_set.last().legislatura.id
'legislatura_id': parlamentar.mandato_set.last().legislatura.id
}
)
return context
@ -509,9 +505,8 @@ class MandatoEditView(UpdateView):
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
context.update(
{'object': parlamentar,
# precisa de legislatura_id ???
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id})
).legislatura_id})
return context
def form_valid(self, form):

Loading…
Cancel
Save