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)) "Arquivo muito grande. ( > {0}MB )".format(max_size))
return texto_original 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): def clean(self):
super(ProposicaoForm, self).clean() super(ProposicaoForm, self).clean()
@ -1249,13 +1263,7 @@ class ProposicaoForm(forms.ModelForm):
not cd['texto_original'] and \ not cd['texto_original'] and \
inst.texto_original: inst.texto_original:
inst.texto_original.delete() inst.texto_original.delete()
inst.save() self.gerar_hash(inst, receber_recibo)
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
return super().save(commit) return super().save(commit)
@ -1267,12 +1275,7 @@ class ProposicaoForm(forms.ModelForm):
inst.numero_proposicao = ( inst.numero_proposicao = (
numero__max + 1) if numero__max else 1 numero__max + 1) if numero__max else 1
inst.save() self.gerar_hash(inst, receber_recibo)
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
inst.save() inst.save()
@ -1571,7 +1574,7 @@ class ConfirmarProposicaoForm(ProposicaoForm):
except AttributeError: except AttributeError:
pass pass
tipo = proposicao.tipo.tipo_conteudo_related tipo = self.instance.tipo.tipo_conteudo_related
if tipo.sequencia_numeracao: if tipo.sequencia_numeracao:
numeracao = tipo.sequencia_numeracao numeracao = tipo.sequencia_numeracao

75
sapl/materia/tests/test_materia.py

@ -1,10 +1,12 @@
import pytest import pytest
from django.db.models import Max
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from model_mommy import mommy from model_mommy import mommy
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.parlamentares.models import Legislatura
from sapl.comissoes.models import Comissao, TipoComissao from sapl.comissoes.models import Comissao, TipoComissao
from sapl.materia.models import (Anexada, Autoria, DespachoInicial, from sapl.materia.models import (Anexada, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, DocumentoAcessorio, MateriaLegislativa,
@ -505,3 +507,76 @@ def test_form_errors_proposicao(admin_client):
['Este campo é obrigatório.']) ['Este campo é obrigatório.'])
assert (response.context_data['form'].errors['descricao'] == assert (response.context_data['form'].errors['descricao'] ==
['Este campo é obrigatório.']) ['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$', url(r'^materia/(?P<pk>[0-9]+)/create_simplificado$',
CriarProtocoloMateriaView.as_view(), CriarProtocoloMateriaView.as_view(),
name='materia_create_simplificado'), 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$', url(r'^materia/(?P<pk>[0-9]+)/ta$',
MateriaTaView.as_view(), name='materia_ta'), MateriaTaView.as_view(), name='materia_ta'),

6
sapl/materia/views.py

@ -295,9 +295,11 @@ def recuperar_materia(request):
if numeracao == 'A': if numeracao == 'A':
numero = MateriaLegislativa.objects.filter( numero = MateriaLegislativa.objects.filter(
ano=timezone.now().year).aggregate(Max('numero')) ano=ano).aggregate(Max('numero'))
elif numeracao == 'L': 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_inicio = legislatura.data_inicio
data_fim = legislatura.data_fim data_fim = legislatura.data_fim
numero = MateriaLegislativa.objects.filter( numero = MateriaLegislativa.objects.filter(

Loading…
Cancel
Save