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

Issue:
apagando comentarios do docker-composer
<!--- Forneça um resumo geral das suas alterações no título acima -->

## Descrição
<!--- Decreva suas alterações detalhadamente -->

## _Issue_ Relacionada
<!--- Este projeto apenas aceita _pull requests_ relacionadas à _issues_ abertas. -->
<!--- Se está sugerindo uma nova _feature_ ou mudança, por favor discuta em uma _issue_ antes. -->
<!--- Se está corrigindo um _bug_, deve haver uma _issue_ descrevendo-o com passos para reproduzir. -->
<!--- Por favor, adicione o link para a _issue_ aqui: -->

## Motivação e Contexto
<!--- Por que essa mudança é necessária? Qual problema ela resolve? -->

## Como Isso Foi Testado?
<!--- Por favor, descreva detalhadamente como você testou suas mudanças. -->
<!--- Inclua detalhes do seu ambiente de teste e os testes que você executou -->
<!--- para ver como a sua alteração afeta outras áreas do código, etc. -->

## Capturas de Tela (se apropriado):
<!--- Insera imagens, se apropriado, da adição e/ou correção que foi feita -->

## Tipos de Mudanças
<!--- Quais os tipos de alterações introduzidos pelo seu código? Coloque um `x` em todas as caixas que se aplicam: -->
- [x] _Bug fix_ (alteração que corrige uma _issue_ e não altera funcionalidades já existentes)
- [ ] Nova _feature_ (alteração que adiciona uma funcionalidade e não altera funcionalidades já existentes)
- [ ] Alteração disruptiva (_Breaking change_) (Correção ou funcionalidade que causa alteração nas funcionalidades existentes)

## Checklist:
<!--- Passe por todos os pontos a seguir e coloque um `x` em todas as caixas que se aplicam. -->
<!--- Se você não tem certeza sobre nenhum destes, não hesite em perguntar. Nós estamos aqui para ajudar! -->
- [x] Eu li o documento de Contribuição (**CONTRIBUTING**).
- [x] Meu código segue o estilo de código desse projeto.
- [ ] Minha alteração requer uma alteração na documentação.
- [ ] Eu atualizei a documentação de acordo.
- [ ] Eu adicionei testes para cobrir minhas mudanças.
- [ ] Todos os testes novos e existentes passaram.


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
@@ -256,9 +256,15 @@ def clean(self):
     def save(self, commit=False):
         retirada = super(RetiradaPautaForm, self).save(commit=commit)
         if retirada.ordem:
-            retirada.materia = retirada.ordem.materia
+            ordem = retirada.ordem
+            retirada.materia = ordem.materia
+            ordem.votacao_aberta = False
+            ordem.save()
         elif retirada.expediente:
-            retirada.materia = retirada.expediente.materia
+            expediente = retirada.expediente
+            retirada.materia = expediente.materia
+            expediente.votacao_aberta = False
+            expediente.save()
         retirada.save()
         return retirada
 


Test patch:
Repository: interlegis/sapl

Issue:
É possível votar uma matéria Em Bloco mesmo que tenha sido retirada de pauta
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Ordem/Expediente que foram retiradas de pauta não devem aparecer como opções a serem votadas na Votação em Bloco.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Atualmente, é possível votar matérias que foram retiradas de pauta.


## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1. Em alguma Sessão Plenária
2. Retirada de pauta e escolher alguma ordem/expediente
3. Tentar votar essa mesma ordem/expediente em Votação em Bloco.

## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->
Correção de bug.


Discussion:

Resolving patch:
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -3489,7 +3489,8 @@ class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
 
     def get_queryset(self):
         return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
-                                                resultado='')
+                                                resultado='',
+                                                retiradapauta=None)
 
     def get_context_data(self, **kwargs):
         context = super(VotacaoEmBlocoExpediente,
@@ -3515,7 +3516,8 @@ class VotacaoEmBlocoOrdemDia(PermissionRequiredForAppCrudMixin, ListView):
 
     def get_queryset(self):
         return OrdemDia.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
-                                       resultado='')
+                                       resultado='',
+                                       retiradapauta=None)
 
     def get_context_data(self, **kwargs):
         context = super(VotacaoEmBlocoOrdemDia,


Test patch:
Repository: interlegis/sapl

Issue:
Parlamentares inativos em Adicionar Orador da Ordem do Dia
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Parlamentares inativos não devem ser listados no campo Parlamentar do form de Adicionar Orador da Ordem do Dia.



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
@@ -675,14 +675,16 @@ class OradorExpedienteForm(ModelForm):
 
     def __init__(self, *args, **kwargs):
         super(OradorExpedienteForm, self).__init__(*args, **kwargs)
-        legislatura_vigente = SessaoPlenaria.objects.get(
-            pk=kwargs['initial']['id_sessao']).legislatura
 
-        if legislatura_vigente:
-            self.fields['parlamentar'].queryset = \
-                Parlamentar.objects.filter(ativo=True,
-                                           mandato__legislatura=legislatura_vigente
-                                           ).order_by('nome_parlamentar')
+        id_sessao = int(self.initial['id_sessao'])
+
+        ids = [p.parlamentar.id for p in SessaoPlenariaPresenca.objects.filter(
+            sessao_plenaria_id=id_sessao
+        )]
+
+        self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
+            id__in=ids, ativo=True
+        ).order_by('nome_parlamentar')
 
     def clean(self):
         super(OradorExpedienteForm, self).clean()
@@ -721,7 +723,7 @@ def __init__(self, *args, **kwargs):
         )]
 
         self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
-            id__in=ids
+            id__in=ids, ativo=True
         ).order_by('nome_parlamentar')
 
 


Test patch:
Repository: interlegis/sapl

Issue:
Valor inválido na Ordenação do Resumo
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Todas as opção de Ordenação do Resumo deveriam ser válidas e únicas.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Se Ordenação do Resumo não for previamente configurado, dá erro por valor inválido.

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
Verificar na migração se foi previamente configurado. Se não tiver sido, remover e criar o objeto ResumoOrdenacao novamente.

<!-- ## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
<!-- 1.
2.
3.
4.

<!-- ## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->

<!-- ## Imagens do Ocorrido
<!--- Representação visual em vídeo ou imagem do ocorrido -->
<!--- Se está descrevendo um bug poste imagens ou vídeos na repordução do bug citado, caso se aplique -->

<!-- ## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
<!-- * Versão usada (_Release_):
* Nome e versão do navegador:
* Nome e versão do Sistema Operacional (desktop ou mobile):
* Link para o seu projeto (Caso de fork deste projeto):


Discussion:
#2800 
@cantuariavc Verificar o PR do @cesaraugc que acabei de "mergear" ao 3.1.x


Resolving patch:
diff --git a/sapl/sessao/migrations/0040_auto_20190523_1130.py b/sapl/sessao/migrations/0040_auto_20190523_1130.py
new file mode 100644
--- /dev/null
+++ b/sapl/sessao/migrations/0040_auto_20190523_1130.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2019-05-23 14:30
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+def unifica_opcaoes_ordenacao_resumo(apps, schema_editor):
+    ResumoOrdenacao = apps.get_model('sessao', 'ResumoOrdenacao')
+    ro = ResumoOrdenacao.objects.get_or_create()[0]
+    if 'oradores_o_d' not in ro.__dict__:
+        ro.decimo_quarto = 'oradores_o_d'
+        ro.save()
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('sessao', '0039_auto_20190430_0825'),
+    ]
+
+    operations = [
+        migrations.RunPython(unifica_opcaoes_ordenacao_resumo)
+    ]


Test patch:
Repository: interlegis/sapl

Issue:
Faltam informações na página de detalhe de Matéria Legislativa
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
As votações, as normas jurídicas e as audiências públicas da matéria também devem ser visualizadas na página de detalhe de Matéria Legislativa. 


## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
Incorporar o template materia_detail.html em materialegislativa_detail.html.




Discussion:

Resolving patch:
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -1681,7 +1681,7 @@ def get_success_url(self):
     class DetailView(Crud.DetailView):
 
         layout_key = 'MateriaLegislativaDetail'
-        template_name = "materia/materia_detail.html"
+        template_name = "materia/materialegislativa_detail.html"
 
         def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)


Test patch:
Repository: interlegis/sapl

Issue:
Mostrar a Conversão de Meta-Tipos "Tipo de Matéria Legislativa" como padrão da tela Adicionar tipo de Proposição
Na tela "Adicionar Tipo de Proposição", deixar a Conversão de Meta-Tipos "Tipo de Matéria Legislativa" como padrão na tela, uma vez que na inclusão de Tipos de Proposição, se usa a tabela "Tipo de Matéria Legislativa", o que requer que a cada tipo de proposição, necessita trocar a tabela correspondente.


## Comportamento Atual
A tabela Conversão de Meta-Tipos que aparece na tela como padrão é o "Tipo de Documento"

esperado. -->
deixar a Conversão de Meta-Tipos "Tipo de Matéria Legislativa" como padrão da tela.


## Possível Solução
Inversão da aparição da tabela "Tipo de Documento" por "Tipo de Matéria Legislativa"



## Imagens do Ocorrido
Tabela padrão atual:
![image](https://user-images.githubusercontent.com/30807716/60125647-a148c200-9762-11e9-9920-79b209ae5566.png)

Tabela padrão desejada:
![image](https://user-images.githubusercontent.com/30807716/60125736-cc331600-9762-11e9-8ea1-d041c0dd4643.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
@@ -1456,7 +1456,8 @@ def __init__(self, *args, **kwargs):
 
         self.fields['content_type'].choices = [
             (ct.pk, ct) for k, ct in content_types.items()]
-        self.fields['content_type'].choices.sort(key=lambda x: str(x[1]))
+        # Ordena por id
+        self.fields['content_type'].choices.sort(key=lambda x: x[0])
 
         if self.instance.pk:
             self.fields[


Test patch:
Repository: interlegis/sapl

Issue:
Arrastar para definir ordenação dos cronômetros
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Deve ser possível arrastar os cronômetros para definir sua ordenação. Esta tela fica nas Tabelas Auxiliares -> Cronômetros e está disponível apenas na master (3.2).

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Atualmente, a única forma de alterar a ordem é abrindo a tela de detalhes do cronômetro e editando o tipo por lá.

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
Solução semelhante à ordenação do resumo da Sessão. 


## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->
Melhorar a usabilidade.



Discussion:

Resolving patch:
diff --git a/sapl/painel/urls.py b/sapl/painel/urls.py
--- a/sapl/painel/urls.py
+++ b/sapl/painel/urls.py
@@ -4,7 +4,7 @@
 from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view,
                     painel_parlamentar_view, painel_view, painel_votacao_view,
                     switch_painel, verifica_painel, votante_view, CronometroPainelCrud,
-                    PainelConfigCrud, painel_parcial_view)
+                    PainelConfigCrud,ordena_cronometro, painel_parcial_view)
 
 app_name = AppConfig.name
 
@@ -23,6 +23,7 @@
     url(r'^painel/cronometro$', cronometro_painel, name='cronometro_painel'),
     
     url(r'^sistema/cronometro/', include(CronometroPainelCrud.get_urls())),
+    url(r'^sistema/ordena_cronometro/', ordena_cronometro, name='ordena_cronometro'),
     url(r'^sistema/painel-config/', include(PainelConfigCrud.get_urls())),
 
     url(r'^voto-individual/$', votante_view,
diff --git a/sapl/painel/views.py b/sapl/painel/views.py
--- a/sapl/painel/views.py
+++ b/sapl/painel/views.py
@@ -32,9 +32,19 @@
 class CronometroPainelCrud(CrudAux):
     model = Cronometro
 
+    class ListView(CrudAux.ListView):
+        template_name = "painel/cronometro_list.html"
+        
     class BaseMixin(CrudAux.BaseMixin):
         form_class = CronometroForm
 
+def ordena_cronometro(request):
+    ordem = request.POST.getlist("ordem", [])
+    for index, o in enumerate(ordem, 1):
+        c = Cronometro.objects.get(id=o)
+        c.ordenacao = index
+        c.save()
+    return JsonResponse({'type':'success','msg':'Ordem alterada com sucesso.'})
 
 class PainelConfigCrud(CrudAux):
     model = PainelConfig
@@ -715,3 +725,4 @@ def get_dados_painel(request, pk):
 
     # Retorna que não há nenhuma matéria já votada ou aberta
     return response_nenhuma_materia(get_presentes(pk, response, None))
+


Test patch:
Repository: interlegis/sapl

Issue:
Disposição incorreta dos dados da lista de parlamentares duplicados
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Os nomes dos parlamentares e a quantidade de cadastros devem estar nas suas respectivas colunas.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Os dados estão sendo alocados aleatoriamente. 











Discussion:

Resolving patch:
diff --git a/sapl/base/views.py b/sapl/base/views.py
--- a/sapl/base/views.py
+++ b/sapl/base/views.py
@@ -1430,7 +1430,7 @@ def get_context_data(self, **kwargs):
 
 
 def parlamentares_duplicados():
-    return [parlamentar.values() for parlamentar in Parlamentar.objects.values(
+    return [parlamentar for parlamentar in Parlamentar.objects.values(
         'nome_parlamentar').order_by('nome_parlamentar').annotate(count=Count(
             'nome_parlamentar')).filter(count__gt=1)]
 


Test patch:
diff --git a/sapl/base/tests/test_view_base.py b/sapl/base/tests/test_view_base.py
--- a/sapl/base/tests/test_view_base.py
+++ b/sapl/base/tests/test_view_base.py
@@ -194,13 +194,13 @@ def test_lista_parlamentares_duplicados():
                 sexo='M'
         )
 
-        lista_dict_values_parlamentares_duplicados = parlamentares_duplicados()
+        lista_dict_parlamentares_duplicados = parlamentares_duplicados()
         parlamentar_duplicado = list(
-                lista_dict_values_parlamentares_duplicados[0]
+                lista_dict_parlamentares_duplicados[0].values()
         )
         parlamentar_duplicado.sort(key=str)
 
-        assert len(lista_dict_values_parlamentares_duplicados) == 1
+        assert len(lista_dict_parlamentares_duplicados) == 1
         assert parlamentar_duplicado == [2, "Nome_Parlamentar_Teste"]
Repository: interlegis/sapl

Issue:
Usuário não cadastrado como autor consegue acessar proposição pela url
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Usuário não cadastrado como autor não deveria conseguir acessar proposições.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Usuário não cadastrado como autor consegue acessar proposição pela url que contenha o id de uma proposição já cadastrada, e também pela url de criação.
Exemplo: se um superusuário logado tentar acessar a url `/proposicao/create`, irá conseguir criar uma proposição, embora não consiga acessar a url `/proposicao/`, que é a que aparece no menu de atividades legislativas. Também é possível visualizar proposições já criadas.
Além disso, um usuário cadastrado como autor consegue acessar proposições de outro autor pela URL e inclusive enviá-las. O correto seria o autor conseguir acessar apenas suas próprias proposições.

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
Corrigir as permissões.

## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1. Acessar `http://127.0.0.1:8000/proposicao/create` como um superusuário (pelo menos foi o que testei e aparece o bug) que não seja cadastrado como autor.


Discussion:

Resolving patch:
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -772,7 +772,7 @@ def get_context_data(self, **kwargs):
 
             context['title'] = '%s <small>(%s)</small>' % (
                 self.object, self.object.autor)
-
+            
             context['user'] = self.request.user
             context['proposicao'] = Proposicao.objects.get(
                 pk=self.kwargs['pk']
@@ -782,7 +782,8 @@ def get_context_data(self, **kwargs):
         def get(self, request, *args, **kwargs):
 
             action = request.GET.get('action', '')
-            username = request.user.username
+            user = request.user
+            username = user.username
 
             if not action:
                 return Crud.DetailView.get(self, request, *args, **kwargs)
@@ -790,7 +791,7 @@ def get(self, request, *args, **kwargs):
             p = Proposicao.objects.get(id=kwargs['pk'])
 
             msg_error = ''
-            if p:
+            if p and p.autor.user == user:
                 if action == 'send':
                     if p.data_envio and p.data_recebimento:
                         msg_error = _('Proposição já foi enviada e recebida.')


Test patch: