From 87e3373bae5eeea865bf6560b3d9417b565c5070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Cantu=C3=A1ria?= Date: Thu, 14 Mar 2019 11:22:31 -0300 Subject: [PATCH] Fix #2518 (#2540) --- sapl/materia/forms.py | 4 ++-- sapl/materia/views.py | 46 +++++++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index eb84ed4d4..f56e5fac5 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -26,7 +26,7 @@ import django_filters import sapl from sapl.base.models import AppConfig, Autor, TipoAutor -from sapl.comissoes.models import Comissao +from sapl.comissoes.models import Comissao, Participacao from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_PUBLIC, STATUS_TA_PRIVATE) from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, @@ -375,7 +375,7 @@ class RelatoriaForm(ModelForm): widgets = {'comissao': forms.Select(attrs={'disabled': 'disabled'})} def __init__(self, *args, **kwargs): - super(RelatoriaForm, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def clean(self): super(RelatoriaForm, self).clean() diff --git a/sapl/materia/views.py b/sapl/materia/views.py index aa4d49575..65a402f79 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1115,8 +1115,7 @@ class RelatoriaCrud(MasterDetailCrud): try: self.logger.debug("user=" + username + ". Tentando obter objeto Comissao de pk={}.".format( context['form'].initial['comissao'])) - comissao = Comissao.objects.get( - pk=context['form'].initial['comissao']) + comissao = Comissao.objects.get(pk=context['form'].initial['comissao']) except: self.logger.error("user=" + username + ". Objeto Comissão de pk={} não encontrado.".format( context['form'].initial['comissao'])) @@ -1125,17 +1124,20 @@ class RelatoriaCrud(MasterDetailCrud): else: self.logger.info("user=" + username + ". Objeto Comissao de pk={} obtido com sucesso.".format( context['form'].initial['comissao'])) - composicao = comissao.composicao_set.order_by( - '-periodo__data_inicio').first() - participacao = Participacao.objects.filter( - composicao=composicao) - - parlamentares = [] - parlamentares.append(['', '---------']) - for p in participacao: - if p.titular: - parlamentares.append( - [p.parlamentar.id, p.parlamentar.nome_parlamentar]) + + materia = MateriaLegislativa.objects.get(pk=self.kwargs.get('pk')) + ano_materia = materia.ano + + comissao = Comissao.objects.get(pk=context['form'].initial['comissao']) + composicoes = comissao.composicao_set.all() + composicao = comissao.composicao_set.filter(periodo__data_inicio__year=ano_materia) + + participacoes = Participacao.objects.select_related().filter(composicao=composicao) + + parlamentares = [('', '---------')] + [ + (participacao.parlamentar.id, participacao.parlamentar.nome_parlamentar) for participacao in + participacoes if participacao.titular] + context['form'].fields['parlamentar'].choices = parlamentares return context @@ -1179,13 +1181,19 @@ class RelatoriaCrud(MasterDetailCrud): else: self.logger.info("user=" + username + ". Objeto Comissao de pk={} obtido com sucesso.".format( context['form'].initial['comissao'])) - composicao = comissao.composicao_set.order_by( - '-periodo__data_inicio').first() - participacao = Participacao.objects.filter( - composicao=composicao) - parlamentares = [[p.parlamentar.id, p.parlamentar.nome_parlamentar] for - p in participacao if p.titular] + relatoria = Relatoria.objects.select_related('materia').get(pk=self.kwargs.get('pk')) + ano_materia = relatoria.materia.ano + + comissao = Comissao.objects.get(pk=context['form'].initial['comissao']) + composicoes = comissao.composicao_set.all() + composicao = comissao.composicao_set.filter(periodo__data_inicio__year=ano_materia) + + participacoes = Participacao.objects.select_related().filter(composicao=composicao) + + parlamentares = [('', '---------')] + [ + (participacao.parlamentar.id, participacao.parlamentar.nome_parlamentar) for participacao in + participacoes if participacao.titular] context['form'].fields['parlamentar'].choices = parlamentares