From f3d1a9925a16a7e15ef864430d43f28377efde42 Mon Sep 17 00:00:00 2001 From: Talitha Pumar Date: Thu, 1 Mar 2018 11:45:54 -0300 Subject: [PATCH] 1664 fix numeracao materia legislativa (#1726) * Fix #1714 * Fixes #1718 * Fix #1718 * Progress * Fix #1664 * Fix #1664 * Fix #1664 --- sapl/materia/forms.py | 2 +- sapl/materia/tests/test_materia.py | 75 ++++++++++++++++++++++++++++++ sapl/materia/urls.py | 2 +- sapl/materia/views.py | 6 ++- 4 files changed, 81 insertions(+), 4 deletions(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 5ee44e1c2..6ef99995b 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1575,7 +1575,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): except AttributeError: pass - tipo = proposicao.tipo.tipo_conteudo_related + tipo = self.instance.tipo.tipo_conteudo_related if tipo.sequencia_numeracao: numeracao = tipo.sequencia_numeracao diff --git a/sapl/materia/tests/test_materia.py b/sapl/materia/tests/test_materia.py index c0a0358d6..ff8f89ad6 100644 --- a/sapl/materia/tests/test_materia.py +++ b/sapl/materia/tests/test_materia.py @@ -1,10 +1,12 @@ import pytest +from django.db.models import Max from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType from django.core.files.uploadedfile import SimpleUploadedFile from django.core.urlresolvers import reverse from model_mommy import mommy from sapl.base.models import Autor, TipoAutor +from sapl.parlamentares.models import Legislatura from sapl.comissoes.models import Comissao, TipoComissao from sapl.materia.models import (Anexada, Autoria, DespachoInicial, DocumentoAcessorio, MateriaLegislativa, @@ -505,3 +507,76 @@ def test_form_errors_proposicao(admin_client): ['Este campo é obrigatório.']) assert (response.context_data['form'].errors['descricao'] == ['Este campo é obrigatório.']) + + + +@pytest.mark.django_db(transaction=False) +def test_numeracao_materia_legislativa_por_legislatura(admin_client): + + #Criar Legislaturas + legislatura1 = mommy.make(Legislatura, + data_inicio='2014-01-01', + data_fim='2018-12-31', + numero=20, + data_eleicao='2013-10-15' + ) + legislatura2 = mommy.make(Legislatura, + data_inicio='2009-01-01', + data_fim='2013-12-31', + numero=21, + data_eleicao='2018-10-15' + ) + + + # Cria uma materia na legislatura1 + tipo_materia = mommy.make(TipoMateriaLegislativa, id=1,sequencia_numeracao='L') + materia = mommy.make(MateriaLegislativa, + tipo=tipo_materia, + ano=2017, + numero=1 + ) + + url = reverse('sapl.materia:recuperar_materia') + + # Testa numeração do Materia Legislativa na Legislatura1 + query_params = '?tipo={}&ano={}'.format(materia.tipo.id, materia.ano) + response = admin_client.get(url + query_params, follow=True) + response_content = eval(response.content.decode('ascii')) + esperado_legislatura1 = eval('{"numero": 2, "ano": "2017"}') + assert response_content['numero'] == esperado_legislatura1['numero'] + + # Testa numeração do Materia Legislativa na Legislatura2 + query_params = '?tipo={}&ano={}'.format(1, '2010') + response = admin_client.get(url + query_params, follow=True) + response_content = eval(response.content.decode('ascii')) + esperado_legislatura2 = eval('{"ano": "2010", "numero": 1}') + assert response_content['numero'] == esperado_legislatura2['numero'] + + +@pytest.mark.django_db(transaction=False) +def test_numeracao_materia_legislativa_por_ano(admin_client): + + # Cria uma materia + tipo_materia = mommy.make(TipoMateriaLegislativa, id=1,sequencia_numeracao='A') + materia = mommy.make(MateriaLegislativa, + tipo=tipo_materia, + ano=2017, + numero=1 + ) + + + url = reverse('sapl.materia:recuperar_materia') + + # Testa numeração da Materia Legislativa no ano da materia criada + query_params = '?tipo={}&ano={}'.format(materia.tipo.id, materia.ano) + response = admin_client.get(url + query_params, follow=True) + response_content = eval(response.content.decode('ascii')) + esperado_ano = eval('{"numero": 2, "ano": "2017"}') + assert response_content['numero'] == esperado_ano['numero'] + + # Testa numeração da Materia Legislativa de outro ano + query_params = '?tipo={}&ano={}'.format(1, '2010') + response = admin_client.get(url + query_params, follow=True) + response_content = eval(response.content.decode('ascii')) + esperado_outro_ano = eval('{"ano": "2010", "numero": 1}') + assert response_content['numero'] == esperado_outro_ano['numero'] diff --git a/sapl/materia/urls.py b/sapl/materia/urls.py index 67ecf010f..3a30800d2 100644 --- a/sapl/materia/urls.py +++ b/sapl/materia/urls.py @@ -62,7 +62,7 @@ urlpatterns_materia = [ url(r'^materia/(?P[0-9]+)/create_simplificado$', CriarProtocoloMateriaView.as_view(), name='materia_create_simplificado'), - url(r'^materia/recuperar-materia', recuperar_materia), + url(r'^materia/recuperar-materia',recuperar_materia, name='recuperar_materia'), url(r'^materia/(?P[0-9]+)/ta$', MateriaTaView.as_view(), name='materia_ta'), diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 7ca7c0b7a..ffeda503b 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -295,9 +295,11 @@ def recuperar_materia(request): if numeracao == 'A': numero = MateriaLegislativa.objects.filter( - ano=timezone.now().year).aggregate(Max('numero')) + ano=ano).aggregate(Max('numero')) elif numeracao == 'L': - legislatura = Legislatura.objects.first() + legislatura = Legislatura.objects.filter( + data_inicio__year__lte=ano, + data_fim__year__gte=ano).first() data_inicio = legislatura.data_inicio data_fim = legislatura.data_fim numero = MateriaLegislativa.objects.filter(