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

Issue:
Sessão Plenária
Ao cadastrar sessão plenária, o sistema trás a legislatura atual porem ocorre um erro, não trás a sessão legislativa atual.


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
@@ -653,11 +653,15 @@ def cancel_url(self):
 
         def get_initial(self):
             legislatura = Legislatura.objects.order_by('-data_inicio').first()
+
             if legislatura:
                 return {
                     'legislatura': legislatura,
-                    'sessao_legislativa': legislatura.sessaoplenaria_set.first(
-                    )}
+                    'sessao_legislativa': legislatura.sessaolegislativa_set.filter(
+                                        legislatura_id=legislatura.id,
+                                        data_inicio__year=timezone.now().year
+                                        ).first()
+                    }
             else:
                 msg = _('Cadastre alguma legislatura antes de adicionar ' +
                         'uma sessão plenária!')


Test patch:
Repository: interlegis/sapl

Issue:
Composição Comissão - seleção redundante
A seleção da comissão sobre a qual trata a composição já vem selecionada, basta selecionar o período de composição. A função solicita a seleção em 2 combos quando é necessário apenas 1, o do período de composição.


Discussion:

Resolving patch:
diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py
--- a/sapl/comissoes/forms.py
+++ b/sapl/comissoes/forms.py
@@ -13,10 +13,16 @@
 
 class ComposicaoForm(forms.ModelForm):
 
+    comissao = forms.CharField(required=False, label='Comissao', widget=forms.HiddenInput())
+
     class Meta:
         model = Composicao
         exclude = []
 
+    def __init__(self, user=None, **kwargs):
+        super(ComposicaoForm, self).__init__(**kwargs)
+        self.fields['comissao'].widget.attrs['disabled'] = 'disabled'
+
     def clean(self):
         cleaned_data = super(ComposicaoForm, self).clean()
 
@@ -24,7 +30,7 @@ def clean(self):
             return cleaned_data
 
         periodo = cleaned_data['periodo']
-        comissao_pk = cleaned_data['comissao'].id
+        comissao_pk = self.initial['comissao'].id
         intersecao_periodo = Composicao.objects.filter(
             Q(periodo__data_inicio__lte=periodo.data_fim,
                 periodo__data_fim__gte=periodo.data_fim) |
diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py
--- a/sapl/comissoes/views.py
+++ b/sapl/comissoes/views.py
@@ -90,6 +90,10 @@ class ComposicaoCrud(MasterDetailCrud):
 
     class CreateView(MasterDetailCrud.CreateView):
         form_class = ComposicaoForm
+        
+        def get_initial(self):
+            comissao = Comissao.objects.get(id=self.kwargs['pk'])
+            return {'comissao': comissao}
 
 
     class ListView(MasterDetailCrud.ListView):


Test patch:
Repository: interlegis/sapl

Issue:
Pauta da Sessão
Ao apresentar a pauta da sessão, mostra apenas os campos para busca, quando o correto é mostrar os dados de identificação da ultima sessão com link para acesso a essa sessão.
Também falta complementar a pauta com apenas as "matérias do expediente e da ordem do dia" que devem ser mostradas apos clicar no link referido. Hoje a pesquisa da pauta remete para sessão plenária o que é incorreto. 




Discussion:
As mudanças que vc está solicitando são para um novo relatório, e fica complicado alterar este relatório  que já vem sendo utilizado há 16 anos por outras casas legislativas. Portanto, não vamos modificar o relatório que já existe, mas vc pode abrir uma nova issue para adicionar mais um relatório com as informações resumidas e links, se assim desejar, que faremos nas versões futuras (final de 2018, início de 2019). Ou, como se trata de software livre, pode adicionar vc mesmo e submeter um Pull Request via Github que daí podemos integrar na versão 3.2 ou até 3.1 do SAPL.

Resolving patch:
diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py
--- a/sapl/sessao/urls.py
+++ b/sapl/sessao/urls.py
@@ -6,7 +6,7 @@
                                ExpedienteMateriaCrud, ExpedienteView,
                                MateriaOrdemDiaCrud, MesaView, OradorCrud,
                                OradorExpedienteCrud, PainelView,
-                               PautaSessaoDetailView, PautaSessaoListView,
+                               PautaSessaoDetailView, PautaSessaoView,
                                PesquisarPautaSessaoView,
                                PesquisarSessaoPlenariaView,
                                PresencaOrdemDiaView, PresencaView,
@@ -91,7 +91,7 @@
 
     # PAUTA SESSÃO
     url(r'^sessao/pauta-sessao$',
-        PautaSessaoListView.as_view(), name='list_pauta_sessao'),
+        PautaSessaoView.as_view(), name='pauta_sessao'),
     url(r'^sessao/pauta-sessao/pesquisar-pauta$',
         PesquisarPautaSessaoView.as_view(), name='pesquisar_pauta'),
     url(r'^sessao/pauta-sessao/(?P<pk>\d+)$',
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -2429,8 +2429,18 @@ def get_context_data(self, **kwargs):
         return context
 
 
-class PautaSessaoListView(SessaoListView):
-    template_name = "sessao/pauta_sessao_list.html"
+class PautaSessaoView(TemplateView):
+    model = SessaoPlenaria
+    template_name = "sessao/pauta_inexistente.html"
+
+    def get(self, request, *args, **kwargs):
+        sessao = SessaoPlenaria.objects.order_by("-data_inicio").first()
+
+        if not sessao:
+          return self.render_to_response({})
+
+        return HttpResponseRedirect(
+          reverse('sapl.sessao:pauta_sessao_detail', kwargs={'pk': sessao.pk}))
 
 
 class PautaSessaoDetailView(DetailView):


Test patch:
Repository: interlegis/sapl

Issue:
Mesa da Sessão Plenária: membros em ordem alfabética
Apresentar em ordem alfabética a lista de parlamentares para composição da Mesa da Sessão Plenária.
![captura de tela de 2018-04-16 08-12-27](https://user-images.githubusercontent.com/19169882/38806055-769e8b0e-414e-11e8-9369-ec7ffed8e8ce.png)



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
@@ -1,4 +1,5 @@
 from re import sub
+from operator import itemgetter
 
 from django.contrib import messages
 from django.contrib.auth.decorators import permission_required
@@ -988,15 +989,16 @@ def get(self, request, *args, **kwargs):
                 [p.parlamentar for p in parlamentares]) - set(
                 parlamentares_ocupados))
 
-        parlamentares_vagos = [p for p in parlamentares_vagos if p.ativo]
+        org_parlamentares_vagos = sorted(parlamentares_vagos, key=lambda x: x.nome_completo)
+        org_parlamentares_vagos = [p for p in org_parlamentares_vagos if p.ativo]
         # Se todos os cargos estiverem ocupados, a listagem de parlamentares
         # deve ser renderizada vazia
         if not cargos_vagos:
-            parlamentares_vagos = []
+            org_parlamentares_vagos = []
 
         context.update(
             {'composicao_mesa': mesa,
-             'parlamentares': parlamentares_vagos,
+             'parlamentares': org_parlamentares_vagos,
              'cargos_vagos': cargos_vagos})
 
         return self.render_to_response(context)


Test patch:
Repository: interlegis/sapl

Issue:
Mesa da Sessão Plenária: membros
Deixar disponíveis para compor a Mesa da Sessão Plenária apenas os parlamentares com mandato na legislatura que estejam ativos. Estão aparecendo também inativos.
![captura de tela de 2018-04-16 08-12-27](https://user-images.githubusercontent.com/19169882/38805972-332f0948-414e-11e8-9cd8-2c47d5f6c4f8.png)



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
@@ -988,6 +988,7 @@ def get(self, request, *args, **kwargs):
                 [p.parlamentar for p in parlamentares]) - set(
                 parlamentares_ocupados))
 
+        parlamentares_vagos = [p for p in parlamentares_vagos if p.ativo]
         # Se todos os cargos estiverem ocupados, a listagem de parlamentares
         # deve ser renderizada vazia
         if not cargos_vagos:


Test patch:
Repository: interlegis/sapl

Issue:
Sessão Plenária: ordem dos Oradores do Expediente
A ordem dos oradores aparece invertida, tanto no resumo quanto no pdf do resumo.
https://sapl3.agudo.rs.leg.br/sessao/1852/resumo


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
@@ -1298,7 +1298,7 @@ def get(self, request, *args, **kwargs):
         # Oradores Expediente
         oradores = []
         for orador in OradorExpediente.objects.filter(
-                sessao_plenaria_id=self.object.id):
+                sessao_plenaria_id=self.object.id).order_by('numero_ordem'):
             numero_ordem = orador.numero_ordem
             url_discurso = orador.url_discurso
             parlamentar = Parlamentar.objects.get(


Test patch:
Repository: interlegis/sapl

Issue:
Sessão Plenária: erro ao adicionar várias matérias na Ordem do Dia
Usando a opção "Adicionar várias matérias" na Ordem do Dia, o sistema responde o seguinte, apesar das matérias terem sido incluídas corretamente.
![captura de tela de 2018-04-16 10-37-56](https://user-images.githubusercontent.com/19169882/38812407-95e9c4d8-4162-11e8-948f-0a9da933f5e8.png)



Discussion:
Bom dia, 
Esta tela está aparecendo porque após inserir as matérias em Ordem do Dia para votação a pesquisa é refeita e como as matérias já foram inseridas ela retorna com nenhum resultado. Uma mensagem de sucesso agora será apresentada ao operador quando as matérias forem inseridas. Como na imagem abaixo.

![image](https://user-images.githubusercontent.com/19825887/38819752-9b495e24-4172-11e8-8360-18d6735283a1.png)


Resolving patch:
diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -461,7 +461,7 @@ def __init__(self, *args, **kwargs):
         super(OradorExpedienteForm, self).__init__(*args, **kwargs)
 
         self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
-            ativo=True).order_by('nome_completo')
+            ativo=True).order_by('nome_parlamentar')
 
     class Meta:
         model = OradorExpediente
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -2709,6 +2709,9 @@ def post(self, request, *args, **kwargs):
         for m in marcadas:
             try:
                 tipo_votacao = request.POST['tipo_votacao_%s' % m]
+                msg = _('%s adicionado(a) com sucesso!'
+                        % MateriaLegislativa.objects.get(id=m))
+                messages.add_message(request, messages.SUCCESS, msg)
             except MultiValueDictKeyError:
                 msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
                         'o tipo de votação de %s' %
@@ -2778,6 +2781,9 @@ def post(self, request, *args, **kwargs):
         for m in marcadas:
             try:
                 tipo_votacao = request.POST['tipo_votacao_%s' % m]
+                msg = _('%s adicionado(a) com sucesso!'
+                        % MateriaLegislativa.objects.get(id=m))
+                messages.add_message(request, messages.SUCCESS, msg)
             except MultiValueDictKeyError:
                 msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
                         'o tipo de votação de %s' %


Test patch:
Repository: interlegis/sapl

Issue:
Documentos administrativos: erro ao adicionar
Ao adicionar um documento administrativo, o sistema responde que já existe. Porém, na pesquisa por documentos adminsitrativos, ele não aparece. 
https://sapl3.agudo.rs.leg.br/docadm/pesq-doc-adm?page=1&tipo=&numero=&ano=2018&protocolo__numero=&data_0=&data_1=&interessado=&assunto=&tramitacao=&tramitacaoadministrativo__unidade_tramitacao_destino=&tramitacaoadministrativo__status=&o=DEC
![captura de tela de 2018-04-16 10-18-55](https://user-images.githubusercontent.com/19169882/38811336-a182746e-415f-11e8-91ce-e6c238ef9cc3.png)



Discussion:

Resolving patch:
diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py
--- a/sapl/protocoloadm/forms.py
+++ b/sapl/protocoloadm/forms.py
@@ -669,7 +669,7 @@ def clean(self):
         tipo_documento = self.data['tipo']
 
         documento = DocumentoAdministrativo.objects.filter(numero=numero_documento,
-                                               tipo=tipo_documento)
+                                               tipo=tipo_documento, ano=ano_protocolo)
 
         if documento:
             raise ValidationError('Documento já existente')


Test patch:
Repository: interlegis/sapl

Issue:
Documentos administrativos: oferecer o próximo número ao adicionar
 Ao adicionar novo documento administrativo, depois de selecionar o tipo, oferecer o campo Ano preenchido com o ano corrente e o campo Número preenchido com próximo número do ano corrente.
![captura de tela de 2018-04-16 10-11-09](https://user-images.githubusercontent.com/19169882/38810933-8ede8d08-415e-11e8-8b36-f135fd020aa5.png)



Discussion:

Resolving patch:
diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py
--- a/sapl/protocoloadm/views.py
+++ b/sapl/protocoloadm/views.py
@@ -706,9 +706,17 @@ def atualizar_numero_documento(request):
     tipo = TipoDocumentoAdministrativo.objects.get(pk=request.GET['tipo'])
     ano = request.GET['ano']
 
-    numero_max = DocumentoAdministrativo.objects.filter(
-        tipo=tipo, ano=ano).aggregate(Max('numero'))['numero__max']
+    param = {'tipo': tipo}
+    param['ano'] = ano if ano else timezone.now().year
 
-    return JsonResponse(
-        {'numero': numero_max + 1}) if numero_max else JsonResponse(
-        {'numero': 1})
+    doc = DocumentoAdministrativo.objects.filter(**param).order_by(
+        'tipo', 'ano', 'numero').values_list('numero', 'ano').last()
+
+    if doc:
+        response = JsonResponse({'numero': int(doc[0]) + 1,
+                                 'ano': doc[1]})
+    else:
+        response = JsonResponse(
+            {'numero': 1, 'ano': ano})
+
+    return response


Test patch:
Repository: interlegis/sapl

Issue:
Pdf da sessão: formação texto Expedientes Diversos
No pdf do resumo da sessão, em Expedientes Diversos, campo Oradores do Pequeno Expediente, a formação de quebra de página fica errada, como abaixo (o texto foi colado a partir de outra página):
![captura de tela de 2018-04-16 10-50-22](https://user-images.githubusercontent.com/19169882/38812922-fec46dcc-4163-11e8-9a18-e6e8e4772a1e.png)

Sessão: https://sapl3.agudo.rs.leg.br/relatorios/1853/sessao-plenaria




Discussion:

Resolving patch:
diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
--- a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
+++ b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
@@ -169,7 +169,7 @@ def expedientes(lst_expedientes):
     for idx, expediente in enumerate(lst_expedientes):
         tmp += '\t\t<para style="P2"><b>' + '<br/> ' + \
             expediente['nom_expediente'] + ': </b></para>\n' + \
-            '<para style="P2">' + \
+            '<para style="P3">' + \
             expediente['txt_expediente'] + '</para>\n'
         tmp += '\t\t<para style="P2">\n'
         tmp += '\t\t\t<font color="white"> </font>\n'


Test patch:
Repository: interlegis/sapl

Issue:
Sessão Plenária: campo Observação
Inserir no resumo e no pdf do resumo da sessão plenária o campo Observação dos Oradores do Expediente.
https://sapl3.agudo.rs.leg.br/sessao/1853/oradorexpediente


Discussion:

Resolving patch:
diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
--- a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
+++ b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
@@ -215,8 +215,11 @@ def oradores_expediente(lst_oradores_expediente):
     tmp += '\t\t\t<font color="white"> <br/></font>\n'
     tmp += '\t\t</para>\n'
     for orador_expediente in lst_oradores_expediente:
-        tmp += '\t\t<para style="P2" spaceAfter="5"><b>' + str(orador_expediente['num_ordem']) + '</b> - ' + orador_expediente[
-            'nom_parlamentar'] + '/' + str(orador_expediente['sgl_partido']) + '</para>\n'
+        tmp += '\t\t<para style="P2" spaceAfter="5"><b>' + str(orador_expediente[
+        'num_ordem']) + '</b> - ' + orador_expediente[
+        'nom_parlamentar'] + '/' + str(orador_expediente[
+        'sgl_partido']) + ' - ' + str(orador_expediente[
+        'observacao']) + '</para>\n'
     return tmp
 
 
diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py
--- a/sapl/relatorios/views.py
+++ b/sapl/relatorios/views.py
@@ -617,6 +617,8 @@ def get_sessao_plenaria(sessao, casa):
             orador_expediente.numero_ordem)
         dic_oradores_expediente["nom_parlamentar"] = (
             parlamentar.nome_parlamentar)
+        dic_oradores_expediente["observacao"] = (
+            orador_expediente.observacao)
         partido_sigla = Filiacao.objects.filter(
             parlamentar=parlamentar).first()
         if not partido_sigla:
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -1306,11 +1306,13 @@ def get(self, request, *args, **kwargs):
                 sessao_plenaria_id=self.object.id).order_by('numero_ordem'):
             numero_ordem = orador.numero_ordem
             url_discurso = orador.url_discurso
+            observacao = orador.observacao
             parlamentar = Parlamentar.objects.get(
                 id=orador.parlamentar_id)
             ora = {'numero_ordem': numero_ordem,
                    'url_discurso': url_discurso,
-                   'parlamentar': parlamentar
+                   'parlamentar': parlamentar,
+                   'observacao' : observacao
                    }
             oradores.append(ora)
 


Test patch:
Repository: interlegis/sapl

Issue:
Sessão Plenária: numeração automática em Oradores do Expediente
Implementar numeração automática na ordem dos Oradores do Expediente para evitar falha do operador. Isso ocorreu no caso abaixo, já que o sistema está aceitando repetição do número de ordem.
https://sapl3.agudo.rs.leg.br/sessao/1854/oradorexpediente


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
@@ -473,6 +473,25 @@ def __init__(self, *args, **kwargs):
                                        mandato__legislatura=legislatura_atual
                                        ).order_by('nome_parlamentar')
 
+    def clean(self):
+        super(OradorExpedienteForm, self).clean()
+        cleaned_data = self.cleaned_data
+
+        if not self.is_valid():
+            return self.cleaned_data
+
+        sessao_id = self.initial['id_sessao']
+        ordem = OradorExpediente.objects.filter(
+                            sessao_plenaria_id=sessao_id,
+                            numero_ordem=cleaned_data['numero_ordem']
+                            ).exists()
+        if ordem:
+            raise ValidationError(_(
+                'Já existe orador nesta posição da ordem de pronunciamento'))
+
+        return self.cleaned_data
+
+
     class Meta:
         model = OradorExpediente
         exclude = ['sessao_plenaria']


Test patch:
Repository: interlegis/sapl

Issue:
Impedir anexação de uma matéria legislativa a ela mesma
No 2.5 o sistema informa que isso não é possível.
https://sapl3.agudo.rs.leg.br/materia/anexada/983


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
@@ -582,8 +582,18 @@ def clean(self):
             msg = _('A matéria a ser anexada não existe no cadastro'
                     ' de matérias legislativas.')
             raise ValidationError(msg)
-        else:
-            cleaned_data['materia_anexada'] = materia_anexada
+
+        materia_principal = self.instance.materia_principal
+        if materia_principal == materia_anexada:
+            raise ValidationError(_('Matéria não pode ser anexada a si mesma'))
+
+        is_anexada = Anexada.objects.filter(materia_principal=materia_principal,
+                                            materia_anexada=materia_anexada
+                                            ).exists()
+        if is_anexada:
+            raise ValidationError(_('Materia já se encontra anexada'))
+
+        cleaned_data['materia_anexada'] = materia_anexada
 
         return cleaned_data
 


Test patch:
Repository: interlegis/sapl

Issue:
Normas jurídicas: relação de normas relacionadas na tela de adicionar
Como vê-se abaixo, as normas relacionadas estão registradas:
https://sapl3.agudo.rs.leg.br/norma/3743
Mas a lista de normas relacionadas talvez devesse a aparecer na tela abaixo:
https://sapl3.agudo.rs.leg.br/norma/3743/normarelacionada


Discussion:
Bom dia, 
Analisando o sistema, percebemos que ao clicar na aba "Normas Relacionadas" são mostradas apenas as normas relacionadas que a norma altera e não as que alteram ela. Mas no campo "Relacionamentos" são mostradas todas as normas como era no SAPL 2.5. A referida aba é necessária para se adicionar normas que a norma irá alterar, mas não acrescenta nenhuma nova informação para o usuário não logado.
Desta forma pensamos em alterar o nome da aba para algo como "Alterações em outras normas" e esconder esta aba para o usuário não logado, além de colocar o nome "Normas Relacionadas" no lugar de "Relacionamentos". O que acha?
@LeandroRoberto,  quando se usa compilação é diferente? O que você acha da solução proposta?
acho coerente esconder "Normas Relacionadas" para usuários anônimos e com isto termos apenas na telas de detalhes...
quanto a tela detalhes, não sei como é no do 2.5 e nem se o que tenho hoje no 3.0 é o oficial desta versão
mas na minha instancia esses relacionamentos se chamam "Vinculação Ativa" e "Vinculação Passiva"
veja este exemplo:
http://sapl.camarajatai.go.gov.br/sapl/consultas/norma_juridica/norma_juridica_mostrar_proc?cod_norma=2572
![image](https://user-images.githubusercontent.com/9630623/39640650-0b76622c-4fa2-11e8-9247-5b6547577916.png)

Neste exemplo é possível ver uma norma pode ser alterada e alteradora ao mesmo tempo...
aí está a 3066 que tem um Vínculo Ativo com a 2805 pois age sobre ela... além disso tem várias outros Vínculos passivos, que são outras leis agindo sobre a 3066.
Muito obrigado, Leandro!

Resolving patch:
diff --git a/sapl/norma/views.py b/sapl/norma/views.py
--- a/sapl/norma/views.py
+++ b/sapl/norma/views.py
@@ -40,10 +40,9 @@ class NormaRelacionadaCrud(MasterDetailCrud):
     model = NormaRelacionada
     parent_field = 'norma_principal'
     help_topic = 'norma_juridica'
-    public = [RP_LIST, RP_DETAIL]
 
     class BaseMixin(MasterDetailCrud.BaseMixin):
-        list_field_names = ['norma_relacionada']
+        list_field_names = ['norma_relacionada', 'tipo_vinculo']
 
     class CreateView(MasterDetailCrud.CreateView):
         form_class = NormaRelacionadaForm


Test patch: