|
@ -2,6 +2,7 @@ from datetime import datetime |
|
|
from random import choice |
|
|
from random import choice |
|
|
from string import ascii_letters, digits |
|
|
from string import ascii_letters, digits |
|
|
|
|
|
|
|
|
|
|
|
import weasyprint |
|
|
from crispy_forms.helper import FormHelper |
|
|
from crispy_forms.helper import FormHelper |
|
|
from crispy_forms.layout import HTML |
|
|
from crispy_forms.layout import HTML |
|
|
from django.contrib import messages |
|
|
from django.contrib import messages |
|
@ -19,8 +20,8 @@ from django.views.generic import CreateView, ListView, TemplateView, UpdateView |
|
|
from django.views.generic.base import RedirectView |
|
|
from django.views.generic.base import RedirectView |
|
|
from django.views.generic.edit import FormView |
|
|
from django.views.generic.edit import FormView |
|
|
from django_filters.views import FilterView |
|
|
from django_filters.views import FilterView |
|
|
import weasyprint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import sapl |
|
|
from sapl.base.models import Autor, CasaLegislativa |
|
|
from sapl.base.models import Autor, CasaLegislativa |
|
|
from sapl.comissoes.models import Comissao, Participacao |
|
|
from sapl.comissoes.models import Comissao, Participacao |
|
|
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT, |
|
|
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT, |
|
@ -40,9 +41,7 @@ from sapl.norma.models import LegislacaoCitada |
|
|
from sapl.protocoloadm.models import Protocolo |
|
|
from sapl.protocoloadm.models import Protocolo |
|
|
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label, |
|
|
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label, |
|
|
autor_modal, gerar_hash_arquivo, get_base_url, |
|
|
autor_modal, gerar_hash_arquivo, get_base_url, |
|
|
montar_row_autor, show_results_filter_set) |
|
|
montar_row_autor, show_results_filter_set, get_mime_type_from_file_extension) |
|
|
import sapl |
|
|
|
|
|
|
|
|
|
|
|
from .email_utils import do_envia_email_confirmacao |
|
|
from .email_utils import do_envia_email_confirmacao |
|
|
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, |
|
|
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, |
|
|
AdicionarVariasAutoriasFilterSet, DespachoInicialForm, |
|
|
AdicionarVariasAutoriasFilterSet, DespachoInicialForm, |
|
@ -62,7 +61,6 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria, |
|
|
TipoProposicao, Tramitacao, UnidadeTramitacao) |
|
|
TipoProposicao, Tramitacao, UnidadeTramitacao) |
|
|
from .signals import tramitacao_signal |
|
|
from .signals import tramitacao_signal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia') |
|
|
AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia') |
|
|
|
|
|
|
|
|
OrigemCrud = Crud.build(Origem, '') |
|
|
OrigemCrud = Crud.build(Origem, '') |
|
@ -81,9 +79,9 @@ TipoFimRelatoriaCrud = CrudAux.build( |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def autores_ja_adicionados(materia_pk): |
|
|
def autores_ja_adicionados(materia_pk): |
|
|
autorias = Autoria.objects.filter(materia_id=materia_pk) |
|
|
autorias = Autoria.objects.filter(materia_id=materia_pk).values_list( |
|
|
pks = [a.autor.pk for a in autorias] |
|
|
'autor_id', flat=True) |
|
|
return pks |
|
|
return autorias |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def proposicao_texto(request, pk): |
|
|
def proposicao_texto(request, pk): |
|
@ -96,12 +94,7 @@ def proposicao_texto(request, pk): |
|
|
|
|
|
|
|
|
arquivo = proposicao.texto_original |
|
|
arquivo = proposicao.texto_original |
|
|
|
|
|
|
|
|
ext = arquivo.name.split('.')[-1] |
|
|
mime = get_mime_type_from_file_extension(arquivo.name) |
|
|
mime = '' |
|
|
|
|
|
if ext == 'odt': |
|
|
|
|
|
mime = 'application/vnd.oasis.opendocument.text' |
|
|
|
|
|
else: |
|
|
|
|
|
mime = "application/%s" % (ext,) |
|
|
|
|
|
|
|
|
|
|
|
with open(arquivo.path, 'rb') as f: |
|
|
with open(arquivo.path, 'rb') as f: |
|
|
data = f.read() |
|
|
data = f.read() |
|
@ -176,14 +169,14 @@ class CriarProtocoloMateriaView(CreateView): |
|
|
except ObjectDoesNotExist: |
|
|
except ObjectDoesNotExist: |
|
|
raise Http404() |
|
|
raise Http404() |
|
|
|
|
|
|
|
|
|
|
|
numero = 1 |
|
|
|
|
|
try: |
|
|
materias_ano = MateriaLegislativa.objects.filter( |
|
|
materias_ano = MateriaLegislativa.objects.filter( |
|
|
ano=protocolo.ano, |
|
|
ano=protocolo.ano, |
|
|
tipo=protocolo.tipo_materia).order_by('-numero') |
|
|
tipo=protocolo.tipo_materia).latest('numero') |
|
|
|
|
|
numero = materias_ano.numero + 1 |
|
|
if materias_ano: |
|
|
except ObjectDoesNotExist: |
|
|
numero = materias_ano.first().numero + 1 |
|
|
pass # numero ficou com o valor padrão 1 acima |
|
|
else: |
|
|
|
|
|
numero = 1 |
|
|
|
|
|
|
|
|
|
|
|
context['form'].fields['tipo'].initial = protocolo.tipo_materia |
|
|
context['form'].fields['tipo'].initial = protocolo.tipo_materia |
|
|
context['form'].fields['numero'].initial = numero |
|
|
context['form'].fields['numero'].initial = numero |
|
@ -489,7 +482,8 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView): |
|
|
|
|
|
|
|
|
def get_object(self, queryset=None): |
|
|
def get_object(self, queryset=None): |
|
|
try: |
|
|
try: |
|
|
"""Não deve haver acesso na rotina de confirmação a proposições: |
|
|
""" |
|
|
|
|
|
Não deve haver acesso na rotina de confirmação a proposições: |
|
|
já recebidas -> data_recebimento != None |
|
|
já recebidas -> data_recebimento != None |
|
|
não enviadas -> data_envio == None |
|
|
não enviadas -> data_envio == None |
|
|
""" |
|
|
""" |
|
@ -901,11 +895,9 @@ class RelatoriaCrud(MasterDetailCrud): |
|
|
participacao = Participacao.objects.filter( |
|
|
participacao = Participacao.objects.filter( |
|
|
composicao=composicao) |
|
|
composicao=composicao) |
|
|
|
|
|
|
|
|
parlamentares = [] |
|
|
parlamentares = [[p.parlamentar.id, p.parlamentar.nome_parlamentar] for |
|
|
for p in participacao: |
|
|
p in participacao if p.titular] |
|
|
if p.titular: |
|
|
|
|
|
parlamentares.append( |
|
|
|
|
|
[p.parlamentar.id, p.parlamentar.nome_parlamentar]) |
|
|
|
|
|
context['form'].fields['parlamentar'].choices = parlamentares |
|
|
context['form'].fields['parlamentar'].choices = parlamentares |
|
|
|
|
|
|
|
|
return context |
|
|
return context |
|
|