Browse Source

Refatora parlamentares

pull/269/head
Edward Ribeiro 9 years ago
parent
commit
e977250157
  1. 126
      parlamentares/forms.py
  2. 642
      parlamentares/views.py

126
parlamentares/forms.py

@ -266,6 +266,66 @@ class FiliacaoForm(ModelForm):
'data', 'data',
'data_desfiliacao'] '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): def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(
@ -293,3 +353,69 @@ class FiliacaoEditForm(FiliacaoForm):
HTML('&nbsp;'), HTML('&nbsp;'),
Submit('excluir', 'Excluir', Submit('excluir', 'Excluir',
css_class='btn btn-primary')]) 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)
#

642
parlamentares/views.py

@ -1,9 +1,10 @@
import os import os
from django.contrib import messages from django.contrib import messages
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView from django.views.generic import CreateView, FormView, UpdateView
from django.http import HttpResponseRedirect
from crud.base import Crud from crud.base import Crud
@ -105,171 +106,115 @@ class ParlamentaresView(FormView):
'parlamentares': parlamentares}) 'parlamentares': parlamentares})
class ParlamentaresCadastroView(FormView): class ParlamentaresCadastroView(CreateView):
template_name = "parlamentares/parlamentares_cadastro.html" template_name = "parlamentares/parlamentares_cadastro.html"
form_class = ParlamentaresForm
def get_success_url(self): model = Parlamentar
return reverse('parlamentares') success_url = reverse_lazy('parlamentares')
def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs):
form = ParlamentaresForm() context = super(ParlamentaresCadastroView, self).get_context_data(**kwargs)
legislatura_id = self.kwargs['pk']
pk = kwargs['pk'] # precisa de legislatura id?
return self.render_to_response({'form': form, 'legislatura_id': pk}) context.update({'legislatura_id': legislatura_id})
return context
def post(self, request, *args, **kwargs):
form = ParlamentaresForm(request.POST) def form_valid(self, form):
form.save()
pk = kwargs['pk'] mandato = Mandato()
mandato.parlamentar = form.instance
if form.is_valid(): mandato.legislatura = Legislatura.objects.get(id=self.kwargs['pk'])
parlamentar = form.save(commit=False) mandato.save()
if 'fotografia' in request.FILES: return HttpResponseRedirect(self.get_success_url())
parlamentar.fotografia = request.FILES['fotografia']
parlamentar.biografia = form.data['biografia']
parlamentar.save() class ParlamentaresEditarView(UpdateView):
mandato = Mandato()
mandato.parlamentar = parlamentar
mandato.legislatura = Legislatura.objects.get(id=pk)
mandato.save()
return self.form_valid(form)
else:
return self.render_to_response(
{'form': form, 'legislatura_id': pk})
class ParlamentaresEditarView(FormView):
template_name = "parlamentares/parlamentares_cadastro.html" template_name = "parlamentares/parlamentares_cadastro.html"
form_class = ParlamentaresEditForm
model = Parlamentar
success_url = reverse_lazy('parlamentares')
def form_valid(self, form):
parlamentar = form.instance
if 'salvar' in self.request.POST:
form.save()
elif 'excluir' in self.request.POST:
Mandato.objects.get(parlamentar=parlamentar).delete()
parlamentar.delete()
elif "remover-foto" in self.request.POST:
try:
os.unlink(parlamentar.fotografia.path)
except OSError:
pass # Should log this error!!!!!
parlamentar.fotografia = None
parlamentar.save()
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
return reverse('parlamentares')
def get(self, request, *args, **kwargs):
pk = kwargs['pk']
parlamentar = Parlamentar.objects.get(pk=pk)
form = ParlamentaresEditForm(instance=parlamentar)
return self.render_to_response(
{'form': form, 'object': parlamentar})
def post(self, request, *args, **kwargs):
pk = kwargs['pk']
parlamentar = Parlamentar.objects.get(pk=pk)
form = ParlamentaresEditForm(request.POST, instance=parlamentar)
if form.is_valid():
if 'salvar' in request.POST:
parlamentar = form.save(commit=False)
if 'fotografia' in request.FILES:
parlamentar.fotografia = request.FILES['fotografia']
parlamentar.biografia = form.data['biografia']
parlamentar.save()
elif 'excluir' in request.POST:
Mandato.objects.get(parlamentar=parlamentar).delete()
parlamentar.delete()
elif "remover" in request.POST:
try:
os.unlink(parlamentar.fotografia.path)
except OSError:
pass # Should log this error!!!!!
parlamentar = form.save(commit=False)
parlamentar.fotografia = None
parlamentar.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form})
class ParlamentaresDependentesView(FormView):
class ParlamentaresDependentesView(CreateView):
template_name = "parlamentares/parlamentares_dependentes.html" template_name = "parlamentares/parlamentares_dependentes.html"
form_class = DependenteForm
model = Dependente
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('parlamentares_dependentes', kwargs={'pk': pk}) return reverse('parlamentares_dependentes', kwargs={'pk': pk})
def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs):
pid = kwargs['pk'] context = super(ParlamentaresDependentesView, self).\
parlamentar = Parlamentar.objects.get(id=pid) get_context_data(**kwargs)
pk = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(pk=pk)
dependentes = Dependente.objects.filter( dependentes = Dependente.objects.filter(
parlamentar=parlamentar).order_by('nome', 'tipo') parlamentar=parlamentar).order_by('nome', 'tipo')
context.update({'object': parlamentar,
form = DependenteForm() 'dependentes': dependentes,
# precisa de legislatura_id???
return self.render_to_response( 'legislatura_id':
{'object': parlamentar, parlamentar.mandato_set.last().legislatura.id})
'dependentes': dependentes, return context
'form': form,
'legislatura_id': parlamentar.mandato_set.last().legislatura.id}) def form_valid(self, form):
parlamentar_id = self.kwargs['pk']
def post(self, request, *args, **kwargs): dependente = form.save(commit=False)
form = DependenteForm(request.POST) parlamentar = Parlamentar.objects.get(id=parlamentar_id)
dependente.parlamentar = parlamentar
if form.is_valid(): dependente.save()
dependente = form.save(commit=False) return HttpResponseRedirect(self.get_success_url())
pid = kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid) class ParlamentaresDependentesEditView(UpdateView):
dependente.parlamentar = parlamentar
dependente.save()
return self.form_valid(form)
else:
pid = kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
dependentes = Dependente.objects.filter(
parlamentar=parlamentar).order_by('nome', 'tipo')
return self.render_to_response(
{'object': parlamentar,
'dependentes': dependentes,
'form': form,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura.id})
class ParlamentaresDependentesEditView(FormView):
template_name = "parlamentares/parlamentares_dependentes_edit.html" template_name = "parlamentares/parlamentares_dependentes_edit.html"
form_class = DependenteEditForm
model = Dependente
pk_url_kwarg = 'dk'
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('parlamentares_dependentes', kwargs={'pk': pk}) return reverse('parlamentares_dependentes', kwargs={'pk': pk})
def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs):
dependente = Dependente.objects.get(id=kwargs['dk']) context = super(ParlamentaresDependentesEditView, self).\
parlamentar = Parlamentar.objects.get(id=kwargs['pk']) get_context_data(**kwargs)
form = DependenteEditForm(instance=dependente) parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
return self.render_to_response( context.update({
{'form': form, 'object': parlamentar,
'object': parlamentar, 'legislatura_id': parlamentar.mandato_set.last(
'legislatura_id': dependente.parlamentar.mandato_set.last( ).legislatura_id})
).legislatura_id}) return context
def post(self, request, *args, **kwargs): def form_valid(self, form):
dependente = Dependente.objects.get(id=kwargs['dk']) if 'salvar' in self.request.POST:
form = DependenteEditForm(request.POST, instance=dependente) form.save()
parlamentar = Parlamentar.objects.get(id=kwargs['pk']) elif 'excluir' in self.request.POST:
dependente = form.instance
if form.is_valid(): dependente.delete()
return HttpResponseRedirect(self.get_success_url())
if 'salvar' in request.POST:
dependente.save()
elif 'excluir' in request.POST:
dependente.delete()
return self.form_valid(form)
else:
return self.render_to_response(
{'form': form,
'object': parlamentar,
'legislatura_id': dependente.parlamentar.mandato_set.last(
).legislatura_id})
class MesaDiretoraView(FormView): class MesaDiretoraView(FormView):
template_name = "mesa_diretora/mesa_diretora.html" template_name = "mesa_diretora/mesa_diretora.html"
success_url = reverse_lazy('mesa_diretora')
def get_success_url(self):
return reverse('mesa_diretora')
# Essa função avisa quando se pode compor uma Mesa Legislativa) # Essa função avisa quando se pode compor uma Mesa Legislativa)
def validation(self, request): def validation(self, request):
@ -335,6 +280,7 @@ class MesaDiretoraView(FormView):
composicao.save() composicao.save()
return self.form_valid(form=None) return self.form_valid(form=None)
elif 'Excluir' in request.POST: elif 'Excluir' in request.POST:
if (not Legislatura.objects.all() or if (not Legislatura.objects.all() or
@ -380,320 +326,202 @@ class MesaDiretoraView(FormView):
}) })
class FiliacaoView(FormView): class FiliacaoView(CreateView):
template_name = "parlamentares/parlamentares_filiacao.html" template_name = "parlamentares/parlamentares_filiacao.html"
form_class = FiliacaoForm
model = Filiacao
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('parlamentares_filiacao', kwargs={'pk': pk}) return reverse('parlamentares_filiacao', kwargs={'pk': pk})
def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs):
pid = kwargs['pk'] context = super(FiliacaoView, self).get_context_data(**kwargs)
pid = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid) parlamentar = Parlamentar.objects.get(id=pid)
filiacoes = Filiacao.objects.filter(
parlamentar=parlamentar)
form = FiliacaoForm()
return self.render_to_response(
{'object': parlamentar,
'filiacoes': filiacoes,
'form': form,
'legislatura_id': parlamentar.mandato_set.last().legislatura.id})
# Função usada para todos os caso de erro na filiação
def error_message(self, parlamentar, form, mensagem, request):
filiacoes = Filiacao.objects.filter(parlamentar=parlamentar) filiacoes = Filiacao.objects.filter(parlamentar=parlamentar)
messages.add_message(request, messages.INFO, mensagem) context.update(
return self.render_to_response(
{'object': parlamentar, {'object': parlamentar,
'filiacoes': filiacoes, 'filiacoes': filiacoes,
'form': form, # precisa????
'legislatura_id': parlamentar.mandato_set.last( 'legislatura_id': parlamentar.mandato_set.last().legislatura.id})
).legislatura.id}) return context
def post(self, request, *args, **kwargs): def validate(self, form, parlamentar, filiacao):
form = FiliacaoForm(request.POST) from django.core.exceptions import ValidationError
if form.is_valid(): data_filiacao = form.cleaned_data['data']
data_desfiliacao = form.cleaned_data['data_desfiliacao']
data_filiacao = form.cleaned_data['data'] # Dá erro caso a data de desfiliação seja anterior a de filiação
data_desfiliacao = form.cleaned_data['data_desfiliacao'] 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
filiacao = form.save(commit=False)
pid = kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
candidato_filiado = Filiacao.objects.filter(
parlamentar=parlamentar)
candidato_nao_desfiliou = Filiacao.objects.filter(
parlamentar=parlamentar,
data_desfiliacao=None)
# Vê se o candidato já se filiou alguma vez a algum partido
if not candidato_filiado:
filiacao = form.save(commit=False)
filiacao.parlamentar = parlamentar
filiacao.save()
return self.form_valid(form)
else:
# Dá erro caso não tenha se desfiliado do anterior
if candidato_nao_desfiliou:
mensagem = _("Você não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior")
return self.error_message(
parlamentar, form, mensagem, request)
# Dá erro caso a data de desfiliação seja anterior a de
# filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
mensagem = _("A data de filiação não pode ser \
anterior à data de desfiliação")
return self.error_message(
parlamentar, form, mensagem, request)
# Esse bloco garante que não haverá intersecção entre os
# períodos de filiação
todas_filiacoes = candidato_filiado
for i in range(len(todas_filiacoes)):
data_init = todas_filiacoes[i].data
data_fim = todas_filiacoes[i].data_desfiliacao
if data_filiacao >= data_init and data_filiacao < data_fim:
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(
parlamentar, form, mensagem, request)
if (data_desfiliacao and
data_desfiliacao < data_fim and
data_desfiliacao > data_init):
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(
parlamentar, form, mensagem, request)
if (data_desfiliacao and
data_filiacao <= data_init and
data_desfiliacao >= data_fim):
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \
de outro período de filiação")
return self.error_message(
parlamentar, form, mensagem, request)
# Salva a nova filiação caso tudo esteja correto
else:
filiacao = form.save(commit=False)
filiacao.parlamentar = parlamentar
filiacao.save()
return self.form_valid(form)
else:
pid = kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
mensagem = ""
return self.error_message(
parlamentar, form, mensagem, request)
# 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()
class FiliacaoEditView(FormView): # # Nenhuma filiacao
template_name = "parlamentares/parlamentares_filiacao_edit.html" # if not todas_filiacoes:
# return None
def get_success_url(self): for f in todas_filiacoes:
pk = self.kwargs['pk'] if not f.data_desfiliacao:
return reverse('parlamentares_filiacao', kwargs={'pk': pk}) 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
def get(self, request, *args, **kwargs): error_msg = None
filiacao = Filiacao.objects.get(id=kwargs['dk']) for filiacoes in todas_filiacoes:
parlamentar = Parlamentar.objects.get(id=kwargs['pk']) if filiacoes.id != id_filiacao_atual:
form = FiliacaoEditForm(instance=filiacao)
return self.render_to_response(
{'form': form,
'object': parlamentar,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id})
def error_message(self, parlamentar, form, mensagem, request): data_init = filiacoes.data
messages.add_message(request, messages.INFO, mensagem) data_fim = filiacoes.data_desfiliacao
return self.render_to_response(
{'form': form,
'object': parlamentar,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id})
def post(self, request, *args, **kwargs): if data_init <= data_filiacao < data_fim:
filiacao = Filiacao.objects.get(id=kwargs['dk'])
form = FiliacaoEditForm(request.POST, instance=filiacao)
parlamentar = Parlamentar.objects.get(id=kwargs['pk'])
if form.is_valid():
data_filiacao = form.cleaned_data['data']
data_desfiliacao = form.cleaned_data['data_desfiliacao']
filiacao = form.save(commit=False) error_msg = _("A data de filiação e \
pid = kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
candidato_filiado = Filiacao.objects.filter(
parlamentar=parlamentar)
if 'excluir' in request.POST:
filiacao.delete()
return self.form_valid(form)
# Vê se o candidato já se filiou alguma vez a algum partido
if not candidato_filiado:
filiacao = form.save(commit=False)
filiacao.parlamentar = parlamentar
filiacao.save()
return self.form_valid(form)
else:
# Dá erro caso a data de desfiliação seja anterior a de
# filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
mensagem = _("A data de filiação não pode \
anterior à data de desfiliação")
return self.error_message(
parlamentar, form, mensagem, request)
# Esse bloco garante que não haverá intersecção entre os
# períodos de filiação
todas_filiacoes = candidato_filiado
id_filiacao_atual = int(kwargs['dk'])
for i in range(len(todas_filiacoes)):
if todas_filiacoes[i].id != id_filiacao_atual:
data_init = todas_filiacoes[i].data
data_fim = todas_filiacoes[i].data_desfiliacao
if (data_filiacao >= data_init and
data_filiacao < data_fim):
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação") de outro período de filiação")
return self.error_message(parlamentar, break
form,
mensagem,
request)
if (data_desfiliacao and if (data_desfiliacao and
data_desfiliacao < data_fim and data_init < data_desfiliacao < data_fim):
data_desfiliacao > data_init):
mensagem = _("A data de filiação e \ error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação") de outro período de filiação")
return self.error_message(parlamentar, break
form,
mensagem, if (data_desfiliacao and
request) data_filiacao <= data_init and
if (data_desfiliacao and data_desfiliacao >= data_fim):
data_filiacao <= data_init and
data_desfiliacao >= data_fim): error_msg = _("A data de filiação e \
mensagem = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação") de outro período de filiação")
return self.error_message(parlamentar, break
form,
mensagem,
request)
if 'salvar' in request.POST:
filiacao.save()
elif 'excluir' in request.POST:
filiacao.delete()
return self.form_valid(form)
if error_msg:
messages.add_message(request, messages.ERROR, error_msg)
return False
else: else:
return self.render_to_response( return True
{'form': form,
'object': parlamentar,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id}) 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):
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
model = Filiacao
pk_url_kwarg = 'dk'
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('parlamentares_filiacao', kwargs={'pk': pk})
class MandatoView(FormView): def get_context_data(self, **kwargs):
context = super(FiliacaoEditView, self).get_context_data(**kwargs)
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
def form_valid(self, form):
filiacao = form.save(commit=False)
if 'excluir' in self.request.POST:
filiacao.delete()
elif 'salvar' in self.request.POST:
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
filiacao.parlamentar = parlamentar
filiacao.save()
return HttpResponseRedirect(self.get_success_url())
class MandatoView(CreateView):
template_name = "parlamentares/parlamentares_mandato.html" template_name = "parlamentares/parlamentares_mandato.html"
model = Mandato
form_class = MandatoForm
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('parlamentares_mandato', kwargs={'pk': pk}) return reverse('parlamentares_mandato', kwargs={'pk': pk})
def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs):
pid = kwargs['pk'] context = super(MandatoView, self).get_context_data(**kwargs)
pid = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid) parlamentar = Parlamentar.objects.get(id=pid)
mandatos = Mandato.objects.filter( mandatos = Mandato.objects.filter(
parlamentar=parlamentar) parlamentar=parlamentar)
context.update(
form = MandatoForm()
return self.render_to_response(
{'object': parlamentar, {'object': parlamentar,
'mandatos': mandatos, 'mandatos': mandatos,
'form': form, # precisa de legislatura ?
'legislatura_id': parlamentar.mandato_set.last().legislatura.id}) #'legislatura_id': parlamentar.mandato_set.last().legislatura.id
}
def post(self, request, *args, **kwargs): )
form = MandatoForm(request.POST) return context
if form.is_valid(): def form_valid(self, form):
mandato = form.save(commit=False) pid = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
pid = kwargs['pk'] mandato = form.save(commit=False)
parlamentar = Parlamentar.objects.get(id=pid) mandato.parlamentar = parlamentar
mandato.parlamentar = parlamentar mandato.save()
return HttpResponseRedirect(self.get_success_url())
mandato.save()
return self.form_valid(form)
else:
pid = kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
mandatos = Mandato.objects.filter(
parlamentar=parlamentar)
return self.render_to_response(
{'object': parlamentar,
'mandatos': mandatos,
'form': form,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura.id})
class MandatoEditView(FormView): class MandatoEditView(UpdateView):
template_name = "parlamentares/parlamentares_mandato_edit.html" template_name = "parlamentares/parlamentares_mandato_edit.html"
model = Mandato
form_class = MandatoEditForm
pk_url_kwarg = 'dk'
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('parlamentares_mandato', kwargs={'pk': pk}) return reverse('parlamentares_mandato', kwargs={'pk': pk})
def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs):
mandato = Mandato.objects.get(id=kwargs['dk']) context = super(MandatoEditView, self).get_context_data(**kwargs)
parlamentar = Parlamentar.objects.get(id=kwargs['pk']) mandato = Mandato.objects.get(id=self.kwargs['dk'])
form = MandatoEditForm(instance=mandato) parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
return self.render_to_response( context.update(
{'form': form, {'object': parlamentar,
'object': parlamentar, # precisa de legislatura_id ???
'legislatura_id': parlamentar.mandato_set.last( 'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id}) ).legislatura_id})
return context
def post(self, request, *args, **kwargs): def form_valid(self, form):
mandato = Mandato.objects.get(id=kwargs['dk']) form = self.get_form()
form = MandatoEditForm(request.POST, instance=mandato) parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
parlamentar = Parlamentar.objects.get(id=kwargs['pk']) if 'salvar' in self.request.POST:
mandato = form.save(commit=False)
if form.is_valid(): mandato.parlamentar = parlamentar
if 'salvar' in request.POST: mandato.save()
mandato.save() elif 'excluir' in self.request.POST:
elif 'excluir' in request.POST: form.instance.delete()
mandato.delete()
return self.form_valid(form) return HttpResponseRedirect(self.get_success_url())
else:
return self.render_to_response(
{'form': form,
'object': parlamentar,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id})

Loading…
Cancel
Save