Browse Source

WIP - minor refactorings. (#1630)

pull/1642/head
Edward 7 years ago
committed by GitHub
parent
commit
9bee9ed6ff
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      sapl/comissoes/views.py
  2. 48
      sapl/materia/views.py
  3. 16
      sapl/parlamentares/views.py
  4. 18
      sapl/protocoloadm/views.py
  5. 27
      sapl/sessao/views.py
  6. 9
      sapl/utils.py

3
sapl/comissoes/views.py

@ -55,9 +55,6 @@ class ComposicaoCrud(MasterDetailCrud):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
# context['composicao_pk'] = context['composicao_list'].last(
# ).pk if self.take_composicao_pk(
# ) == 0 else self.take_composicao_pk()
composicao_pk = self.take_composicao_pk() composicao_pk = self.take_composicao_pk()

48
sapl/materia/views.py

@ -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()
materias_ano = MateriaLegislativa.objects.filter( numero = 1
ano=protocolo.ano, try:
tipo=protocolo.tipo_materia).order_by('-numero') materias_ano = MateriaLegislativa.objects.filter(
ano=protocolo.ano,
if materias_ano: tipo=protocolo.tipo_materia).latest('numero')
numero = materias_ano.first().numero + 1 numero = materias_ano.numero + 1
else: except ObjectDoesNotExist:
numero = 1 pass # numero ficou com o valor padrão 1 acima
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:
recebidas -> data_recebimento != None 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

16
sapl/parlamentares/views.py

@ -223,20 +223,20 @@ class ColigacaoCrud(CrudAux):
def json_date_convert(date): def json_date_convert(date):
''' """
:param date: recebe a data de uma chamada ajax no formato de :param date: recebe a data de uma chamada ajax no formato de
string "dd/mm/yyyy" string "dd/mm/yyyy"
:return: :return:
''' """
return datetime.strptime(date, "%d/%m/%Y").date() return datetime.strptime(date, "%d/%m/%Y").date()
def frente_atualiza_lista_parlamentares(request): def frente_atualiza_lista_parlamentares(request):
''' """
:param request: recebe os parâmetros do GET da chamada Ajax :param request: recebe os parâmetros do GET da chamada Ajax
:return: retorna a lista atualizada dos parlamentares :return: retorna a lista atualizada dos parlamentares
''' """
ativos = json.loads(request.GET['ativos']) ativos = json.loads(request.GET['ativos'])
parlamentares = Parlamentar.objects.all() parlamentares = Parlamentar.objects.all()
@ -258,9 +258,9 @@ def frente_atualiza_lista_parlamentares(request):
def parlamentares_frente_selected(request): def parlamentares_frente_selected(request):
''' """
:return: Lista com o id dos parlamentares em uma frente :return: Lista com o id dos parlamentares em uma frente
''' """
try: try:
frente = Frente.objects.get(id=int(request.GET['frente_id'])) frente = Frente.objects.get(id=int(request.GET['frente_id']))
except ObjectDoesNotExist: except ObjectDoesNotExist:
@ -445,12 +445,12 @@ class ParlamentarCrud(Crud):
return 'ParlamentarCreate' return 'ParlamentarCreate'
def form_valid(self, form): def form_valid(self, form):
''' """
Reimplementa form_valid devido ao save de ParlamentarCreateForm Reimplementa form_valid devido ao save de ParlamentarCreateForm
ser específico, sendo necessário isolar padrão do crud que aciona ser específico, sendo necessário isolar padrão do crud que aciona
form.save(commit=False) para registrar dados de auditoria se form.save(commit=False) para registrar dados de auditoria se
o model implementá-los, bem como de container se também implement. o model implementá-los, bem como de container se também implement.
''' """
return super(Crud.CreateView, self).form_valid(form) return super(Crud.CreateView, self).form_valid(form)
class ListView(Crud.ListView): class ListView(Crud.ListView):

18
sapl/protocoloadm/views.py

@ -22,8 +22,7 @@ from sapl.crud.base import Crud, CrudAux, MasterDetailCrud, make_pagination
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.parlamentares.models import Legislatura, Parlamentar from sapl.parlamentares.models import Legislatura, Parlamentar
from sapl.protocoloadm.models import Protocolo from sapl.protocoloadm.models import Protocolo
from sapl.utils import create_barcode, get_client_ip, show_results_filter_set from sapl.utils import create_barcode, get_client_ip, show_results_filter_set, get_mime_type_from_file_extension
from .forms import (AnularProcoloAdmForm, DocumentoAcessorioAdministrativoForm, from .forms import (AnularProcoloAdmForm, DocumentoAcessorioAdministrativoForm,
DocumentoAdministrativoFilterSet, DocumentoAdministrativoFilterSet,
DocumentoAdministrativoForm, ProtocoloDocumentForm, DocumentoAdministrativoForm, ProtocoloDocumentForm,
@ -55,12 +54,7 @@ def doc_texto_integral(request, pk):
if documento.texto_integral: if documento.texto_integral:
arquivo = documento.texto_integral arquivo = documento.texto_integral
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()
@ -163,9 +157,7 @@ class ProtocoloPesquisaView(PermissionRequiredMixin, FilterView):
kwargs = {'data': self.request.GET or None} kwargs = {'data': self.request.GET or None}
qs = self.get_queryset().order_by('ano', 'numero') qs = self.get_queryset().order_by('ano', 'numero').distinct()
qs = qs.distinct()
if 'o' in self.request.GET and not self.request.GET['o']: if 'o' in self.request.GET and not self.request.GET['o']:
qs = qs.order_by('-ano', '-numero') qs = qs.order_by('-ano', '-numero')
@ -197,7 +189,7 @@ class ProtocoloPesquisaView(PermissionRequiredMixin, FilterView):
# Provavelmente você criou um novo campo no Form/FilterSet # Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente # Então a ordem da URL está diferente
data = self.filterset.data data = self.filterset.data
if (data and data.get('numero') is not None): if data and data.get('numero') is not None:
url = "&" + str(self.request.environ['QUERY_STRING']) url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"): if url.startswith("&page"):
ponto_comeco = url.find('numero=') - 1 ponto_comeco = url.find('numero=') - 1
@ -552,7 +544,7 @@ class PesquisarDocumentoAdministrativoView(DocumentoAdministrativoMixin,
# Provavelmente você criou um novo campo no Form/FilterSet # Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente # Então a ordem da URL está diferente
data = self.filterset.data data = self.filterset.data
if (data and data.get('tipo') is not None): if data and data.get('tipo') is not None:
url = "&" + str(self.request.environ['QUERY_STRING']) url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"): if url.startswith("&page"):
ponto_comeco = url.find('tipo=') - 1 ponto_comeco = url.find('tipo=') - 1

27
sapl/sessao/views.py

@ -577,14 +577,14 @@ def recuperar_numero_sessao(request):
tipo__pk=request.GET['tipo'], tipo__pk=request.GET['tipo'],
sessao_legislativa=request.GET['sessao_legislativa']).last() sessao_legislativa=request.GET['sessao_legislativa']).last()
except ObjectDoesNotExist: except ObjectDoesNotExist:
response = JsonResponse({'numero': 1}) numero = 1
else: else:
if sessao: if sessao:
response = JsonResponse({'numero': sessao.numero + 1}) numero = sessao.numero + 1
else: else:
response = JsonResponse({'numero': 1}) numero = 1
return response return JsonResponse({'numero': numero})
def sessao_legislativa_legislatura_ajax(request): def sessao_legislativa_legislatura_ajax(request):
@ -1764,21 +1764,16 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
if self.ordem: if self.ordem:
ordem_id = kwargs['oid'] ordem_id = kwargs['oid']
try: try:
ordem = OrdemDia.objects.get(id=ordem_id) materia_votacao = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist: except ObjectDoesNotExist:
raise Http404() raise Http404()
materia_votacao = ordem
elif self.expediente: elif self.expediente:
expediente_id = kwargs['oid'] expediente_id = kwargs['oid']
try: try:
expediente = ExpedienteMateria.objects.get(id=expediente_id) materia_votacao = ExpedienteMateria.objects.get(id=expediente_id)
except ObjectDoesNotExist: except ObjectDoesNotExist:
raise Http404() raise Http404()
materia_votacao = expediente
if 'cancelar-votacao' in request.POST: if 'cancelar-votacao' in request.POST:
fechar_votacao_materia(materia_votacao) fechar_votacao_materia(materia_votacao)
@ -2157,9 +2152,9 @@ class VotacaoNominalExpedienteDetailView(DetailView):
class VotacaoExpedienteView(SessaoPermissionMixin): class VotacaoExpedienteView(SessaoPermissionMixin):
''' """
Votação Simbólica e Secreta Votação Simbólica e Secreta
''' """
template_name = 'sessao/votacao/votacao.html' template_name = 'sessao/votacao/votacao.html'
form_class = VotacaoForm form_class = VotacaoForm
@ -2278,9 +2273,9 @@ class VotacaoExpedienteView(SessaoPermissionMixin):
class VotacaoExpedienteEditView(SessaoPermissionMixin): class VotacaoExpedienteEditView(SessaoPermissionMixin):
''' """
Votação Simbólica e Secreta Votação Simbólica e Secreta
''' """
template_name = 'sessao/votacao/votacao_edit.html' template_name = 'sessao/votacao/votacao_edit.html'
form_class = VotacaoEditForm form_class = VotacaoEditForm
@ -2554,7 +2549,7 @@ class PesquisarSessaoPlenariaView(FilterView):
# Provavelmente você criou um novo campo no Form/FilterSet # Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente # Então a ordem da URL está diferente
data = self.filterset.data data = self.filterset.data
if (data and data.get('data_inicio__year') is not None): if data and data.get('data_inicio__year') is not None:
url = "&" + str(self.request.environ['QUERY_STRING']) url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"): if url.startswith("&page"):
ponto_comeco = url.find('data_inicio__year=') - 1 ponto_comeco = url.find('data_inicio__year=') - 1

9
sapl/utils.py

@ -665,3 +665,12 @@ def sort_lista_chave(lista, chave):
""" """
lista_ordenada = sorted(lista, key=itemgetter(chave)) lista_ordenada = sorted(lista, key=itemgetter(chave))
return lista_ordenada return lista_ordenada
def get_mime_type_from_file_extension(filename):
ext = filename.split('.')[-1]
if ext == 'odt':
mime = 'application/vnd.oasis.opendocument.text'
else:
mime = "application/%s" % (ext,)
return mime
Loading…
Cancel
Save