internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: interlegis/sapl

Issue:
Informações nas matérias do expediente e ordem do dia
Seria muito útil colocar na lista das matérias o número de protocolo, processo e autor. Aqui a leitura das matérias em votação é feita direta no SAPL, isso evitaria de entrar em cada uma delas para ter essas informações

![image](https://user-images.githubusercontent.com/13314947/28478651-b7b3b486-6e2f-11e7-974f-6dfefb6b5f60.png)



Discussion:

Resolving patch:
diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -158,7 +158,6 @@ def clean_data_ordem(self):
 
     def clean(self):
         cleaned_data = super(ExpedienteMateriaForm, self).clean()
-
         if not self.is_valid():
             return cleaned_data
 
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -154,13 +154,31 @@ def abrir_votacao(request, pk, spk):
         reverse('sapl.sessao:' + redirect_url, kwargs={'pk': spk}))
 
 
-def put_link_materia(context):
+def customize_link_materia(context):
     for i, row in enumerate(context['rows']):
         materia = context['object_list'][i].materia
         url_materia = reverse('sapl.materia:materialegislativa_detail',
                               kwargs={'pk': materia.id})
-
-        context['rows'][i][1] = (row[1][0], url_materia)
+        numeracao = materia.numeracao_set.first()
+        autoria = materia.autoria_set.filter(
+            primeiro_autor=True).first()
+        if autoria:
+            autor = autoria.autor
+        num_protocolo = materia.numero_protocolo
+
+        title_materia = '''<a href=%s>%s</a> </br>
+                           <b>Número de Processo:</b> %s </br>
+                           <b>Autor:</b> %s </br>
+                           <b>Número de Protocolo:</b> %s </br>
+                        ''' % (url_materia,
+                               row[1][0],
+                               numeracao if numeracao else '',
+                               autor if autor else '',
+                               num_protocolo if num_protocolo else '')
+
+        # Na linha abaixo, o segundo argumento é None para não colocar
+        # url em toda a string de title_materia
+        context['rows'][i][1] = (title_materia, None)
     return context
 
 
@@ -229,7 +247,7 @@ class ListView(MasterDetailCrud.ListView):
         def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)
 
-            return put_link_materia(context)
+            return customize_link_materia(context)
 
         def get_rows(self, object_list):
             for obj in object_list:
@@ -352,7 +370,7 @@ class ListView(MasterDetailCrud.ListView):
         def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)
 
-            return put_link_materia(context)
+            return customize_link_materia(context)
 
         def get_rows(self, object_list):
             for obj in object_list:


Test patch:
Repository: interlegis/sapl

Issue:
data_inicio_mandato sem valor default
data_inicio_mandato gerando inconsistência na base de dados.


Discussion:

Resolving patch:
diff --git a/sapl/parlamentares/migrations/0010_corrige_data_inicio_mandato.py b/sapl/parlamentares/migrations/0010_corrige_data_inicio_mandato.py
new file mode 100644
--- /dev/null
+++ b/sapl/parlamentares/migrations/0010_corrige_data_inicio_mandato.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+from django.db import migrations
+import json
+import os
+from datetime import timedelta
+
+from django.core.management import call_command
+
+
+
+def altera_data_inicio_mandato(apps, schema_editor):
+    Mandato = apps.get_model("parlamentares", "Mandato")
+    mandatos = Mandato.objects.all()
+
+    for mandato in mandatos:
+        data_inicio = mandato.data_inicio_mandato
+        data_inicio_legislatura = mandato.legislatura.data_inicio
+        days = abs((data_inicio - data_inicio_legislatura).days)
+
+        if days >= 60:
+            mandato.data_inicio_mandato = data_inicio_legislatura
+            mandato.save()
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        # A dependencia real desse script é o arquivo 0001_initial.py, mas
+        # isso gera um erro (Conflicting migrations detected; multiple leaf
+         # nodes in the migration graph). para não ocasionar problemas de migração,
+         # vamos manter a ordem padrão do django.
+        ('parlamentares', '0009_auto_20170905_1617'),
+    ]
+
+    operations = [
+        migrations.RunPython(altera_data_inicio_mandato),
+    ]


Test patch:
Repository: interlegis/sapl

Issue:
Criar CasaLegislativa inical ao migrar



Discussion:

Resolving patch:
diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py
--- a/sapl/legacy/migration.py
+++ b/sapl/legacy/migration.py
@@ -17,7 +17,8 @@
 from django.db.models.base import ModelBase
 
 from sapl.base.models import AppConfig as AppConf
-from sapl.base.models import Autor, ProblemaMigracao, TipoAutor
+from sapl.base.models import (Autor, CasaLegislativa, ProblemaMigracao,
+                              TipoAutor)
 from sapl.comissoes.models import Comissao, Composicao, Participacao
 from sapl.legacy.models import TipoNumeracaoProtocolo
 from sapl.materia.models import (AcompanhamentoMateria, Proposicao,
@@ -208,7 +209,8 @@ def fill_vinculo_norma_juridica():
     TipoVinculoNormaJuridica.objects.bulk_create(lista_objs)
 
 
-def fill_tipo_numeracao_protocolo():
+def fill_dados_basicos():
+    # Ajusta sequencia numérica e cria base.AppConfig
     letra = 'A'
     try:
         tipo = TipoNumeracaoProtocolo.objects.latest('dat_inicial_protocolo')
@@ -223,6 +225,10 @@ def fill_tipo_numeracao_protocolo():
     appconf = AppConf(sequencia_numeracao=letra)
     appconf.save()
 
+    # Cria instância de CasaLegislativa
+    casa = CasaLegislativa()
+    casa.save()
+
 
 # Uma anomalia no sapl 2.5 causa a duplicação de registros de votação.
 # Essa duplicação deve ser eliminada para que não haja erro no sapl 3.1
@@ -338,7 +344,7 @@ def migrate(self, obj=appconfs, interativo=True):
               '--database=default', '--no-input'], stdout=PIPE)
 
         fill_vinculo_norma_juridica()
-        fill_tipo_numeracao_protocolo()
+        fill_dados_basicos()
         info('Começando migração: %s...' % obj)
         self._do_migrate(obj)
 


Test patch:
Repository: interlegis/sapl

Issue:
Erro str has no attribute username em base/forms.py
Ao editar um autor, o django lança um error str object has no attribute username linha 235 do arquivo base/forms.py.
<img width="1280" alt="captura de tela 2017-09-26 as 14 03 50" src="https://user-images.githubusercontent.com/8682178/30873436-a415e9da-a2c3-11e7-9fd4-48a41bf7d3c5.png">



Discussion:

Resolving patch:
diff --git a/sapl/base/forms.py b/sapl/base/forms.py
--- a/sapl/base/forms.py
+++ b/sapl/base/forms.py
@@ -231,7 +231,7 @@ def clean(self):
         if 'status_user' in self.Meta.fields:
             if self.instance.pk and self.instance.user_id:
                 if getattr(
-                        self.instance.user.username,
+                        self.instance.user,
                         get_user_model().USERNAME_FIELD) != cd['username']:
                     if 'status_user' not in cd or not cd['status_user']:
                         raise ValidationError(


Test patch:
Repository: interlegis/sapl

Issue:
Ordem Alfabética no painel 
Amigos, não está em ordem alfabética normal. a vereadora esta fora da ordem. Segue imagem. 

![ordem_al](https://user-images.githubusercontent.com/5943692/30882963-19251e04-a2e1-11e7-8c49-f8fac07e6423.png)
 


Discussion:

Resolving patch:
diff --git a/sapl/painel/views.py b/sapl/painel/views.py
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -1,4 +1,3 @@
-
 from django.contrib import messages
 from django.contrib.auth.decorators import user_passes_test
 from django.core.exceptions import ObjectDoesNotExist
@@ -8,6 +7,8 @@
 from django.http.response import Http404, HttpResponseRedirect
 from django.shortcuts import render
 from django.utils.translation import ugettext_lazy as _
+from operator import itemgetter
+from sapl.utils import sort_lista_chave
 
 from sapl.crud.base import Crud
 from sapl.painel.apps import AppConfig
@@ -292,6 +293,8 @@ def get_presentes(pk, response, materia):
     elif materia.tipo_votacao == 3:
         tipo_votacao = 'Secreta'
 
+    presentes_list = sort_lista_chave(presentes_list, 'nome')
+
     response.update({
         'presentes': presentes_list,
         'num_presentes': num_presentes,
diff --git a/sapl/utils.py b/sapl/utils.py
--- a/sapl/utils.py
+++ b/sapl/utils.py
@@ -4,6 +4,7 @@
 import re
 from functools import wraps
 from unicodedata import normalize as unicodedata_normalize
+from operator import itemgetter
 
 import django_filters
 import magic
@@ -651,3 +652,14 @@ def show_results_filter_set(qr):
         return False
 
     return True
+
+
+def sort_lista_chave(lista, chave):
+    """
+    :param lista: Uma list a ser ordenada .
+    :param chave: Algum atributo (chave) que está presente na lista e qual deve ser usado para a ordenação da nova
+    lista.
+    :return: A lista ordenada pela chave passada.
+    """
+    lista_ordenada = sorted(lista, key=itemgetter(chave))
+    return lista_ordenada


Test patch:
Repository: interlegis/sapl

Issue:
Problema ao apagar dados legados de ExpedienteSessaoPlenaria
O campo txt_expediente pode possuir valores com tags em HTML, o que prejudica a formatação da string sql de delete por contas das aspas duplas.



Discussion:

Resolving patch:
diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py
--- a/sapl/legacy/migration.py
+++ b/sapl/legacy/migration.py
@@ -259,6 +259,9 @@ def excluir_registrovotacao_duplicados():
 
 
 def delete_old(legacy_model, cols_values):
+    # ajuste necessário por conta de cósigos html em txt_expediente
+    if legacy_model.__name__ == 'ExpedienteSessaoPlenaria':
+        cols_values.pop('txt_expediente')
 
     def eq_clause(col, value):
         if value is None:


Test patch:
Repository: interlegis/sapl

Issue:
Tabela Tipo de Vínculo do Módulo Normas Jurídicas
Como sugestão, indago ao grupo se não seria interessante já deixar esta tabela alimentada, em face da especificidade jurídica dos termos. Caso apareça  algum outro termo que não esteja nesta tabela, que a Casa possa  acrescenta-la.  É a sugestão!

grato

Adalberto


Discussion:

Resolving patch:
diff --git a/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py b/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py
new file mode 100644
--- /dev/null
+++ b/sapl/norma/migrations/0008_normajuridica_popula_tipo_vinculo_norma.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os
+
+from django.core.management import call_command
+from django.db import migrations
+
+
+def gera_tipo_vinculo(apps, schema_editor):
+    TipoVinculoNormaJuridica = apps.get_model("norma", "TipoVinculoNormaJuridica")
+
+    db_alias = schema_editor.connection.alias
+    tipo_vinculos = TipoVinculoNormaJuridica.objects.all().exists()
+
+    if tipo_vinculos:
+        # Caso haja algum TipoVinculoNormaJuridica cadastrado na base de dados,
+        # a migração não deve ser carregada para evitar duplicações de dados.
+        print("Carga de {} não efetuada. Já Existem {} cadastrados...".format(
+            TipoVinculoNormaJuridica._meta.verbose_name,
+            TipoVinculoNormaJuridica._meta.verbose_name_plural
+           )
+        )
+    else:
+        fixture_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../fixtures'))
+        # pega tipo_vinculo_norma_juridica listados em fixtures/pre_popula_tipo_vinculo_norma.json
+        fixture_filename = 'pre_popula_tipo_vinculo_norma.json'
+        fixture_file = os.path.join(fixture_dir, fixture_filename)
+        call_command('loaddata', fixture_file)
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('norma', '0007_auto_20170904_1708'),
+    ]
+
+    operations = [
+        migrations.RunPython(gera_tipo_vinculo),
+    ]
\ No newline at end of file


Test patch:
Repository: interlegis/sapl

Issue:
Autoincremento quebrado em Presença na Sessão e na Ordem do Dia após migração
O id das tabelas **sessao_sessaoplenariapresenca** ou **sessao_presencaordemdia** , autoincremental, está iniciando a partir do 1. Como já há dados da migração, está dando erro. Não permite incluir em nova sessão plenária nem alterar sessões existentes.

![captura de tela de 2017-10-17 14-09-41](https://user-images.githubusercontent.com/22030378/31676070-3abaed7c-b345-11e7-9a3a-4abe354e8b21.png)



Discussion:
@marciomazza 
@LucianoAlmeida 
@cristian-longhi Vc rodou os scripts de migração recentes? 
@edwardoliveira, não. Quais são esses scripts?


Resolving patch:
diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py
--- a/sapl/legacy/migration.py
+++ b/sapl/legacy/migration.py
@@ -163,11 +163,6 @@ class Record:
         yield record
 
 
-def get_last_value(model):
-    last_value = model.objects.all().aggregate(Max('pk'))
-    return last_value['pk__max'] or 0
-
-
 def save_relation(obj, nome_campo='', problema='', descricao='',
                   eh_stub=False, critico=False):
     link = ProblemaMigracao(
@@ -276,6 +271,17 @@ def eq_clause(col, value):
     exec_sql(delete_sql, 'legacy')
 
 
+def get_last_pk(model):
+    last_value = model.objects.all().aggregate(Max('pk'))
+    return last_value['pk__max'] or 0
+
+
+def reinicia_sequence(model, id):
+    sequence_name = '%s_id_seq' % model._meta.db_table
+    exec_sql('ALTER SEQUENCE %s RESTART WITH %s MINVALUE -1;' % (
+        sequence_name, id))
+
+
 class DataMigrator:
 
     def __init__(self):
@@ -383,7 +389,9 @@ def migrate_model(self, model):
 
         # setup migration strategy for tables with or without a pk
         if legacy_pk_name == 'id':
+            deve_ajustar_sequence_ao_final = False
             # There is no pk in the legacy table
+
             def save(new, old):
                 with reversion.create_revision():
                     new.save()
@@ -395,6 +403,8 @@ def save(new, old):
             old_records = iter_sql_records(
                 'select * from ' + legacy_model._meta.db_table, 'legacy')
         else:
+            deve_ajustar_sequence_ao_final = True
+
             def save(new, old):
                 with reversion.create_revision():
                     # salva new com id de old
@@ -437,6 +447,10 @@ def save(new, old):
                             self.data_mudada.clear()
                             reversion.set_comment(
                                 'Ajuste de data pela migração')
+            # reinicia sequence
+            if deve_ajustar_sequence_ao_final:
+                last_pk = get_last_pk(model)
+                reinicia_sequence(model, last_pk + 1)
 
 
 def migrate(obj=appconfs, interativo=True):


Test patch:
Repository: interlegis/sapl

Issue:
Pesquisa matérias legislativas
Ao preencher alguns dados no form de pesquisa de matéria legislativa e clicar em pesquisar, ocorre o seguinte:
No chrome o botão desabilita e a seta do mouse vira um sinal de proibido
no firefox ocorre o mesmo, porem mostra resultados


Discussion:

Resolving patch:
diff --git a/sapl/crispy_layout_mixin.py b/sapl/crispy_layout_mixin.py
--- a/sapl/crispy_layout_mixin.py
+++ b/sapl/crispy_layout_mixin.py
@@ -38,7 +38,7 @@ def form_actions(more=[], save_label=_('Salvar')):
     return FormActions(
         Submit('salvar', save_label, css_class='pull-right',
                # para impedir resubmissão do form
-               onclick='this.disabled=true;'),
+               onclick='this.form.submit();this.disabled=true;'),
         *more)
 
 


Test patch:
Repository: interlegis/sapl

Issue:
Alimentação da tabela TipoAutor automática
Preencher a tabela Tipor autor automaticamente para que autores que possuem models relacionadas já estejam disponíveis no sistema.
Apenas a criação de autores categorizados como "Outros" serão adicionados pelo usuário do sistema.


Discussion:

Resolving patch:
diff --git a/sapl/base/models.py b/sapl/base/models.py
--- a/sapl/base/models.py
+++ b/sapl/base/models.py
@@ -2,9 +2,16 @@
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.models import ContentType
 from django.db import models
+from django.db.models.signals import post_migrate
+from django.db.utils import DEFAULT_DB_ALIAS
 from django.utils.translation import ugettext_lazy as _
 
-from sapl.utils import UF, YES_NO_CHOICES, get_settings_auth_user_model
+from sapl.utils import (
+    UF,
+    YES_NO_CHOICES,
+    get_settings_auth_user_model,
+    models_with_gr_for_model
+    )
 
 TIPO_DOCUMENTO_ADMINISTRATIVO = (('O', _('Ostensivo')),
                                  ('R', _('Restritivo')))
@@ -247,3 +254,39 @@ def __str__(self):
             return str(self.partido)
         else:
         """
+
+
+def cria_models_tipo_autor(app_config, verbosity=2, interactive=True,
+                           using=DEFAULT_DB_ALIAS, **kwargs):
+
+    models = models_with_gr_for_model(Autor)
+
+    print("\n\033[93m\033[1m{}\033[0m".format(
+            _('Atualizando registros TipoAutor do SAPL:')))
+    for model in models:
+        content_type = ContentType.objects.get_for_model(model)
+        tipo_autor = TipoAutor.objects.filter(
+            content_type=content_type.id).exists()
+
+        if tipo_autor:
+            msg1 = "Carga de {} não efetuada.".format(
+                TipoAutor._meta.verbose_name)
+            msg2 = " Já Existe um {} {} relacionado...".format(
+                    TipoAutor._meta.verbose_name,
+                    model._meta.verbose_name)
+            msg = "  {}{}".format(msg1, msg2)
+        else:
+            novo_autor = TipoAutor()
+            novo_autor.content_type_id = content_type.id
+            novo_autor.descricao = model._meta.verbose_name
+            novo_autor.save()
+            msg1 = "Carga de {} efetuada.".format(
+                TipoAutor._meta.verbose_name)
+            msg2 = " {} {} criado...".format(
+                    TipoAutor._meta.verbose_name, content_type.model)
+            msg = "  {}{}".format(msg1, msg2)
+        print(msg)
+    # Disconecta função para evitar a chamada repetidas vezes.
+    post_migrate.disconnect(receiver=cria_models_tipo_autor)
+
+post_migrate.connect(receiver=cria_models_tipo_autor)


Test patch:
Repository: interlegis/sapl

Issue:
Exclusão Tramitação - status de tramitação
Ao incluir uma tramitação à matéria, em que esta tramitação tenha seu indicador de tramitação definido nas tabelas auxiliares como fim, a matéria em questão passa de "em tramitação - sim para não" corretamente. Se essa tramitação por ventura for excluída, não seria o caso de alterar novamente a matéria de "em tramitação - não para sim" ?


Discussion:
Sim. Vc consegue fazer esse PR?
gostaria, mas penso que esteja acima das minhas condições.  : )

Resolving patch:
diff --git a/sapl/materia/apps.py b/sapl/materia/apps.py
--- a/sapl/materia/apps.py
+++ b/sapl/materia/apps.py
@@ -6,3 +6,6 @@ class AppConfig(apps.AppConfig):
     name = 'sapl.materia'
     label = 'materia'
     verbose_name = _('Matéria')
+
+    def ready(self):
+        from . import receivers
\ No newline at end of file
diff --git a/sapl/materia/receivers.py b/sapl/materia/receivers.py
--- a/sapl/materia/receivers.py
+++ b/sapl/materia/receivers.py
@@ -1,5 +1,7 @@
+from django.db.models.signals import post_delete, post_save
 from django.dispatch import receiver
 
+from sapl.materia.models import Tramitacao
 from sapl.materia.signals import tramitacao_signal
 from sapl.utils import get_base_url
 
@@ -17,3 +19,11 @@ def handle_tramitacao_signal(sender, **kwargs):
         materia,
         tramitacao.status,
         tramitacao.unidade_tramitacao_destino)
+
+
+@receiver(post_delete, sender=Tramitacao)
+def status_tramitacao_materia(sender, instance, **kwargs):
+    if instance.turno == 'F':
+        materia = instance.materia
+        materia.em_tramitacao = True
+        materia.save()


Test patch:
Repository: interlegis/sapl

Issue:
Matéria Legislativa aponta para tipo de origem externa inexistente
Alguns bancos tem um valor inválido para o tipo de origem externa na tabela de matéria legislativa. Isso faz com que as matérias legislativas que possuem este valor invalido não sejam migradas.


Discussion:

Resolving patch:
diff --git a/sapl/legacy/migration.py b/sapl/legacy/migration.py
--- a/sapl/legacy/migration.py
+++ b/sapl/legacy/migration.py
@@ -303,6 +303,21 @@ def unifica_autores_repetidos_no_legado(campo_agregador):
         tuple(apagar)))
 
 
+def anula_tipos_origem_externa_invalidos():
+    """Anula tipos de origem externa inválidos
+    para que não impeçam a migração da matéria"""
+
+    tipos_validos = tuple(primeira_coluna(exec_legado('''
+        select tip_materia
+        from tipo_materia_legislativa
+        where ind_excluido <> 1;''')))
+
+    exec_legado('''
+        update materia_legislativa
+        set tip_origem_externa = NULL
+        where tip_origem_externa not in {};'''.format(tipos_validos))
+
+
 def uniformiza_banco():
     exec_legado('''
       SELECT replace(@@sql_mode,"STRICT_TRANS_TABLES,","ALLOW_INVALID_DATES");
@@ -392,6 +407,8 @@ def uniformiza_banco():
     unifica_autores_repetidos_no_legado('cod_parlamentar')
     unifica_autores_repetidos_no_legado('cod_comissao')
 
+    anula_tipos_origem_externa_invalidos()
+
 
 def iter_sql_records(sql, db):
     class Record:


Test patch:
Repository: interlegis/sapl

Issue:
Adicionar nome de orador no Painel
Permitir que o painel eletrônico mostre um campo com o nome do orador atual. Este campo deve ser dinamicamente alterado a medida que os oradores forem se revezando.


Discussion:

Resolving patch:
diff --git a/sapl/painel/views.py b/sapl/painel/views.py
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -16,7 +16,8 @@
 from sapl.crud.base import Crud
 from sapl.painel.apps import AppConfig
 from sapl.parlamentares.models import Legislatura, Parlamentar, Votante
-from sapl.sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia,
+from sapl.sessao.models import (ExpedienteMateria, OrdemDia, OradorExpediente,
+                                PresencaOrdemDia,
                                 RegistroVotacao, SessaoPlenaria,
                                 SessaoPlenariaPresenca, VotoParlamentar)
 from sapl.utils import filiacao_data, get_client_ip, sort_lista_chave
@@ -294,6 +295,17 @@ def get_presentes(pk, response, materia):
     sessao = SessaoPlenaria.objects.get(id=pk)
     num_presentes = len(presentes)
     data_sessao = sessao.data_inicio
+    oradores = OradorExpediente.objects.filter(
+        sessao_plenaria_id=pk).order_by('numero_ordem')
+
+    oradores_list = []
+    for o in oradores:
+
+        oradores_list.append(
+            {
+            'nome': o.parlamentar.nome_parlamentar,
+            'numero': o.numero_ordem
+            })
 
     presentes_list = []
     for p in presentes:
@@ -334,7 +346,8 @@ def get_presentes(pk, response, materia):
             'tipo_resultado': materia.resultado,
             'observacao_materia': materia.observacao,
             'tipo_votacao': tipo_votacao,
-            'materia_legislativa_texto': str(materia.materia)
+            'materia_legislativa_texto': str(materia.materia),
+            'oradores': oradores_list
         })
 
     presentes_list = sort_lista_chave(presentes_list, 'nome')


Test patch: