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

Issue:
sapl 31: apresentar filação partidária atual
Na lista de parlamentares, apresentar apenas a filiação partidária atual.



Discussion:

Resolving patch:
diff --git a/parlamentares/models.py b/parlamentares/models.py
--- a/parlamentares/models.py
+++ b/parlamentares/models.py
@@ -306,6 +306,8 @@ class Filiacao(models.Model):
     class Meta:
         verbose_name = _('Filiação')
         verbose_name_plural = _('Filiações')
+        # A ordenação descrescente por data é importante para listagem de
+        # parlamentares e tela de Filiações do Parlamentar
         ordering = ('parlamentar', '-data', '-data_desfiliacao')
 
     def __str__(self):
diff --git a/parlamentares/views.py b/parlamentares/views.py
--- a/parlamentares/views.py
+++ b/parlamentares/views.py
@@ -79,9 +79,9 @@ def get_queryset(self):
         def get_rows(self, object_list):
             parlamentares = []
             for m in object_list:
-
-                if m.parlamentar.filiacao_set.last():
-                    partido = ', '.join(str(p) for p in m.get_partidos())
+                ultima_filiacao = m.parlamentar.filiacao_set.last()
+                if ultima_filiacao:
+                    partido = ultima_filiacao.partido.sigla
                 else:
                     partido = _('Sem Registro')
 


Test patch:
Repository: interlegis/sapl

Issue:
Listagem de Parlamentares mostra último partido desfiliado ao invés de 'Sem Partido'
Se o parlamentar estiver desfiliado do último partido a listagem de parlamentares deve mostrar como "Sem Partido". Atualmente, a listagem de parlamentar mostra este partido como sendo o atual do parlamentar.



Discussion:

Resolving patch:
diff --git a/parlamentares/views.py b/parlamentares/views.py
--- a/parlamentares/views.py
+++ b/parlamentares/views.py
@@ -80,10 +80,10 @@ def get_rows(self, object_list):
             parlamentares = []
             for m in object_list:
                 ultima_filiacao = m.parlamentar.filiacao_set.first()
-                if ultima_filiacao:
+                if ultima_filiacao and not ultima_filiacao.data_desfiliacao:
                     partido = ultima_filiacao.partido.sigla
                 else:
-                    partido = _('Sem Registro')
+                    partido = _('Sem Partido')
 
                 parlamentar = [
                     (m.parlamentar.nome_parlamentar, m.parlamentar.id),


Test patch:
Repository: interlegis/sapl

Issue:
sapl 31: definir ordem de apresentação dos mandatos do parlamentar
Na função Parlamentar, definir a ordem de apresentação dos mandatos do parlamentar. Penso que a ordem decrescente é a adequada.
Exemplo: http://sapl31agudo.interlegis.leg.br/parlamentar/21/mandato



Discussion:

Resolving patch:
diff --git a/parlamentares/views.py b/parlamentares/views.py
--- a/parlamentares/views.py
+++ b/parlamentares/views.py
@@ -27,8 +27,14 @@
 TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar')
 
 DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '')
-MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '')
 
+class MandatoCrud(MasterDetailCrud):
+    model = Mandato
+    parent_field = 'parlamentar'
+    help_path = ''
+
+    class ListView(MasterDetailCrud.ListView):
+        ordering = ('-data_fim_mandato')
 
 class FiliacaoCrud(MasterDetailCrud):
     model = Filiacao


Test patch:
Repository: interlegis/sapl

Issue:
Criar validação para unidade de tramitação selecionar apenas um campo



Discussion:

Resolving patch:
diff --git a/materia/forms.py b/materia/forms.py
--- a/materia/forms.py
+++ b/materia/forms.py
@@ -21,7 +21,7 @@
 from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
                      DespachoInicial, DocumentoAcessorio, MateriaLegislativa,
                      Numeracao, Proposicao, Relatoria, TipoMateriaLegislativa,
-                     Tramitacao)
+                     Tramitacao, UnidadeTramitacao)
 
 ANO_CHOICES = [('', '---------')] + RANGE_ANOS
 
@@ -32,6 +32,25 @@ def em_tramitacao():
             (False, 'Não')]
 
 
+class UnidadeTramitacaoForm(ModelForm):
+
+    class Meta:
+        model = UnidadeTramitacao
+        fields = ['comissao', 'orgao', 'parlamentar']
+
+    def clean(self):
+        cleaned_data = self.cleaned_data
+
+        for key in list(cleaned_data.keys()):
+            if cleaned_data[key] == None:
+                del cleaned_data[key]
+
+        if len(cleaned_data) != 1:
+            msg = _('Somente um campo deve preenchido!')
+            raise ValidationError(msg)
+        return cleaned_data
+
+
 class ProposicaoForm(ModelForm):
 
     tipo_materia = forms.ModelChoiceField(
diff --git a/materia/views.py b/materia/views.py
--- a/materia/views.py
+++ b/materia/views.py
@@ -30,7 +30,8 @@
                     DespachoInicialForm, DocumentoAcessorioForm,
                     LegislacaoCitadaForm, MateriaLegislativaFilterSet,
                     NumeracaoForm, ProposicaoForm, RelatoriaForm,
-                    TramitacaoForm, filtra_tramitacao_destino,
+                    TramitacaoForm, UnidadeTramitacaoForm,
+                    filtra_tramitacao_destino,
                     filtra_tramitacao_destino_and_status,
                     filtra_tramitacao_status)
 from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
@@ -52,7 +53,17 @@
 OrgaoCrud = Crud.build(Orgao, 'orgao')
 TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao')
 StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao')
-UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao')
+
+
+class UnidadeTramitacaoCrud(Crud):
+    model = UnidadeTramitacao
+    help_path = 'unidade_tramitacao'
+
+    class CreateView(crud.base.CrudCreateView):
+        form_class = UnidadeTramitacaoForm
+
+    class UpdateView(crud.base.CrudUpdateView):
+        form_class = UnidadeTramitacaoForm
 
 
 class ProposicaoCrud(Crud):


Test patch:
Repository: interlegis/sapl

Issue:
Mudar/ordenar listagem de sessão plenária



Discussion:
Relacionada #457 


Resolving patch:
diff --git a/sessao/views.py b/sessao/views.py
--- a/sessao/views.py
+++ b/sessao/views.py
@@ -173,8 +173,8 @@ class SessaoCrud(Crud):
     help_path = 'sessao_plenaria'
 
     class BaseMixin(crud.base.CrudBaseMixin):
-        list_field_names = ['numero', 'tipo', 'legislatura',
-                            'sessao_legislativa', 'data_inicio', 'hora_inicio']
+        list_field_names = ['data_inicio', 'legislatura', 'sessao_legislativa',
+                            'tipo']
 
     # FIXME!!!! corrigir referencias no codigo e remover isso!!!!!
     # fazer com #230
@@ -182,6 +182,9 @@ class CrudDetailView(crud.base.CrudDetailView):
         model = SessaoPlenaria
         help_path = 'sessao_plenaria'
 
+    class ListView(crud.base.CrudListView):
+        ordering = ['-data_inicio']
+
 
 class PresencaMixin:
 


Test patch:
Repository: interlegis/sapl

Issue:
[Regressão] Funcionalidade de reordenar matérias em Sessão Plenária
Tinhamos uma funcionalidade de reordenar matéria legislativa tanto para ordem do dia como para expediente. Com a conversão para o CRUD esta funcionalidade se perdeu.



Discussion:

Resolving patch:
diff --git a/sessao/urls.py b/sessao/urls.py
--- a/sessao/urls.py
+++ b/sessao/urls.py
@@ -16,7 +16,8 @@
                           VotacaoExpedienteView, VotacaoNominalEditView,
                           VotacaoNominalExpedienteEditView,
                           VotacaoNominalExpedienteView, VotacaoNominalView,
-                          VotacaoView, abrir_votacao_view)
+                          VotacaoView, abrir_votacao_view,
+                          reordernar_materias_expediente)
 
 from .apps import AppConfig
 
@@ -32,6 +33,8 @@
 
     url(r'^(?P<pk>\d+)/(?P<spk>\d+)/abrir-votacao$', abrir_votacao_view,
         name="abrir_votacao"),
+    url(r'^(?P<pk>\d+)/reordenar-expediente$', reordernar_materias_expediente,
+        name="reordenar_expediente"),
 
     url(r'^media/(?P<path>.*)$', serve,
         {'document_root': settings.MEDIA_ROOT}),
diff --git a/sessao/views.py b/sessao/views.py
--- a/sessao/views.py
+++ b/sessao/views.py
@@ -42,6 +42,19 @@
 RegistroVotacaoCrud = Crud.build(RegistroVotacao, '')
 
 
+def reordernar_materias_expediente(request, pk):
+    expedientes = ExpedienteMateria.objects.filter(
+                    sessao_plenaria_id=pk)
+    exp_num = 1
+    for e in expedientes:
+        e.numero_ordem = exp_num
+        e.save()
+        exp_num += 1
+
+    return HttpResponseRedirect(
+        reverse('sessao:expedientemateria_list', kwargs={'pk': pk}))
+
+
 def abrir_votacao_view(request, pk, spk):
     existe_votacao_aberta = ExpedienteMateria.objects.filter(
                 sessao_plenaria_id=spk, votacao_aberta=True


Test patch:
Repository: interlegis/sapl

Issue:
Proposições com menu superior indevido
Ao visualizar ou editar uma proposição, o usuário tem acesso a um menu superior que só faz sentido para matérias legislativas:
http://sapl31agudo.interlegis.leg.br/proposicao/1331
http://sapl31agudo.interlegis.leg.br/proposicao/1331/edit



Discussion:
Penso que é importante priorizar a segregação do acesso dos usuários com perfil de operador e de autor ( #103 ). Isso evitará o post de issues "desnecessárias".

@eduardoedson Este é mais um exemplo de erro no CRUD automático, certo? Aquele _mesmo_ erro?


Resolving patch:
diff --git a/base/templatetags/menus.py b/base/templatetags/menus.py
--- a/base/templatetags/menus.py
+++ b/base/templatetags/menus.py
@@ -27,6 +27,10 @@ def subnav(context, path=None):
     if root_pk:
         request = context['request']
         app = request.resolver_match.app_name
+        # Esse IF elimina o bug do subnav em Tabelas Auxiliares
+        # e também em proposições
+        if request.path.find(app) == -1:
+            return
         default_path = '%s/subnav.yaml' % app
         path = os.path.join(TEMPLATES_DIR, path or default_path)
         if os.path.exists(path):
diff --git a/materia/migrations/0036_merge.py b/materia/migrations/0036_merge.py
new file mode 100644
--- /dev/null
+++ b/materia/migrations/0036_merge.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.5 on 2016-05-19 13:49
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('materia', '0032_auto_20160503_0926'),
+        ('materia', '0035_auto_20160510_0949'),
+    ]
+
+    operations = [
+    ]


Test patch:
Repository: interlegis/sapl

Issue:
Tipo de arquivo de Complemento de proposição
Embora o sistema aceite outro tipo de arquivo (testei odt), há informação de que o complemento deve ser um pdf.



Discussion:
@eduardocalil Vc que fez essa checagem, não? Poderia confirmar isso, por favor?

André, **se não me engano**, os complementos aceitos são PDF, DOC, ODT, e RDT, mas vamos olhar isso, asap.


Resolving patch:
diff --git a/materia/migrations/0037_auto_20160520_1250.py b/materia/migrations/0037_auto_20160520_1250.py
new file mode 100644
--- /dev/null
+++ b/materia/migrations/0037_auto_20160520_1250.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.5 on 2016-05-20 15:50
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import materia.models
+import sapl.utils
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('materia', '0036_merge'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='proposicao',
+            name='texto_original',
+            field=models.FileField(blank=True, null=True, upload_to=materia.models.texto_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Original'),
+        ),
+    ]
diff --git a/materia/models.py b/materia/models.py
--- a/materia/models.py
+++ b/materia/models.py
@@ -473,7 +473,7 @@ class Proposicao(models.Model):
         blank=True,
         null=True,
         upload_to=texto_upload_path,
-        verbose_name=_('Texto Original (PDF)'),
+        verbose_name=_('Texto Original'),
         validators=[restringe_tipos_de_arquivo_txt])
 
     class Meta:


Test patch:
Repository: interlegis/sapl

Issue:
Ajustar choice da migração de StatusTramitacaoAdministrativo
Ajustar as choices do campo indicador da model StatusTramitacaoAdministrativo.



Discussion:

Resolving patch:
diff --git a/legacy/migration.py b/legacy/migration.py
--- a/legacy/migration.py
+++ b/legacy/migration.py
@@ -16,6 +16,7 @@
 from materia.models import StatusTramitacao, Tramitacao
 from norma.models import NormaJuridica
 from parlamentares.models import Parlamentar
+from protocoloadm.models import StatusTramitacaoAdministrativo
 from sessao.models import OrdemDia, SessaoPlenaria
 
 # BASE ######################################################################
@@ -417,6 +418,10 @@ def adjust_statustramitacao(new, old):
         new.indicador = ''
 
 
+def adjust_statustramitacaoadm(new, old):
+    adjust_statustramitacao(new, old)
+
+
 def adjust_tramitacao(new, old):
     if old.sgl_turno == 'Ú':
         new.turno = 'U'
@@ -433,6 +438,7 @@ def adjust_sessaoplenaria(new, old):
     Parlamentar: adjust_parlamentar,
     SessaoPlenaria: adjust_sessaoplenaria,
     StatusTramitacao: adjust_statustramitacao,
+    StatusTramitacaoAdministrativo: adjust_statustramitacaoadm,
     Tramitacao: adjust_tramitacao,
 }
 


Test patch:
Repository: interlegis/sapl

Issue:
[Regressão] Sumiu links de Composição e Matérias em Tramitação de Comissões
Conforme título.



Discussion:
#490 

Esse erro foi gerado pela solução encontrada para eliminar os links indesejados da nav-bar nas telas de Tabelas Auxiliares. Isso ocorreu pelo fato de que o link base do app **"parlamentares"** é **"parlamentar"**, e de **"comissoes"** é **"comissao"**, o que quebrou a lógica implementada. Irei procurar outra solução para o problema inicial.


Resolving patch:
diff --git a/base/templatetags/menus.py b/base/templatetags/menus.py
--- a/base/templatetags/menus.py
+++ b/base/templatetags/menus.py
@@ -27,9 +27,23 @@ def subnav(context, path=None):
     if root_pk:
         request = context['request']
         app = request.resolver_match.app_name
-        # Esse IF elimina o bug do subnav em Tabelas Auxiliares
-        # e também em proposições
-        if request.path.find(app) == -1:
+        # Esse IF elimina o bug que ocorria nas Tabelas Auxiliares
+        # Algumas recebiam a nav-bar de seu app gerada pelo APP CRUD
+        # Essa nav-bar é indesejada nesses casos
+        # A solução encontrada foi verificar se havia 'sistema' na URL
+        # ou se o nome do app estava presente na URL
+        # Para essa Solução haviam duas exceções, pois o nome base das URLs
+        # de comissões e parlamentares são diferentes do nome do app
+        # Deve-se cuidar para que o nome base das URLs sejam
+        # iguais ao nome do app Ex: app = 'parlamentares' e
+        # url = 'parlamentares/...'
+
+        if (request.path.find('parlamentar') != -1 and
+           app == 'parlamentares' or
+           request.path.find('comissao') != -1 and app == 'comissoes'):
+            pass
+        elif (request.path.find(app) == -1 or
+              request.path.find('sistema') != -1):
             return
         default_path = '%s/subnav.yaml' % app
         path = os.path.join(TEMPLATES_DIR, path or default_path)


Test patch:
Repository: interlegis/sapl

Issue:
Consertar layout do painel



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
@@ -141,7 +141,9 @@ def get_presentes(pk, response, materia):
         'numero_votos_nao': 0,
         'numero_abstencoes': 0,
         'total_votos': 0,
-        'tipo_resultado': tipo_votacao})
+        'tipo_resultado': tipo_votacao,
+        'observacao_materia': materia.observacao,
+        'materia_legislativa_texto': str(materia.materia)})
 
     return response
 
@@ -220,7 +222,9 @@ def get_presentes_expediente(pk, response, materia):
         'numero_votos_nao': 0,
         'numero_abstencoes': 0,
         'total_votos': 0,
-        'tipo_resultado': tipo_votacao})
+        'tipo_resultado': tipo_votacao,
+        'observacao_materia': materia.observacao,
+        'materia_legislativa_texto': str(materia.materia)})
 
     return response
 
@@ -255,7 +259,7 @@ def get_votos(response, materia):
         'numero_abstencoes': registro.numero_abstencoes,
         'total_votos': total,
         'tipo_votacao': tipo_votacao,
-        'tipo_resultado': registro.tipo_resultado_votacao.nome
+        'tipo_resultado': registro.tipo_resultado_votacao.nome,
     })
     return response
 


Test patch:
Repository: interlegis/sapl

Issue:
Mudar matéria ordem do dia para Crud



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
@@ -28,11 +28,10 @@
 
 from .forms import (AdicionarVariasMateriasFilterSet,
                     BancadaForm, ExpedienteForm, ExpedienteMateriaForm,
-                    ListMateriaForm, MateriaOrdemDiaForm,
-                    MesaForm, OrdemDiaForm, PresencaForm,
+                    ListMateriaForm, MateriaOrdemDiaForm, MesaForm,
+                    OrdemDiaForm, PresencaForm,
                     SessaoPlenariaFilterSet, VotacaoEditForm, VotacaoForm,
                     VotacaoNominalForm)
-
 from .models import (Bancada, CargoBancada, CargoMesa, ExpedienteMateria,
                      ExpedienteSessao, IntegranteMesa, MateriaLegislativa,
                      Orador, OradorExpediente, OrdemDia, PresencaOrdemDia,


Test patch:
Repository: interlegis/sapl

Issue:
Indicar comissões ativas e inativas
Na função Comissões, há uma lista delas. Seria importante criar uma coluna indicando as ativas e as inativas, ou criar uma forma de diferenciá-las



Discussion:
@andreagudo Excelente idéia, vamos implementar.


Resolving patch:
diff --git a/sapl/comissoes/migrations/0005_comissao_ativa.py b/sapl/comissoes/migrations/0005_comissao_ativa.py
new file mode 100644
--- /dev/null
+++ b/sapl/comissoes/migrations/0005_comissao_ativa.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.5 on 2016-08-05 18:36
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('comissoes', '0004_auto_20160307_0905'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='comissao',
+            name='ativa',
+            field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, verbose_name='Comissão Ativa?'),
+            preserve_default=False,
+        ),
+    ]
diff --git a/sapl/comissoes/models.py b/sapl/comissoes/models.py
--- a/sapl/comissoes/models.py
+++ b/sapl/comissoes/models.py
@@ -73,6 +73,9 @@ class Comissao(models.Model):
     unidade_deliberativa = models.BooleanField(
         choices=YES_NO_CHOICES,
         verbose_name=_('Unidade Deliberativa'))
+    ativa = models.BooleanField(
+        choices=YES_NO_CHOICES,
+        verbose_name=_('Comissão Ativa?'))
 
     class Meta:
         verbose_name = _('Comissão')
diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py
--- a/sapl/comissoes/views.py
+++ b/sapl/comissoes/views.py
@@ -84,7 +84,7 @@ class ComissaoCrud(Crud):
     help_path = 'modulo_comissoes'
 
     class BaseMixin(CrudBaseMixin):
-        list_field_names = ['nome', 'sigla', 'tipo', 'data_criacao']
+        list_field_names = ['nome', 'sigla', 'tipo', 'data_criacao', 'ativa']
 
 
 class MateriasTramitacaoListView(ListView):


Test patch:
Repository: interlegis/sapl

Issue:
Erro em /parlamentar se a base está vazia. 
Espera-se que Legislaturas sejam cadastradas antes de qualquer parlamentar, porém, não seria comum um usuário dar clicadas gerais no sistema? Sim... Ao clicar em parlamentar, se a base estiver vazia, sem legislatura, a função `take_legislatura_idx` que está em na classe ParlamentarCrud, subclasse ListView, gera erro nesta linha `legislatura_id = legislaturas.first().id`

DICA: Sempre que usar first().[attr/metod] ou last().[attr/metod], use antes um exists().



Discussion:
Valeu. Vamos olhar isso asap


Resolving patch:
diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py
--- a/sapl/parlamentares/views.py
+++ b/sapl/parlamentares/views.py
@@ -1,4 +1,5 @@
 from django.contrib import messages
+from django.core.exceptions import ObjectDoesNotExist
 from django.core.urlresolvers import reverse_lazy
 from django.shortcuts import redirect
 from django.utils.datastructures import MultiValueDictKeyError
@@ -114,17 +115,21 @@ def take_legislatura_id(self):
             legislaturas = Legislatura.objects.all().order_by(
                 '-data_inicio', '-data_fim')
 
-            try:
-                legislatura_id = int(self.request.GET['periodo'])
-            except MultiValueDictKeyError:
-                legislatura_id = legislaturas.first().id
-
-            return legislatura_id
+            if legislaturas:
+                try:
+                    legislatura_id = int(self.request.GET['periodo'])
+                except MultiValueDictKeyError:
+                    legislatura_id = legislaturas.first().id
+                return legislatura_id
+            else:
+                return 0
 
         def get_queryset(self):
-            mandatos = Mandato.objects.filter(
-                legislatura_id=self.take_legislatura_id())
-            return mandatos
+            if self.take_legislatura_id() != 0:
+                mandatos = Mandato.objects.filter(
+                    legislatura_id=self.take_legislatura_id())
+                return mandatos
+            return []
 
         def get_rows(self, object_list):
             parlamentares = []


Test patch:
Repository: interlegis/sapl

Issue:
Não há paginação no resultado da pesquisa de Materia Legislativa
A paginação do resultado da pesquisa de Matéria Legislativa não está sendo mostrada. A paginação atual só mostra botões para página anterior e para a próxima, quando deveria aparecer os números das páginas.



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
@@ -1034,6 +1034,13 @@ def get_context_data(self, **kwargs):
         qr = self.request.GET.copy()
         if 'page' in qr:
             del qr['page']
+
+        paginator = context['paginator']
+        page_obj = context['page_obj']
+
+        context['page_range'] = make_pagination(
+            page_obj.number, paginator.num_pages)
+
         context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
 
         return context


Test patch:
Repository: interlegis/sapl

Issue:
Criar comando do manage.py para migração de dados e arrumar o que estiver falhando
Para facilitar o uso da migração da base de dados do SAPL 2.5 para o SAPL 3.1 é necessário a criação de um comando para o manage.py.

Além disso, por conta de mudanças recentes nas models, faz-se necessário ajustar o script de migração.



Discussion:

Resolving patch:
diff --git a/sapl/legacy/management/__init__.py b/sapl/legacy/management/__init__.py
new file mode 100644
diff --git a/sapl/legacy/management/commands/__init__.py b/sapl/legacy/management/commands/__init__.py
new file mode 100644
diff --git a/sapl/legacy/management/commands/migracao_25_31.py b/sapl/legacy/management/commands/migracao_25_31.py
new file mode 100644
--- /dev/null
+++ b/sapl/legacy/management/commands/migracao_25_31.py
@@ -0,0 +1,9 @@
+from django.core.management.base import BaseCommand
+from sapl.legacy import migration
+
+
+class Command(BaseCommand):
+    help = u'Faz a migração de dados do SAPL 2.5 para o SAPL 3.1'
+
+    def handle(self, *args, **options):
+        migration.migrate()


Test patch: