diff --git a/parlamentares/views.py b/parlamentares/views.py index fa504c4e0..de0a40fa9 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -11,6 +11,7 @@ from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ from django.views.generic.edit import FormMixin from vanilla import GenericView +from django.core.exceptions import ObjectDoesNotExist import sapl from sapl.crud import build_crud @@ -785,13 +786,40 @@ class FiliacaoView(FormMixin, GenericView): if form.is_valid(): filiacao = form.save(commit=False) - pid = kwargs['pk'] parlamentar = Parlamentar.objects.get(id=pid) - filiacao.parlamentar = parlamentar - filiacao.save() - return self.form_valid(form) + candidato_filiado = Filiacao.objects.filter( + parlamentar=parlamentar) + + candidato_desfiliou = Filiacao.objects.filter( + parlamentar=parlamentar, + data_desfiliacao=None) + + if not candidato_filiado: + filiacao = form.save(commit=False) + filiacao.parlamentar = parlamentar + filiacao.save() + return self.form_valid(form) + else: + + if candidato_desfiliou: + filiacoes = Filiacao.objects.filter( + parlamentar=parlamentar) + return self.render_to_response( + {'parlamentar': parlamentar, + 'filiacoes': filiacoes, + 'form': form, + 'legislatura_id': parlamentar.mandato_set.last( + ).legislatura.id, + 'mensagem_erro': "Você não pode se filiar a algum partido\ + sem antes se desfiliar do partido anterior"}) + + 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) diff --git a/templates/parlamentares/parlamentares_filiacao.html b/templates/parlamentares/parlamentares_filiacao.html index 1bc5660e5..d11283a2c 100644 --- a/templates/parlamentares/parlamentares_filiacao.html +++ b/templates/parlamentares/parlamentares_filiacao.html @@ -37,6 +37,7 @@ +{% if mensagem_erro %}
{{ mensagem_erro }}
{% endif %} {% crispy form %} {% endblock detail_content %}