diff --git a/materia/forms.py b/materia/forms.py index 6f6587c7e..c986c423c 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -15,10 +15,9 @@ from norma.models import LegislacaoCitada, TipoNormaJuridica from sapl.settings import MAX_DOC_UPLOAD_SIZE from sapl.utils import RANGE_ANOS -from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, - DespachoInicial, DocumentoAcessorio, MateriaLegislativa, - Numeracao, Proposicao, Relatoria, TipoMateriaLegislativa, - Tramitacao) +from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial, + DocumentoAcessorio, MateriaLegislativa, Numeracao, + Proposicao, Relatoria, TipoMateriaLegislativa, Tramitacao) ANO_CHOICES = [('', '---------')] + RANGE_ANOS @@ -337,29 +336,7 @@ class NumeracaoForm(ModelForm): super(NumeracaoForm, self).__init__(*args, **kwargs) -class DespachoInicialForm(ModelForm): - - class Meta: - model = DespachoInicial - fields = ['comissao'] - - def __init__(self, excluir=False, *args, **kwargs): - - more = [] - if excluir: - more = [Submit('Excluir', 'Excluir')] - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset( - _('Adicionar Despacho Inicial'), - 'comissao', - form_actions(more=more) - ) - ) - super(DespachoInicialForm, self).__init__(*args, **kwargs) - - -class MateriaAnexadaForm(ModelForm): +class AnexadaForm(ModelForm): tipo = forms.ModelChoiceField( label='Tipo', @@ -372,90 +349,35 @@ class MateriaAnexadaForm(ModelForm): ano = forms.CharField(label='Ano', required=True) - class Meta: - model = Anexada - fields = ['tipo', 'numero', 'ano', - 'data_anexacao', 'data_desanexacao'] - widgets = { - 'data_anexacao': forms.DateInput(attrs={'class': 'dateinput'}), - 'data_desanexacao': forms.DateInput(attrs={'class': 'dateinput'}), - } - - def __init__(self, excluir=False, *args, **kwargs): - - row1 = crispy_layout_mixin.to_row( - [('tipo', 4), ('numero', 4), ('ano', 4)]) - row2 = crispy_layout_mixin.to_row( - [('data_anexacao', 6), ('data_desanexacao', 6)]) + def clean(self): + if self.errors: + return self.errors - more = [] - if excluir: - more = [Submit('Excluir', 'Excluir')] - - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset( - _('Anexar Matéria'), - row1, row2, - form_actions(more=more) - ) - ) - super(MateriaAnexadaForm, self).__init__( - *args, **kwargs) + cleaned_data = self.cleaned_data + try: + materia_anexada = MateriaLegislativa.objects.get( + numero=cleaned_data['numero'], + ano=cleaned_data['ano'], + tipo=cleaned_data['tipo']) + except ObjectDoesNotExist: + 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 -class AutoriaForm(ModelForm): - autor = forms.ModelChoiceField( - label=_('Autor'), - required=True, - queryset=Autor.objects.all().order_by('tipo', 'nome'), - ) - primeiro_autor = forms.ChoiceField( - label=_('Primeiro Autor'), - required=True, - choices=[(True, _('Sim')), (False, _('Não'))], - ) + return cleaned_data - materia_id = forms.CharField(widget=forms.HiddenInput(), required=False) + def save(self, commit=False): + anexada = super(AnexadaForm, self).save(commit) + anexada.materia_anexada = self.cleaned_data['materia_anexada'] + anexada.save() + return anexada class Meta: - model = Autoria - fields = ['autor', - 'primeiro_autor', - 'partido', - 'materia_id'] - - def clean(self): - if self.data['materia_id'] and self.data['autor']: - try: - materia = MateriaLegislativa.objects.get( - id=self.data['materia_id']) - Autoria.objects.get(autor=self.data['autor'], - materia=materia) - raise forms.ValidationError( - _('Essa autoria já foi adicionada!')) - except ObjectDoesNotExist: - pass - - def __init__(self, excluir=False, *args, **kwargs): - - row1 = crispy_layout_mixin.to_row( - [('autor', 4), ('primeiro_autor', 4), ('partido', 4)]) - - more = [] - if excluir: - more = [Submit('Excluir', 'Excluir')] - - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset( - _('Adicionar Autoria'), - row1, - form_actions(more=more) - ) - ) - super(AutoriaForm, self).__init__( - *args, **kwargs) + model = Anexada + fields = ['tipo', 'numero', 'ano', 'data_anexacao', 'data_desanexacao'] class RangeWidgetOverride(forms.MultiWidget): @@ -620,3 +542,25 @@ def filtra_tramitacao_destino_and_status(status, destino): status=status, unidade_tramitacao_destino=destino).distinct().values_list( 'materia_id', flat=True) + + +class DespachoInicialForm(ModelForm): + + class Meta: + model = DespachoInicial + fields = ['comissao'] + + def clean(self): + if self.errors: + return self.errors + + cleaned_data = self.cleaned_data + + if DespachoInicial.objects.filter( + materia=self.instance.materia, + comissao=self.cleaned_data['comissao'], + ).exists(): + msg = _('Esse Despacho já foi cadastrado.') + raise ValidationError(msg) + + return self.cleaned_data diff --git a/materia/layouts.yaml b/materia/layouts.yaml index 0a3270cd2..958edc210 100644 --- a/materia/layouts.yaml +++ b/materia/layouts.yaml @@ -37,11 +37,14 @@ MateriaLegislativa: - observacao Anexada: - Matéria Legislativa: - - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + Matéria Anexada: + - tipo numero ano - data_anexacao data_desanexacao + +AnexadaDetail: Matéria Anexada: - - tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME + - materia_principal + - materia_anexada - data_anexacao data_desanexacao TipoAutor: @@ -55,7 +58,7 @@ Autor: Autoria: Autoria: - - tip_autor_FIXME nom_autor_FIXME primeiro_autor + - autor partido primeiro_autor DocumentoAcessorio: Documento Acessório: @@ -109,3 +112,7 @@ Tramitacao: - status turno urgente - unidade_tramitacao_destino data_encaminhamento data_fim_prazo - texto + +DespachoInicial: + Despacho Inicial: + - comissao diff --git a/materia/migrations/0029_auto_20160428_1020.py b/materia/migrations/0029_auto_20160428_1020.py new file mode 100644 index 000000000..2cdd68c76 --- /dev/null +++ b/materia/migrations/0029_auto_20160428_1020.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 13:20 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0028_auto_20160419_1000'), + ] + + operations = [ + migrations.AlterField( + model_name='autoria', + name='primeiro_autor', + field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], verbose_name='Primeiro Autor'), + ), + ] diff --git a/materia/models.py b/materia/models.py index d80d751c4..28dc52e80 100644 --- a/materia/models.py +++ b/materia/models.py @@ -229,7 +229,8 @@ class Autoria(models.Model): partido = models.ForeignKey(Partido, blank=True, null=True) autor = models.ForeignKey(Autor) materia = models.ForeignKey(MateriaLegislativa) - primeiro_autor = models.BooleanField(verbose_name=_('Primeiro Autor')) + primeiro_autor = models.BooleanField(verbose_name=_('Primeiro Autor'), + choices=YES_NO_CHOICES) class Meta: verbose_name = _('Autoria') diff --git a/materia/tests/test_materia.py b/materia/tests/test_materia.py index 71d7ccb05..5cf871795 100644 --- a/materia/tests/test_materia.py +++ b/materia/tests/test_materia.py @@ -97,7 +97,7 @@ def test_materia_anexada_submit(client): materia_anexada = MateriaLegislativa.objects.get(numero=32, ano=2004) # Testa POST - response = client.post(reverse('materia:materia_anexada', + response = client.post(reverse('materia:anexada_create', kwargs={'pk': materia_principal.pk}), {'tipo': materia_anexada.tipo.pk, 'numero': materia_anexada.numero, @@ -124,7 +124,7 @@ def test_autoria_submit(client): autor = mommy.make(Autor, tipo=tipo_autor, nome='Autor Teste') # Testa POST - response = client.post(reverse('materia:autoria', + response = client.post(reverse('materia:autoria_create', kwargs={'pk': materia_principal.pk}), {'autor': autor.pk, 'primeiro_autor': True, @@ -154,7 +154,7 @@ def test_despacho_inicial_submit(client): data_criacao='2016-03-18') # Testa POST - response = client.post(reverse('materia:despacho_inicial', + response = client.post(reverse('materia:despachoinicial_create', kwargs={'pk': materia_principal.pk}), {'comissao': comissao.pk, 'salvar': 'salvar'}, @@ -286,7 +286,7 @@ def test_tramitacao_submit(client): @pytest.mark.django_db(transaction=False) def test_form_errors_anexada(client): materia_principal = make_materia_principal() - response = client.post(reverse('materia:materia_anexada', + response = client.post(reverse('materia:anexada_create', kwargs={'pk': materia_principal.pk}), {'salvar': 'salvar'}, follow=True) @@ -305,7 +305,7 @@ def test_form_errors_anexada(client): def test_form_errors_autoria(client): materia_principal = make_materia_principal() - response = client.post(reverse('materia:autoria', + response = client.post(reverse('materia:autoria_create', kwargs={'pk': materia_principal.pk}), {'materia_id': materia_principal.pk, 'partido': '', @@ -315,15 +315,13 @@ def test_form_errors_autoria(client): assert (response.context_data['form'].errors['autor'] == ['Este campo é obrigatório.']) - assert (response.context_data['form'].errors['primeiro_autor'] == - ['Este campo é obrigatório.']) @pytest.mark.django_db(transaction=False) def test_form_errors_despacho_inicial(client): materia_principal = make_materia_principal() - response = client.post(reverse('materia:despacho_inicial', + response = client.post(reverse('materia:despachoinicial_create', kwargs={'pk': materia_principal.pk}), {'salvar': 'salvar'}, follow=True) diff --git a/materia/urls.py b/materia/urls.py index d39828694..012039406 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -2,12 +2,10 @@ from django.conf.urls import include, url from materia.views import (AcompanhamentoConfirmarView, AcompanhamentoExcluirView, - AcompanhamentoMateriaView, AutorCrud, - AutoriaEditView, AutoriaView, - DespachoInicialEditView, DespachoInicialView, + AcompanhamentoMateriaView, AnexadaCrud, AutorCrud, + AutoriaCrud, DespachoInicialCrud, DocumentoAcessorioEditView, DocumentoAcessorioView, LegislacaoCitadaEditView, LegislacaoCitadaView, - MateriaAnexadaEditView, MateriaAnexadaView, MateriaLegislativaCrud, MateriaLegislativaPesquisaView, MateriaTaView, NumeracaoEditView, NumeracaoView, OrgaoCrud, @@ -25,7 +23,10 @@ from .apps import AppConfig app_name = AppConfig.name urlpatterns = [ - url(r'^materia/', include(MateriaLegislativaCrud.get_urls())), + url(r'^materia/', include(MateriaLegislativaCrud.get_urls() + + AnexadaCrud.get_urls() + + AutoriaCrud.get_urls() + + DespachoInicialCrud.get_urls())), url(r'^materia/(?P[0-9]+)/ta$', @@ -52,14 +53,6 @@ urlpatterns = [ url(r'^sistema/materia/status-tramitacao/', include(StatusTramitacaoCrud.get_urls())), url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())), - url(r'^materia/(?P\d+)/materia-anexada$', - MateriaAnexadaView.as_view(), name='materia_anexada'), - url(r'^materia/(?P\d+)/materia-anexada/(?P\d+)/edit', - MateriaAnexadaEditView.as_view(), name='materia_anexada_edit'), - url(r'^materia/(?P\d+)/despacho-inicial$', - DespachoInicialView.as_view(), name='despacho_inicial'), - url(r'^materia/(?P\d+)/despacho-inicial/(?P\d+)/edit', - DespachoInicialEditView.as_view(), name='despacho_inicial_edit'), url(r'^materia/(?P\d+)/legislacao-citada$', LegislacaoCitadaView.as_view(), name='legislacao_citada'), url(r'^materia/(?P\d+)/legislacao-citada/(?P\d+)/edit', @@ -78,10 +71,6 @@ urlpatterns = [ TramitacaoView.as_view(), name='tramitacao_materia'), url(r'^materia/(?P\d+)/tramitacao/(?P\d+)/edit$', TramitacaoEditView.as_view(), name='tramitacao_edit'), - url(r'^materia/(?P\d+)/autoria$', - AutoriaView.as_view(), name='autoria'), - url(r'^materia/(?P\d+)/autoria/(?P\d+)/edit$', - AutoriaEditView.as_view(), name='autoria_edit'), url(r'^materia/(?P\d+)/relatoria/(?P\d+)/edit$', RelatoriaEditView.as_view(), name='relatoria_edit'), url(r'^materia/proposicao$', diff --git a/materia/views.py b/materia/views.py index b47589a85..0eeb7f268 100644 --- a/materia/views.py +++ b/materia/views.py @@ -15,19 +15,20 @@ from django.views.generic import CreateView, FormView, ListView, TemplateView from django_filters.views import FilterView import crud.base +import crud.masterdetail from base.models import CasaLegislativa from comissoes.models import Comissao, Composicao from compilacao.views import IntegracaoTaView from crud.base import Crud, make_pagination +from crud.masterdetail import MasterDetailCrud from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica -from parlamentares.models import Partido from sapl.utils import get_base_url -from .forms import (AcompanhamentoMateriaForm, AutoriaForm, +from .forms import (AcompanhamentoMateriaForm, AnexadaForm, DespachoInicialForm, DocumentoAcessorioForm, - LegislacaoCitadaForm, MateriaAnexadaForm, - MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm, - RelatoriaForm, TramitacaoForm, filtra_tramitacao_destino, + LegislacaoCitadaForm, MateriaLegislativaFilterSet, + NumeracaoForm, ProposicaoForm, RelatoriaForm, + TramitacaoForm, filtra_tramitacao_destino, filtra_tramitacao_destino_and_status, filtra_tramitacao_status) from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, @@ -46,7 +47,6 @@ TipoFimRelatoriaCrud = Crud.build(TipoFimRelatoria, 'fim_relatoria') AnexadaCrud = Crud.build(Anexada, '') TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor') AutorCrud = Crud.build(Autor, 'autor') -AutoriaCrud = Crud.build(Autoria, '') DocumentoAcessorioCrud = Crud.build(DocumentoAcessorio, '') NumeracaoCrud = Crud.build(Numeracao, '') OrgaoCrud = Crud.build(Orgao, 'orgao') @@ -57,243 +57,55 @@ StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao') UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') TramitacaoCrud = Crud.build(Tramitacao, '') +AutoriaCrud = MasterDetailCrud.build(Autoria, 'materia', '') -class MateriaLegislativaCrud(Crud): - model = MateriaLegislativa - help_path = 'materia_legislativa' - class BaseMixin(crud.base.CrudBaseMixin): - list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao'] +class DespachoInicialCrud(MasterDetailCrud): + model = DespachoInicial + parent_field = 'materia' + help_path = '' + class CreateView(MasterDetailCrud.CreateView): + form_class = DespachoInicialForm -class MateriaAnexadaView(FormView): - template_name = "materia/materia_anexada.html" - form_class = MateriaAnexadaForm - form_valid_message = _('Matéria anexada com sucesso!') - - def get(self, request, *args, **kwargs): - form = MateriaAnexadaForm() - materia = MateriaLegislativa.objects.get( - id=kwargs['pk']) - anexadas = Anexada.objects.filter( - materia_principal_id=kwargs['pk']) - - return self.render_to_response({'object': materia, - 'anexadas': anexadas, - 'form': form}) - - def form_invalid(self, - form, - request, - mat_principal, - anexadas, - msg='Erro ineseperado.'): - messages.add_message(request, messages.ERROR, msg) - return self.render_to_response( - {'form': form, - 'object': mat_principal, - 'anexadas': anexadas}) - - def post(self, request, *args, **kwargs): - form = self.get_form() - - anexadas = Anexada.objects.filter( - materia_principal_id=kwargs['pk']) - mat_principal = MateriaLegislativa.objects.get( - id=kwargs['pk']) - - if form.is_valid(): - tipo = form.cleaned_data['tipo'] - numero = form.cleaned_data['numero'] - ano = form.cleaned_data['ano'] - data_anexacao = form.cleaned_data['data_anexacao'] - data_desanexacao = form.cleaned_data['data_desanexacao'] - - try: - mat_anexada = MateriaLegislativa.objects.get( - numero=numero, ano=ano, tipo=tipo) - - if mat_principal.tipo == mat_anexada.tipo: - msg = _('A matéria a ser anexada não pode ser do mesmo' - ' tipo da matéria principal.') - self.form_invalid( - form, request, mat_principal, anexadas, msg) - anexada = Anexada() - anexada.materia_principal = mat_principal - anexada.materia_anexada = mat_anexada - anexada.data_anexacao = data_anexacao - if data_desanexacao: - anexada.data_desanexacao = data_desanexacao - - anexada.save() - except ObjectDoesNotExist: - msg = _('A matéria a ser anexada não existe no cadastro' - ' de matérias legislativas.') - self.form_invalid(form, request, mat_principal, anexadas, msg) - return self.form_valid(form) - else: - return self.render_to_response( - {'form': form, - 'object': mat_principal, - 'anexadas': anexadas}) + class UpdateView(MasterDetailCrud.UpdateView): + form_class = DespachoInicialForm - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:materia_anexada', kwargs={'pk': pk}) +class AnexadaCrud(MasterDetailCrud): + model = Anexada + parent_field = 'materia_principal' + help_path = '' -class MateriaAnexadaEditView(FormView): - template_name = "materia/materia_anexada_edit.html" - form_class = MateriaAnexadaForm + class BaseMixin(MasterDetailCrud.BaseMixin): + list_field_names = ['materia_anexada', 'data_anexacao'] - def form_invalid(self, - form, - request, - mat_principal, - msg='Erro ineseperado.'): - messages.add_message(request, messages.ERROR, msg) - return self.render_to_response( - {'form': form, 'object': mat_principal}) + class CreateView(MasterDetailCrud.CreateView): + form_class = AnexadaForm - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - anexada = Anexada.objects.get(id=kwargs['id']) + class UpdateView(MasterDetailCrud.UpdateView): + form_class = AnexadaForm - data = {} - data['tipo'] = anexada.materia_anexada.tipo - data['numero'] = anexada.materia_anexada.numero - data['ano'] = anexada.materia_anexada.ano - data['data_anexacao'] = anexada.data_anexacao - data['data_desanexacao'] = anexada.data_desanexacao + def get_initial(self, **kwargs): + self.initial['tipo'] = self.object.materia_anexada.tipo.id + self.initial['numero'] = self.object.materia_anexada.numero + self.initial['ano'] = self.object.materia_anexada.ano - form = MateriaAnexadaForm(initial=data, excluir=True) + return self.initial - return self.render_to_response( - {'object': materia, - 'form': form}) + class DetailView(MasterDetailCrud.DetailView): - def post(self, request, *args, **kwargs): - form = self.get_form() + @property + def layout_key(self): + return 'AnexadaDetail' - anexada = Anexada.objects.get(id=kwargs['id']) - mat_principal = MateriaLegislativa.objects.get( - id=kwargs['pk']) - if form.is_valid(): - if 'Excluir' in request.POST: - anexada.delete() - return self.form_valid(form) - elif 'salvar' in request.POST: - tipo = form.cleaned_data['tipo'] - numero = form.cleaned_data['numero'] - ano = form.cleaned_data['ano'] - data_anexacao = form.cleaned_data['data_anexacao'] - - if 'data_desanexacao' in request.POST: - data_desanexacao = form.cleaned_data['data_desanexacao'] - - try: - mat_anexada = MateriaLegislativa.objects.get( - numero=numero, ano=ano, tipo=tipo) - - if mat_principal.tipo == mat_anexada.tipo: - msg = _('A matéria a ser anexada não pode ser do mesmo \ - tipo da matéria principal.') - self.form_invalid(form, request, mat_principal, msg) - - anexada.materia_principal = mat_principal - anexada.materia_anexada = mat_anexada - anexada.data_anexacao = data_anexacao - - if data_desanexacao: - anexada.data_desanexacao = data_desanexacao - - anexada.save() - return self.form_valid(form) - - except ObjectDoesNotExist: - msg = _('A matéria a ser anexada não existe no cadastro \ - de matérias legislativas.') - self.form_invalid(form, request, mat_principal, msg) - else: - return self.render_to_response( - {'form': form, - 'materia': mat_principal}) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia_anexada', kwargs={'pk': pk}) - - -class DespachoInicialView(CreateView): - template_name = "materia/despacho_inicial.html" - form_class = DespachoInicialForm - - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - despacho = DespachoInicial.objects.filter(materia_id=materia.id) - form = DespachoInicialForm() - - return self.render_to_response( - {'object': materia, - 'form': form, - 'despachos': despacho}) - - def post(self, request, *args, **kwargs): - form = self.get_form() - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - despacho = DespachoInicial.objects.filter(materia_id=materia.id) - - if form.is_valid(): - despacho = DespachoInicial() - despacho.comissao = form.cleaned_data['comissao'] - despacho.materia = materia - despacho.save() - return redirect(self.get_success_url()) - else: - return self.render_to_response({'form': form, - 'object': materia, - 'despachos': despacho}) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:despacho_inicial', kwargs={'pk': pk}) - - -class DespachoInicialEditView(CreateView): - template_name = "materia/despacho_inicial_edit.html" - form_class = DespachoInicialForm - - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - despacho = DespachoInicial.objects.get(id=kwargs['id']) - form = DespachoInicialForm(instance=despacho, excluir=True) - - return self.render_to_response({'object': materia, 'form': form}) - - def post(self, request, *args, **kwargs): - form = self.get_form() - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - despacho = DespachoInicial.objects.get(id=kwargs['id']) - - if form.is_valid(): - if 'Excluir' in request.POST: - despacho.delete() - elif 'salvar' in request.POST: - despacho.comissao = form.cleaned_data['comissao'] - despacho.materia = materia - despacho.save() - return redirect(self.get_success_url()) - else: - return self.render_to_response( - {'object': materia, - 'form': form, - 'despacho': despacho, - 'comissoes': Comissao.objects.all()}) +class MateriaLegislativaCrud(Crud): + model = MateriaLegislativa + help_path = 'materia_legislativa' - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:despacho_inicial', kwargs={'pk': pk}) + class BaseMixin(crud.base.CrudBaseMixin): + list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao'] class LegislacaoCitadaView(FormView): @@ -1087,87 +899,6 @@ class TramitacaoEditView(CreateView): return reverse('materia:tramitacao_materia', kwargs={'pk': pk}) -class AutoriaView(CreateView): - template_name = "materia/autoria.html" - form_class = AutoriaForm - form_valid_message = _('Autoria cadastrada com sucesso!') - model = Autoria - - def get_initial(self): - initial = super(AutoriaView, self).get_initial() - initial['materia_id'] = self.kwargs['pk'] - return initial - - def get_context_data(self, **kwargs): - context = super(AutoriaView, self).get_context_data(**kwargs) - - materia = MateriaLegislativa.objects.get(id=self.kwargs['pk']) - autorias = Autoria.objects.filter(materia=materia) - - context.update({'object': materia, - 'autorias': autorias}) - return context - - def form_valid(self, form): - materia = MateriaLegislativa.objects.get(id=form.data['materia_id']) - if 'salvar' in self.request.POST: - autoria = Autoria() - autoria.autor = Autor.objects.get(id=form.data['autor']) - autoria.materia = materia - autoria.primeiro_autor = form.data['primeiro_autor'] - - if form.data['partido']: - filiacao_autor = Partido.objects.get(id=form.data['partido']) - autoria.partido = filiacao_autor - - autoria.save() - - return redirect(self.get_success_url()) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:autoria', kwargs={'pk': pk}) - - -class AutoriaEditView(CreateView): - template_name = "materia/autoria_edit.html" - form_class = AutoriaForm - - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - autoria = Autoria.objects.get(id=self.kwargs['id']) - form = AutoriaForm(instance=autoria, excluir=True) - - return self.render_to_response( - {'object': materia, - 'form': form}) - - def post(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - form = self.get_form() - if form.is_valid(): - autoria = Autoria.objects.get(id=self.kwargs['id']) - if 'salvar' in request.POST: - autoria.autor = Autor.objects.get(id=form.data['autor']) - autoria.primeiro_autor = form.data['primeiro_autor'] - if 'partido' in form.data: - autoria.partido = Partido.objects.get( - id=form.data['partido']) - autoria.materia = materia - autoria.save() - elif 'Excluir' in request.POST: - autoria.delete() - return redirect(self.get_success_url()) - else: - return self.render_to_response( - {'object': materia, - 'form': form}) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:autoria', kwargs={'pk': pk}) - - class ProposicaoListView(ListView): template_name = "materia/proposicao/proposicao_list.html" paginate_by = 10 diff --git a/parlamentares/migrations/0017_remove_parlamentar_unidade_deliberativa.py b/parlamentares/migrations/0017_remove_parlamentar_unidade_deliberativa.py new file mode 100644 index 000000000..be2e861fe --- /dev/null +++ b/parlamentares/migrations/0017_remove_parlamentar_unidade_deliberativa.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-04-28 13:20 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0016_auto_20160404_1409'), + ] + + operations = [ + migrations.RemoveField( + model_name='parlamentar', + name='unidade_deliberativa', + ), + ] diff --git a/templates/materia/autoria.html b/templates/materia/autoria.html deleted file mode 100644 index d1e79e695..000000000 --- a/templates/materia/autoria.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "materia/materialegislativa_detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - -
- Autorias - - - - - - - - - - {% for a in autorias %} - - - - - - - {% endfor %} -
Nome AutorTipo AutorPrimeiro AutorPartido Autor
{{a.autor}}{{a.autor.tipo.descricao}}{{a.primeiro_autor|yesno:"Sim,Não"}}{{a.partido.sigla|default_if_none:"Não Informado"}}
-
- {% crispy form %} -
-{% endblock %} diff --git a/templates/materia/autoria_edit.html b/templates/materia/autoria_edit.html deleted file mode 100644 index 683f9f8ca..000000000 --- a/templates/materia/autoria_edit.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "materia/materialegislativa_detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} - {% crispy form %} -{% endblock %} diff --git a/templates/materia/despacho_inicial.html b/templates/materia/despacho_inicial.html deleted file mode 100644 index 908bb09dd..000000000 --- a/templates/materia/despacho_inicial.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "materia/materialegislativa_detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - -
- Despachos - - - - - - - - {% for d in despachos %} - - - - - {% endfor %} -
ComissãoSigla
{{d.comissao.nome}}{{d.comissao.sigla}}
-
- {% crispy form %} -
-{% endblock %} diff --git a/templates/materia/despacho_inicial_edit.html b/templates/materia/despacho_inicial_edit.html deleted file mode 100644 index 338595dc0..000000000 --- a/templates/materia/despacho_inicial_edit.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "materia/materialegislativa_detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} - {% crispy form %} -{% endblock %} diff --git a/templates/materia/documento_acessorio.html b/templates/materia/documento_acessorio.html index 438cfb118..14c3b4eb1 100644 --- a/templates/materia/documento_acessorio.html +++ b/templates/materia/documento_acessorio.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/documento_acessorio_edit.html b/templates/materia/documento_acessorio_edit.html index 338595dc0..05ddec8c2 100644 --- a/templates/materia/documento_acessorio_edit.html +++ b/templates/materia/documento_acessorio_edit.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/legislacao_citada.html b/templates/materia/legislacao_citada.html index 9ed99f31f..37381e79e 100644 --- a/templates/materia/legislacao_citada.html +++ b/templates/materia/legislacao_citada.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/legislacao_citada_edit.html b/templates/materia/legislacao_citada_edit.html index 9480fb3a2..f819a0a63 100644 --- a/templates/materia/legislacao_citada_edit.html +++ b/templates/materia/legislacao_citada_edit.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/materia_anexada.html b/templates/materia/materia_anexada.html deleted file mode 100644 index 7eb6b20c6..000000000 --- a/templates/materia/materia_anexada.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "materia/materialegislativa_detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - - -
- Matérias Anexadas - - - - - - - - - {% for a in anexadas %} - - - - - - {% endfor %} -
Matéria AnexadaData AnexaçãoData Desanexação
{{a.materia_anexada.tipo.sigla}} {{a.materia_anexada.numero}}/{{a.materia_anexada.ano}}{{a.data_anexacao|date:"d/m/Y"}}{{a.data_desanexacao|date:"d/m/Y"}}
-
-

- {% crispy form %} -
-{% endblock %} diff --git a/templates/materia/materia_anexada_edit.html b/templates/materia/materia_anexada_edit.html deleted file mode 100644 index 338595dc0..000000000 --- a/templates/materia/materia_anexada_edit.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "materia/materialegislativa_detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} - {% crispy form %} -{% endblock %} diff --git a/templates/materia/materialegislativa_detail.html b/templates/materia/materialegislativa_detail.html deleted file mode 100644 index 73a083226..000000000 --- a/templates/materia/materialegislativa_detail.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "crud/detail.html" %} diff --git a/templates/materia/materialegislativa_filter.html b/templates/materia/materialegislativa_filter.html index bb3f187b8..e046d19dd 100644 --- a/templates/materia/materialegislativa_filter.html +++ b/templates/materia/materialegislativa_filter.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %}{% endblock %} diff --git a/templates/materia/numeracao.html b/templates/materia/numeracao.html index 1956a4fd4..518ee133f 100644 --- a/templates/materia/numeracao.html +++ b/templates/materia/numeracao.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/numeracao_edit.html b/templates/materia/numeracao_edit.html index 6cf29f2e6..139dd4117 100644 --- a/templates/materia/numeracao_edit.html +++ b/templates/materia/numeracao_edit.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/relatoria.html b/templates/materia/relatoria.html index 778b5f355..6368f385d 100644 --- a/templates/materia/relatoria.html +++ b/templates/materia/relatoria.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/relatoria_edit.html b/templates/materia/relatoria_edit.html index 4c6af9664..d694dff93 100644 --- a/templates/materia/relatoria_edit.html +++ b/templates/materia/relatoria_edit.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/subnav.yaml b/templates/materia/subnav.yaml index 049f16388..45c21ec0a 100644 --- a/templates/materia/subnav.yaml +++ b/templates/materia/subnav.yaml @@ -1,11 +1,11 @@ - title: Início url: materialegislativa_detail - title: Anexada - url: materia_anexada + url: anexada_list - title: Autoria - url: autoria + url: autoria_list - title: Despacho Inicial - url: despacho_inicial + url: despachoinicial_list - title: Documento Acessório url: documento_acessorio - title: Legislação Citada diff --git a/templates/materia/tramitacao.html b/templates/materia/tramitacao.html index a879dc5a9..33ed398bd 100644 --- a/templates/materia/tramitacao.html +++ b/templates/materia/tramitacao.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %} diff --git a/templates/materia/tramitacao_edit.html b/templates/materia/tramitacao_edit.html index 338595dc0..05ddec8c2 100644 --- a/templates/materia/tramitacao_edit.html +++ b/templates/materia/tramitacao_edit.html @@ -1,4 +1,4 @@ -{% extends "materia/materialegislativa_detail.html" %} +{% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block actions %} {% endblock %}