From 2542b2db969e7fff79acc12d0d42c81a093052d9 Mon Sep 17 00:00:00 2001 From: ulyssesBML Date: Wed, 15 May 2019 14:51:11 -0300 Subject: [PATCH] Iniciando correcoes do pr --- sapl/base/forms.py | 29 ++++++++++--------- .../migrations/0033_auto_20190516_0843.py | 25 ++++++++++++++++ sapl/parlamentares/models.py | 6 ++-- sapl/parlamentares/views.py | 9 ++---- sapl/sessao/views.py | 1 - sapl/utils.py | 6 ++-- 6 files changed, 48 insertions(+), 28 deletions(-) create mode 100644 sapl/parlamentares/migrations/0033_auto_20190516_0843.py diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 71efdacc4..7dae693bd 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -38,7 +38,8 @@ from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, RangeWidgetOverride, autor_label, autor_modal, models_with_gr_for_model, qs_override_django_filter, choice_anos_com_normas, choice_anos_com_materias, - FilterOverridesMetaMixin, FileFieldCheckMixin) + FilterOverridesMetaMixin, FileFieldCheckMixin, + intervalos_tem_intersecao) from .models import AppConfig, CasaLegislativa from operator import xor @@ -1428,7 +1429,7 @@ class PartidoForm(FileFieldCheckMixin, ModelForm): partido = Partido.objects.get(pk=self.instance.pk) if xor(cleaned_data['sigla'] == partido.sigla, cleaned_data['nome'] == partido.nome): - raise ValidationError(_('O Partido deve ter um novo Nome e uma nova Sigla.')) + raise ValidationError(_('O Partido deve ter um novo nome e uma nova sigla.')) cleaned_data.update({'partido': partido}) @@ -1470,27 +1471,29 @@ class PartidoUpdateForm(PartidoForm): ) def clean(self): - super(PartidoUpdateForm,self).clean() - cleaned_data = self.cleaned_data + cleaned_data = super(PartidoUpdateForm,self).clean() + + if not self.is_valid(): + return cleaned_data - is_historico = (cleaned_data['historico'] == 'True') + is_historico = cleaned_data['historico'] == 'True' if is_historico: if not cleaned_data['data_criacao'] or not cleaned_data['data_extincao']: - raise ValidationError("Certifique-se de que a data de inicio e fim de historico estão preenchidas") + raise ValidationError("Certifique-se de que a data de inicio e fim de historico estão preenchidas") if self.instance.data_criacao and self.instance.data_criacao > cleaned_data['data_criacao']: - raise ValidationError("Data de inicio de historico deve ser posterior a data de criação do partido.") + raise ValidationError("Data de inicio de historico deve ser posterior a data de criação do partido.") if self.instance.data_extincao and self.instance.data_extincao < cleaned_data['data_extincao']: - raise ValidationError("Data de fim de historico deve ser anterior a data de extinção do partido.") + raise ValidationError("Data de fim de historico deve ser anterior a data de extinção do partido.") if self.instance.pk: partido = Partido.objects.get(pk=self.instance.pk) historico = HistoricoPartido.objects.filter(partido=partido).order_by('-inicio_historico') for h in historico: - if (h.inicio_historico < cleaned_data['data_extincao'] and \ - h.inicio_historico > cleaned_data['data_criacao']) or \ - (h.fim_historico < cleaned_data['data_extincao'] and \ - h.fim_historico > cleaned_data['data_criacao']): + if intervalos_tem_intersecao(h.inicio_historico, + h.fim_historico, + cleaned_data['data_criacao'], + cleaned_data['data_extincao']): raise ValidationError("Periodo selecionado ja possui um histórico.") return cleaned_data @@ -1499,7 +1502,7 @@ class PartidoUpdateForm(PartidoForm): partido = self.instance cleaned_data = self.cleaned_data - is_historico = (cleaned_data['historico'] == 'True') + is_historico = cleaned_data['historico'] == 'True' if not is_historico: partido.save(commit) diff --git a/sapl/parlamentares/migrations/0033_auto_20190516_0843.py b/sapl/parlamentares/migrations/0033_auto_20190516_0843.py new file mode 100644 index 000000000..03ddecde0 --- /dev/null +++ b/sapl/parlamentares/migrations/0033_auto_20190516_0843.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-05-16 11:43 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0032_merge_20190507_0857'), + ] + + operations = [ + migrations.AlterField( + model_name='historicopartido', + name='fim_historico', + field=models.DateField(verbose_name='Data Alteração'), + ), + migrations.AlterField( + model_name='historicopartido', + name='inicio_historico', + field=models.DateField(verbose_name='Data Alteração'), + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 1c105deff..ba036bc8f 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -154,12 +154,10 @@ class HistoricoPartido(models.Model): verbose_name=_('Nome') ) inicio_historico = models.DateField( - default=timezone.now, verbose_name=_('Data Alteração') ) fim_historico = models.DateField( - default=timezone.now, verbose_name=_('Data Alteração') ) @@ -444,10 +442,10 @@ class Filiacao(models.Model): # parlamentares e tela de Filiações do Parlamentar ordering = ('parlamentar', '-data', '-data_desfiliacao') - def get_nome_partido_no_ano(self, ano): + def get_nome_partido_ano(self, ano): historico = HistoricoPartido.objects.filter(partido=self.partido) for h in historico: - if ano > h.inicio_historico.year and ano < h.fim_historico.year: + if h.inicio_historico.year <= ano <= h.fim_historico.year: return h return self.partido diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index cee5005ff..325ba61d2 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -684,11 +684,8 @@ class ParlamentarCrud(Crud): partido_aux = filiacao.partido historico = HistoricoPartido.objects.filter(partido=partido_aux).order_by('-fim_historico') if historico: - for p in historico: - if p.inicio_historico < legislatura.data_fim and p.fim_historico >= legislatura.data_fim: - partido_aux = p - break - + partido_aux = next(iter([p for p in historico if p.inicio_historico < legislatura.data_fim <= p.fim_historico]), filiacao.partido) + row[1] = (partido_aux.sigla, None, None) return context @@ -1081,7 +1078,7 @@ def partido_parlamentar_sessao_legislativa(sessao, parlamentar): logger.info("Filiação do parlamentar com (data<={} e data_desfiliacao>={}) " "ou (data<={} e data_desfiliacao=Null encontrada com sucesso." .format(sessao.data_fim, sessao.data_fim, sessao.data_fim)) - return filiacao.get_nome_partido_no_ano(sessao.data_fim.year).sigla + return filiacao.get_nome_partido_ano(sessao.data_fim.year).sigla def altera_field_mesa_public_view(request): diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index dc687cac2..787e5e1bf 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -1626,7 +1626,6 @@ def get_oradores_explicações_pessoais(sessao_plenaria): if not partido_sigla: sigla = '' else: - sigla = filiacao_data(parlamentar, sessao_plenaria.data_inicio) sigla = partido_sigla.partido.sigla oradores = { 'numero_ordem': orador.numero_ordem, diff --git a/sapl/utils.py b/sapl/utils.py index 5cc0897e7..c6413f32e 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -818,11 +818,9 @@ def filiacao_data(parlamentar, data_inicio, data_fim=None): data__gte=data_inicio, data__lte=data_fim) - data_referencia = data_inicio - if data_fim: - data_referencia = data_fim + data_referencia = data_fim if data_fim else data_inicio - return ' | '.join([f.get_nome_partido_no_ano(data_referencia.year).sigla for f in filiacoes]) + return ' | '.join([f.get_nome_partido_ano(data_referencia.year).sigla for f in filiacoes]) def parlamentares_ativos(data_inicio, data_fim=None):