Repository: interlegis/sapl

Issue:
Possibilidade de selecionar o período da composição da comissão na designação do relator
O sistema não permite que se designe um relator para uma matéria de legislatura passada


## Comportamento Esperado
Que ao designar um relator para uma matéria antiga, o sistema possa permitir a escolha do período de composição da comissão.

## Comportamento Atual
O sistema mostra apenas os membros de comissão do período atual

## Possível Solução
permitir que o usuário possa selecionar o período da composição da comissão a qualquer tempo

## Passos para Reproduzir / Sugestão

![image](https://user-images.githubusercontent.com/30807716/53024988-e8364c00-343e-11e9-861b-f2e3070a2401.png)




Discussion:

Resolving patch:
diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py
--- a/sapl/materia/forms.py
+++ b/sapl/materia/forms.py
@@ -26,7 +26,7 @@
 
 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 Meta:
         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
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -1115,8 +1115,7 @@ def get_context_data(self, **kwargs):
             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 @@ def get_context_data(self, **kwargs):
             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 @@ def get_context_data(self, **kwargs):
             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
 


Test patch: