Browse Source

Merge branch 'master' into 1566-cadastro-de-reunioes

pull/1614/head
Edward 8 years ago
committed by GitHub
parent
commit
92c5112b95
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      sapl/materia/forms.py
  2. 75
      sapl/materia/tests/test_materia.py
  3. 2
      sapl/materia/urls.py
  4. 6
      sapl/materia/views.py

31
sapl/materia/forms.py

@ -1208,6 +1208,20 @@ class ProposicaoForm(forms.ModelForm):
"Arquivo muito grande. ( > {0}MB )".format(max_size))
return texto_original
def gerar_hash(self, inst, receber_recibo):
inst.save()
if receber_recibo == True:
inst.hash_code = ''
else:
if inst.texto_original:
inst.hash_code = gerar_hash_arquivo(
inst.texto_original.path, str(inst.pk))
elif inst.texto_articulado.exists():
ta = inst.texto_articulado.first()
# FIXME hash para textos articulados
inst.hash_code = 'P' + ta.hash() + '/' + str(inst.pk)
def clean(self):
super(ProposicaoForm, self).clean()
@ -1249,13 +1263,7 @@ class ProposicaoForm(forms.ModelForm):
not cd['texto_original'] and \
inst.texto_original:
inst.texto_original.delete()
inst.save()
if receber_recibo == True or not inst.texto_original:
inst.hash_code = ''
else:
_hash = gerar_hash_arquivo(inst.texto_original.path, str(inst.pk))
inst.hash_code = _hash
self.gerar_hash(inst, receber_recibo)
return super().save(commit)
@ -1267,12 +1275,7 @@ class ProposicaoForm(forms.ModelForm):
inst.numero_proposicao = (
numero__max + 1) if numero__max else 1
inst.save()
if receber_recibo == True or not inst.texto_original:
inst.hash_code = ''
else:
_hash = gerar_hash_arquivo(inst.texto_original.path, str(inst.pk))
inst.hash_code = _hash
self.gerar_hash(inst, receber_recibo)
inst.save()
@ -1571,7 +1574,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

75
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']

2
sapl/materia/urls.py

@ -62,7 +62,7 @@ urlpatterns_materia = [
url(r'^materia/(?P<pk>[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<pk>[0-9]+)/ta$',
MateriaTaView.as_view(), name='materia_ta'),

6
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(

Loading…
Cancel
Save