From d7126e09b3905ea5152088e9211d98af8e99e8f1 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 25 Apr 2016 10:50:41 -0300 Subject: [PATCH 1/6] =?UTF-8?q?Filia=C3=A7=C3=A3o=20sem=20valida=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parlamentares/forms.py | 95 ++++++++++++++----- parlamentares/urls.py | 12 +-- parlamentares/views.py | 94 +++--------------- .../parlamentares/parlamentar_filiacao.html | 30 ------ .../parlamentar_filiacao_edit.html | 7 -- templates/parlamentares/subnav.yaml | 2 +- 6 files changed, 88 insertions(+), 152 deletions(-) delete mode 100644 templates/parlamentares/parlamentar_filiacao.html delete mode 100644 templates/parlamentares/parlamentar_filiacao_edit.html diff --git a/parlamentares/forms.py b/parlamentares/forms.py index f48f70e0e..e0c85f8b7 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -55,36 +55,81 @@ class ParlamentarCreateForm(ParlamentarForm): class FiliacaoForm(ModelForm): + def validate(data, data_desfiliacao, parlamentar, filiacao): + data_filiacao = data + data_desfiliacao = 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 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 filiacoes in todas_filiacoes: + if (not filiacoes.data_desfiliacao and + filiacoes.id != id_filiacao_atual): + error_msg = _("O parlamentar não pode se filiar a algum partido \ + sem antes se desfiliar do partido anterior") + raise forms.ValidationError(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: + raise forms.ValidationError(error_msg) + + return True + class Meta: model = Filiacao fields = ['partido', 'data', 'data_desfiliacao'] - def __init__(self, *args, **kwargs): - - row1 = crispy_layout_mixin.to_row( - [('partido', 4), - ('data', 4), - ('data_desfiliacao', 4)]) - - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset(_('Adicionar Filiação'), row1, - form_actions()) - - ) - super(FiliacaoForm, self).__init__( - *args, **kwargs) - - -class FiliacaoEditForm(FiliacaoForm): + @transaction.atomic + def save(self, commit=False): + filiacao = super(FiliacaoForm, self).save(commit) - def __init__(self, *args, **kwargs): - super(FiliacaoEditForm, self).__init__( - *args, **kwargs) + if not validate(self.cleaned_data['data'], + self.cleaned_data['data_desfiliacao'], + filiacao.parlamentar, + filiacao): + return self.form_invalid(form) - self.helper.layout[0][-1:] = form_actions(more=[ - HTML(' '), - Submit('excluir', 'Excluir', - css_class='btn btn-primary')]) + filiacao.save() + return filiacao diff --git a/parlamentares/urls.py b/parlamentares/urls.py index 2c3978e55..a6137d613 100644 --- a/parlamentares/urls.py +++ b/parlamentares/urls.py @@ -1,8 +1,7 @@ from django.conf.urls import include, url from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, DependenteCrud, - FiliacaoEditView, FiliacaoView, - LegislaturaCrud, MandatoCrud, + FiliacaoCrud, LegislaturaCrud, MandatoCrud, MesaDiretoraView, NivelInstrucaoCrud, ParlamentarCrud, PartidoCrud, SessaoLegislativaCrud, TipoAfastamentoCrud, @@ -15,7 +14,7 @@ app_name = AppConfig.name urlpatterns = [ url(r'^parlamentar/', include( ParlamentarCrud.get_urls() + DependenteCrud.get_urls() + - MandatoCrud.get_urls() + FiliacaoCrud.get_urls() + MandatoCrud.get_urls() )), url(r'^sistema/parlamentar/legislatura/', @@ -37,13 +36,6 @@ urlpatterns = [ url(r'^sistema/mesa-diretora/cargo-mesa/', include(CargoMesaCrud.get_urls())), - url(r'^parlamentar/(?P\d+)/filiacao$', - FiliacaoView.as_view(), - name='parlamentar_filiacao'), - url(r'^parlamentar/(?P\d+)/filiacao/(?P\d+)$', - FiliacaoEditView.as_view(), - name='parlamentar_filiacao_edit'), - url(r'^mesa-diretora/$', MesaDiretoraView.as_view(), name='mesa_diretora'), ] diff --git a/parlamentares/views.py b/parlamentares/views.py index 794970f8d..a5171f8eb 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -7,11 +7,11 @@ from django.utils.translation import ugettext_lazy as _ from django.views.generic import CreateView, FormView, UpdateView import crud.base +import crud.masterdetail from crud.base import Crud from crud.masterdetail import MasterDetailCrud -from .forms import (FiliacaoEditForm, FiliacaoForm, ParlamentarCreateForm, - ParlamentarForm) +from .forms import FiliacaoForm, ParlamentarCreateForm, ParlamentarForm from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente, Filiacao, Legislatura, Mandato, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, @@ -22,8 +22,6 @@ LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura') ColigacaoCrud = Crud.build(Coligacao, 'coligacao') PartidoCrud = Crud.build(Partido, 'partidos') SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa') -FiliacaoCrud = Crud.build(Filiacao, '') -MandatoCrud = Crud.build(Mandato, '') TipoDependenteCrud = Crud.build(TipoDependente, 'tipo_dependente') NivelInstrucaoCrud = Crud.build(NivelInstrucao, 'nivel_instrucao') TipoAfastamentoCrud = Crud.build(TipoAfastamento, 'tipo_afastamento') @@ -31,6 +29,19 @@ TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar') DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '') MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '') +FiliacaoCrud = MasterDetailCrud.build(Filiacao, 'parlamentar', '') + + +# class FiliacaoCrud(MasterDetailCrud): +# model = Filiacao +# parent_field = 'parlamentar' +# help_path = '' +# +# class CreateView(crud.masterdetail.CrudCreateView): +# form_class = FiliacaoForm +# +# class UpdateView(crud.masterdetail.CrudUpdateView): +# form_class = FiliacaoForm class ParlamentarCrud(Crud): @@ -274,78 +285,3 @@ class MesaDiretoraView(FormView): 'parlamentares': parlamentares_vagos, 'cargos_vagos': cargos_vagos }) - - -class FiliacaoView(CreateView): - template_name = "parlamentares/parlamentar_filiacao.html" - form_class = FiliacaoForm - model = Filiacao - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('parlamentares:parlamentar_filiacao', - kwargs={'pk': pk}) - - def get_context_data(self, **kwargs): - context = super(FiliacaoView, self).get_context_data(**kwargs) - pid = self.kwargs['pk'] - parlamentar = Parlamentar.objects.get(id=pid) - filiacoes = Filiacao.objects.filter(parlamentar=parlamentar) - - if len(parlamentar.mandato_set.all()) == 0: - legislatura_id = 0 - else: - legislatura_id = parlamentar.mandato_set.last().legislatura.id - - context.update( - {'object': parlamentar, - 'filiacoes': filiacoes, - 'legislatura_id': legislatura_id}) - return context - - 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 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/parlamentar_filiacao_edit.html" - form_class = FiliacaoEditForm - model = Filiacao - pk_url_kwarg = 'dk' - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('parlamentares:parlamentar_filiacao', - kwargs={'pk': pk}) - - 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, - '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 - - if not validate(form, parlamentar, filiacao, self.request): - return self.form_invalid(form) - - filiacao.save() - return HttpResponseRedirect(self.get_success_url()) diff --git a/templates/parlamentares/parlamentar_filiacao.html b/templates/parlamentares/parlamentar_filiacao.html deleted file mode 100644 index c02db5374..000000000 --- a/templates/parlamentares/parlamentar_filiacao.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %}{% endblock %} -{% block detail_content %} - -

Parlamentar: {{ object.nome_parlamentar }}

- -
- Filiações - - - - - - - - - - {% for f in filiacoes %} - - - - - - {% endfor %} -
PartidoData FiliaçãoData Desfiliação
{{f.partido.sigla}}{{f.data}}{{f.data_desfiliacao|default_if_none:""}}
-
- {% crispy form %} -{% endblock detail_content %} diff --git a/templates/parlamentares/parlamentar_filiacao_edit.html b/templates/parlamentares/parlamentar_filiacao_edit.html deleted file mode 100644 index 9682c56d5..000000000 --- a/templates/parlamentares/parlamentar_filiacao_edit.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %}{% endblock %} -{% block detail_content %} - {% crispy form %} -{% endblock detail_content %} diff --git a/templates/parlamentares/subnav.yaml b/templates/parlamentares/subnav.yaml index 4a5460213..1287cb308 100644 --- a/templates/parlamentares/subnav.yaml +++ b/templates/parlamentares/subnav.yaml @@ -3,6 +3,6 @@ - title: Mandatos url: mandato_list - title: Filiações Partidárias - url: parlamentar_filiacao + url: filiacao_list - title: Dependentes url: dependente_list From 09b30241f7353bd43246b89d5b93b09e40217d8c Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 25 Apr 2016 11:50:51 -0300 Subject: [PATCH 2/6] =?UTF-8?q?Coloca=20valida=C3=A7=C3=A3o=20nas=20datas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parlamentares/forms.py | 101 +++++++++++++++++++++-------------------- parlamentares/views.py | 34 ++++++++------ 2 files changed, 72 insertions(+), 63 deletions(-) diff --git a/parlamentares/forms.py b/parlamentares/forms.py index e0c85f8b7..f1112bdc0 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -53,67 +53,68 @@ class ParlamentarCreateForm(ParlamentarForm): return parlamentar -class FiliacaoForm(ModelForm): - - def validate(data, data_desfiliacao, parlamentar, filiacao): - data_filiacao = data - data_desfiliacao = 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") +def validate(data, data_desfiliacao, parlamentar, filiacao): + data_filiacao = data + data_desfiliacao = 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 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 filiacoes in todas_filiacoes: + if (not filiacoes.data_desfiliacao and + filiacoes.id != id_filiacao_atual): + error_msg = _("O parlamentar não pode se filiar a algum partido \ + sem antes se desfiliar do partido anterior") raise forms.ValidationError(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() + error_msg = None + for filiacoes in todas_filiacoes: + if filiacoes.id != id_filiacao_atual: - for filiacoes in todas_filiacoes: - if (not filiacoes.data_desfiliacao and - filiacoes.id != id_filiacao_atual): - error_msg = _("O parlamentar não pode se filiar a algum partido \ - sem antes se desfiliar do partido anterior") - raise forms.ValidationError(error_msg) - return False + data_init = filiacoes.data + data_fim = filiacoes.data_desfiliacao - error_msg = None - for filiacoes in todas_filiacoes: - if filiacoes.id != id_filiacao_atual: + if data_init <= data_filiacao < data_fim: - data_init = filiacoes.data - data_fim = filiacoes.data_desfiliacao + 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_init <= data_filiacao < data_fim: + 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 + 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): + 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 + 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): + if error_msg: + raise forms.ValidationError(error_msg) - error_msg = _("A data de filiação e \ - desfiliação não podem estar no intervalo \ - de outro período de filiação") - break + return True - if error_msg: - raise forms.ValidationError(error_msg) - return True +class FiliacaoForm(ModelForm): class Meta: model = Filiacao @@ -126,9 +127,9 @@ class FiliacaoForm(ModelForm): filiacao = super(FiliacaoForm, self).save(commit) if not validate(self.cleaned_data['data'], - self.cleaned_data['data_desfiliacao'], - filiacao.parlamentar, - filiacao): + self.cleaned_data['data_desfiliacao'], + filiacao.parlamentar, + filiacao): return self.form_invalid(form) filiacao.save() diff --git a/parlamentares/views.py b/parlamentares/views.py index a5171f8eb..0800eac67 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -29,19 +29,27 @@ TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar') DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '') MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '') -FiliacaoCrud = MasterDetailCrud.build(Filiacao, 'parlamentar', '') - - -# class FiliacaoCrud(MasterDetailCrud): -# model = Filiacao -# parent_field = 'parlamentar' -# help_path = '' -# -# class CreateView(crud.masterdetail.CrudCreateView): -# form_class = FiliacaoForm -# -# class UpdateView(crud.masterdetail.CrudUpdateView): -# form_class = FiliacaoForm +# FiliacaoCrud = MasterDetailCrud.build(Filiacao, 'parlamentar', '') + + +class FiliacaoCrud(MasterDetailCrud): + model = Filiacao + parent_field = 'parlamentar' + help_path = '' + + class CreateView(crud.masterdetail.CrudCreateView): + form_class = FiliacaoForm + + @classmethod + def get_url_regex(self): + return r'^(?P\d+)/%s/create$' % self.model._meta.model_name + + class UpdateView(crud.masterdetail.CrudUpdateView): + form_class = FiliacaoForm + + @classmethod + def get_url_regex(self): + return r'^%s/(?P\d+)/edit$' % self.model._meta.model_name class ParlamentarCrud(Crud): From 715f89f313ad8552d564d8b1401ec1eec46b2b9f Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 25 Apr 2016 12:30:41 -0300 Subject: [PATCH 3/6] Refatora create/update --- parlamentares/forms.py | 12 ++++++------ parlamentares/views.py | 12 ++---------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/parlamentares/forms.py b/parlamentares/forms.py index f1112bdc0..02ebf6ecb 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -1,6 +1,7 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Fieldset, Layout, Submit from django import forms +from django.core.exceptions import ValidationError from django.db import transaction from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ @@ -59,8 +60,8 @@ def validate(data, data_desfiliacao, parlamentar, filiacao): # 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") + error_msg = _("A data de desfiliação não pode anterior \ + à data de filiação") raise forms.ValidationError(error_msg) return False @@ -125,11 +126,10 @@ class FiliacaoForm(ModelForm): @transaction.atomic def save(self, commit=False): filiacao = super(FiliacaoForm, self).save(commit) - if not validate(self.cleaned_data['data'], - self.cleaned_data['data_desfiliacao'], - filiacao.parlamentar, - filiacao): + self.cleaned_data['data_desfiliacao'], + filiacao.parlamentar, + filiacao): return self.form_invalid(form) filiacao.save() diff --git a/parlamentares/views.py b/parlamentares/views.py index 0800eac67..0106d6b6c 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -37,20 +37,12 @@ class FiliacaoCrud(MasterDetailCrud): parent_field = 'parlamentar' help_path = '' - class CreateView(crud.masterdetail.CrudCreateView): + class CreateView(MasterDetailCrud.CreateView): form_class = FiliacaoForm - @classmethod - def get_url_regex(self): - return r'^(?P\d+)/%s/create$' % self.model._meta.model_name - - class UpdateView(crud.masterdetail.CrudUpdateView): + class UpdateView(MasterDetailCrud.UpdateView): form_class = FiliacaoForm - @classmethod - def get_url_regex(self): - return r'^%s/(?P\d+)/edit$' % self.model._meta.model_name - class ParlamentarCrud(Crud): model = Parlamentar From 4b797919f2ec8132f5ebea4ae12e732226c9eb3d Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 26 Apr 2016 10:19:00 -0300 Subject: [PATCH 4/6] Arruma mensagens de erro --- parlamentares/forms.py | 36 ++++++++++++++++++++---------------- parlamentares/views.py | 1 - 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 02ebf6ecb..508ce6181 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -62,8 +62,7 @@ def validate(data, data_desfiliacao, parlamentar, filiacao): if data_desfiliacao and data_desfiliacao < data_filiacao: error_msg = _("A data de desfiliação não pode anterior \ à data de filiação") - raise forms.ValidationError(error_msg) - return False + return [False, error_msg] # Esse bloco garante que não haverá intersecção entre os # períodos de filiação @@ -75,8 +74,7 @@ def validate(data, data_desfiliacao, parlamentar, filiacao): filiacoes.id != id_filiacao_atual): error_msg = _("O parlamentar não pode se filiar a algum partido \ sem antes se desfiliar do partido anterior") - raise forms.ValidationError(error_msg) - return False + return [False, error_msg] error_msg = None for filiacoes in todas_filiacoes: @@ -112,7 +110,7 @@ def validate(data, data_desfiliacao, parlamentar, filiacao): if error_msg: raise forms.ValidationError(error_msg) - return True + return [True, ''] class FiliacaoForm(ModelForm): @@ -123,14 +121,20 @@ class FiliacaoForm(ModelForm): 'data', 'data_desfiliacao'] - @transaction.atomic - def save(self, commit=False): - filiacao = super(FiliacaoForm, self).save(commit) - if not validate(self.cleaned_data['data'], - self.cleaned_data['data_desfiliacao'], - filiacao.parlamentar, - filiacao): - return self.form_invalid(form) - - filiacao.save() - return filiacao + def clean(self): + filiacao = super(FiliacaoForm, self).save(commit=False) + + validacao = validate(self.cleaned_data['data'], + self.cleaned_data['data_desfiliacao'], + filiacao.parlamentar, + filiacao) + + if not validacao[0]: + raise ValidationError(validacao[1]) + + return self.cleaned_data + + # @transaction.atomic + # def save(self, commit=True): + # filiacao = super(FiliacaoForm, self).save(commit) + # return filiacao diff --git a/parlamentares/views.py b/parlamentares/views.py index 0106d6b6c..ae4f2244c 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -29,7 +29,6 @@ TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar') DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '') MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '') -# FiliacaoCrud = MasterDetailCrud.build(Filiacao, 'parlamentar', '') class FiliacaoCrud(MasterDetailCrud): From a1ec31988de0a0fddfd2e3f4904ad652294619b2 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 26 Apr 2016 10:22:57 -0300 Subject: [PATCH 5/6] =?UTF-8?q?Remove=20c=C3=B3digo=20n=C3=A3o=20usado=20e?= =?UTF-8?q?=20ajeita=20qa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parlamentares/forms.py | 9 ------ parlamentares/views.py | 67 ++---------------------------------------- 2 files changed, 2 insertions(+), 74 deletions(-) diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 508ce6181..5993b0ae1 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -1,5 +1,3 @@ -from crispy_forms.helper import FormHelper -from crispy_forms.layout import HTML, Fieldset, Layout, Submit from django import forms from django.core.exceptions import ValidationError from django.db import transaction @@ -7,9 +5,7 @@ from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ from floppyforms.widgets import ClearableFileInput -import crispy_layout_mixin import sapl -from crispy_layout_mixin import form_actions from .models import Filiacao, Legislatura, Mandato, Parlamentar @@ -133,8 +129,3 @@ class FiliacaoForm(ModelForm): raise ValidationError(validacao[1]) return self.cleaned_data - - # @transaction.atomic - # def save(self, commit=True): - # filiacao = super(FiliacaoForm, self).save(commit) - # return filiacao diff --git a/parlamentares/views.py b/parlamentares/views.py index ae4f2244c..7e41d0beb 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -1,10 +1,9 @@ from django.contrib import messages -from django.core.urlresolvers import reverse, reverse_lazy -from django.http import HttpResponseRedirect +from django.core.urlresolvers import reverse_lazy from django.shortcuts import redirect from django.utils.datastructures import MultiValueDictKeyError from django.utils.translation import ugettext_lazy as _ -from django.views.generic import CreateView, FormView, UpdateView +from django.views.generic import FormView import crud.base import crud.masterdetail @@ -110,68 +109,6 @@ class ParlamentarCrud(Crud): return context -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 filiacoes in todas_filiacoes: - if (not filiacoes.data_desfiliacao and - filiacoes.id != id_filiacao_atual): - 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 MesaDiretoraView(FormView): template_name = "mesa_diretora/mesa_diretora.html" success_url = reverse_lazy('parlamentares:mesa_diretora') From 09aa99f4daa87cec0b6f9183d0827d07b93b90c9 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 26 Apr 2016 11:09:21 -0300 Subject: [PATCH 6/6] Fix tests --- parlamentares/forms.py | 6 ++++-- parlamentares/tests/test_parlamentares.py | 4 ++-- protocoloadm/views.py | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 5993b0ae1..ead139e7b 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -104,7 +104,7 @@ def validate(data, data_desfiliacao, parlamentar, filiacao): break if error_msg: - raise forms.ValidationError(error_msg) + return [False, error_msg] return [True, ''] @@ -118,8 +118,10 @@ class FiliacaoForm(ModelForm): 'data_desfiliacao'] def clean(self): - filiacao = super(FiliacaoForm, self).save(commit=False) + if self.errors: + return self.errors + filiacao = super(FiliacaoForm, self).save(commit=False) validacao = validate(self.cleaned_data['data'], self.cleaned_data['data_desfiliacao'], filiacao.parlamentar, diff --git a/parlamentares/tests/test_parlamentares.py b/parlamentares/tests/test_parlamentares.py index 9744aee38..969af9de6 100644 --- a/parlamentares/tests/test_parlamentares.py +++ b/parlamentares/tests/test_parlamentares.py @@ -53,7 +53,7 @@ def test_filiacao_submit(client): mommy.make(Parlamentar, pk=14) mommy.make(Partido, pk=32) - client.post(reverse('parlamentares:parlamentar_filiacao', + client.post(reverse('parlamentares:filiacao_create', kwargs={'pk': 14}), {'partido': 32, 'data': '2016-03-22', @@ -103,7 +103,7 @@ def test_form_errors_dependente(client): def test_form_errors_filiacao(client): mommy.make(Parlamentar, pk=14) - response = client.post(reverse('parlamentares:parlamentar_filiacao', + response = client.post(reverse('parlamentares:filiacao_create', kwargs={'pk': 14}), {'partido': '', 'salvar': 'salvar'}, diff --git a/protocoloadm/views.py b/protocoloadm/views.py index 14cec4ea3..8757debd4 100644 --- a/protocoloadm/views.py +++ b/protocoloadm/views.py @@ -3,7 +3,7 @@ from datetime import date, datetime from braces.views import FormValidMessageMixin from django.core.urlresolvers import reverse, reverse_lazy -from django.db.models import Max, Q +from django.db.models import Q, Max from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _