Repository: interlegis/sapl

Issue:
Usar crud em comissão



Discussion:

Resolving patch:
diff --git a/comissoes/forms.py b/comissoes/forms.py
--- a/comissoes/forms.py
+++ b/comissoes/forms.py
@@ -8,100 +8,7 @@
 from crispy_layout_mixin import form_actions
 from parlamentares.models import Filiacao
 
-from .models import Comissao, Participacao
-
-
-class CadastrarComissaoForm(ModelForm):
-
-    class Meta:
-
-        model = Comissao
-        fields = ['nome',
-                  'tipo',
-                  'sigla',
-                  'data_criacao',
-                  'data_extincao',
-                  'unidade_deliberativa',
-
-                  'local_reuniao',
-                  'agenda_reuniao',
-                  'telefone_reuniao',
-                  'endereco_secretaria',
-                  'telefone_secretaria',
-                  'fax_secretaria',
-                  'secretario',
-                  'email',
-                  'finalidade',
-
-                  'apelido_temp',
-                  'data_instalacao_temp',
-                  'data_final_prevista_temp',
-                  'data_prorrogada_temp',
-                  'data_fim_comissao']
-
-    def __init__(self, *args, **kwargs):
-
-        row1 = crispy_layout_mixin.to_row(
-            [('nome', 8),
-             ('sigla', 4)])
-
-        row2 = crispy_layout_mixin.to_row(
-            [('tipo', 3),
-             ('data_criacao', 3),
-             ('unidade_deliberativa', 3),
-             ('data_extincao', 3)])
-
-        row3 = crispy_layout_mixin.to_row(
-            [('local_reuniao', 4),
-             ('agenda_reuniao', 4),
-             ('telefone_reuniao', 4)])
-
-        row4 = crispy_layout_mixin.to_row(
-            [('endereco_secretaria', 4),
-             ('telefone_secretaria', 4),
-             ('fax_secretaria', 4)])
-
-        row5 = crispy_layout_mixin.to_row(
-            [('secretario', 6),
-             ('email', 6)])
-
-        row6 = crispy_layout_mixin.to_row(
-            [('finalidade', 12)])
-
-        row7 = crispy_layout_mixin.to_row(
-            [('apelido_temp', 9),
-             ('data_instalacao_temp', 3)])
-
-        row8 = crispy_layout_mixin.to_row(
-            [('data_final_prevista_temp', 4),
-             ('data_prorrogada_temp', 4),
-             ('data_fim_comissao', 4)])
-
-        self.helper = FormHelper()
-        self.helper.layout = Layout(
-            Fieldset(
-                _('Cadastrar Comissão'),
-                Fieldset(
-                    _('Dados Básicos'),
-                    row1,
-                    row2
-                ),
-                Fieldset(
-                    _('Dados Complementares'),
-                    row3,
-                    row4,
-                    row5,
-                    row6
-                ),
-                Fieldset(
-                    'Temporária',
-                    row7,
-                    row8
-                ),
-                form_actions()
-            )
-        )
-        super(CadastrarComissaoForm, self).__init__(*args, **kwargs)
+from .models import Participacao
 
 
 class ComposicaoForm(forms.Form):
diff --git a/comissoes/urls.py b/comissoes/urls.py
--- a/comissoes/urls.py
+++ b/comissoes/urls.py
@@ -1,39 +1,30 @@
 from django.conf.urls import include, url
 
-from comissoes.views import (CadastrarComissaoView, CargoCrud, ComissaoCrud,
+from comissoes.views import (CargoCrud, ComissaoCrud,
                              ComissaoParlamentarEditView,
                              ComissaoParlamentarIncluirView, ComposicaoView,
-                             MateriasTramitacaoListView, MateriasView,
-                             PeriodoComposicaoCrud, ReunioesView,
+                             MateriasTramitacaoListView, PeriodoComposicaoCrud,
                              TipoComissaoCrud)
 
 from .apps import AppConfig
 
 app_name = AppConfig.name
 
-comissao_url_patterns = ComissaoCrud.get_urls() + [
-    url(r'^(?P<pk>\d+)/composicao$',
+urlpatterns = [
+    url(r'^comissoes/', include(ComissaoCrud.get_urls())),
+
+    url(r'^comissoes/(?P<pk>\d+)/composicao$',
         ComposicaoView.as_view(), name='composicao'),
-    url(r'^(?P<pk>\d+)/materias-em-tramitacao$',
+    url(r'^comissoes/(?P<pk>\d+)/materias-em-tramitacao$',
         MateriasTramitacaoListView.as_view(), name='materias_em_tramitacao'),
-    url(r'^(?P<pk>\d+)/composicao/(?P<id>\d+)/parlamentar$',
+
+    url(r'^comissoes/(?P<pk>\d+)/composicao/(?P<id>\d+)/parlamentar$',
         ComissaoParlamentarIncluirView.as_view(),
         name='comissao_parlamentar'),
-    url(r'^(?P<pk>\d+)/composicao/(?P<cd>\d+)/parlamentar/(?P<id>\d+)/edit$',
+    url(r'''^comissoes/(?P<pk>\d+)/composicao/(?P<cd>\d+)/
+        parlamentar/(?P<id>\d+)/edit$''',
         ComissaoParlamentarEditView.as_view(),
         name='comissao_parlamentar_edit'),
-    url(r'^(?P<pk>\d+)/materias$',
-        MateriasView.as_view(), name='materias'),
-    url(r'^(?P<pk>\d+)/reunioes$',
-        ReunioesView.as_view(), name='reunioes'),
-    url(r'^cadastrar-comissao$',
-        CadastrarComissaoView.as_view(), name='cadastrar_comissao'),
-]
-
-app_name = AppConfig.name
-
-urlpatterns = [
-    url(r'^comissoes/', include(comissao_url_patterns)),
 
     url(r'^sistema/comissoes/cargo/', include(CargoCrud.get_urls())),
     url(r'^sistema/comissoes/periodo-composicao/',
diff --git a/comissoes/views.py b/comissoes/views.py
--- a/comissoes/views.py
+++ b/comissoes/views.py
@@ -1,27 +1,28 @@
 from django.contrib import messages
-from django.core.urlresolvers import reverse, reverse_lazy
+from django.core.urlresolvers import reverse
 from django.utils.translation import ugettext_lazy as _
-from django.views.generic import CreateView, FormView, ListView
+from django.views.generic import FormView, ListView
 
+import crud.base
 from crud.base import Crud
 from materia.models import Tramitacao
 from parlamentares.models import Filiacao
 
-from .forms import (CadastrarComissaoForm, ComposicaoForm,
-                    ParticipacaoCadastroForm)
+from .forms import ComposicaoForm, ParticipacaoCadastroForm
 from .models import (CargoComissao, Comissao, Composicao, Participacao,
                      Periodo, TipoComissao)
 
 CargoCrud = Crud.build(CargoComissao, 'cargo_comissao')
 PeriodoComposicaoCrud = Crud.build(Periodo, 'periodo_composicao_comissao')
 TipoComissaoCrud = Crud.build(TipoComissao, 'tipo_comissao')
-ComissaoCrud = Crud.build(Comissao, 'modulo_comissoes')
 
 
-class CadastrarComissaoView(CreateView):
-    template_name = "comissoes/cadastrar_comissao.html"
-    form_class = CadastrarComissaoForm
-    success_url = reverse_lazy('comissoes:comissao_list')
+class ComissaoCrud(Crud):
+    model = Comissao
+    help_path = 'modulo_comissoes'
+
+    class BaseMixin(crud.base.BaseMixin):
+        list_field_names = ['nome', 'sigla', 'tipo', 'data_criacao']
 
 
 class ComposicaoView(FormView):
@@ -29,7 +30,6 @@ class ComposicaoView(FormView):
 
     def get(self, request, *args, **kwargs):
         form = ComposicaoForm()
-
         composicoes = Composicao.objects.filter(
             comissao_id=self.kwargs['pk']).order_by('-periodo')
         participacoes = Participacao.objects.all().order_by('parlamentar')
@@ -66,14 +66,6 @@ def post(self, request, *args, **kwargs):
             'object': Comissao.objects.get(id=self.kwargs['pk'])})
 
 
-class MateriasView(ComissaoCrud.CrudDetailView):
-    template_name = 'comissoes/materias.html'
-
-
-class ReunioesView(ComissaoCrud.CrudDetailView):
-    template_name = 'comissoes/reunioes.html'
-
-
 class ComissaoParlamentarIncluirView(FormView):
     template_name = "comissoes/comissao_parlamentar.html"
 


Test patch:
diff --git a/comissoes/test_comissoes.py b/comissoes/test_comissoes.py
--- a/comissoes/test_comissoes.py
+++ b/comissoes/test_comissoes.py
@@ -96,7 +96,7 @@ def test_incluir_comissao_submit(client):
                       sigla='T',
                       nome='Teste')
 
-    response = client.post(reverse('comissoes:cadastrar_comissao'),
+    response = client.post(reverse('comissoes:comissao_create'),
                            {'tipo': tipo.pk,
                             'nome': 'Comissão Teste',
                             'sigla': 'CT',
@@ -113,7 +113,7 @@ def test_incluir_comissao_submit(client):
 @pytest.mark.django_db(transaction=False)
 def test_incluir_comissao_errors(client):
 
-    response = client.post(reverse('comissoes:cadastrar_comissao'),
+    response = client.post(reverse('comissoes:comissao_create'),
                            {'salvar': 'salvar'},
                            follow=True)
 
diff --git a/materia/test_materia_urls.py b/materia/test_materia_urls.py
--- a/materia/test_materia_urls.py
+++ b/materia/test_materia_urls.py
@@ -1,6 +1,5 @@
 import pytest
 from django.core.urlresolvers import reverse
-import pytest
 
 
 @pytest.mark.parametrize("test_input,kwargs,expected", [