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):
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()

48
sapl/materia/views.py

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

16
sapl/parlamentares/views.py

@ -223,20 +223,20 @@ class ColigacaoCrud(CrudAux):
def json_date_convert(date):
'''
"""
:param date: recebe a data de uma chamada ajax no formato de
string "dd/mm/yyyy"
:return:
'''
"""
return datetime.strptime(date, "%d/%m/%Y").date()
def frente_atualiza_lista_parlamentares(request):
'''
"""
:param request: recebe os parâmetros do GET da chamada Ajax
:return: retorna a lista atualizada dos parlamentares
'''
"""
ativos = json.loads(request.GET['ativos'])
parlamentares = Parlamentar.objects.all()
@ -258,9 +258,9 @@ def frente_atualiza_lista_parlamentares(request):
def parlamentares_frente_selected(request):
'''
"""
:return: Lista com o id dos parlamentares em uma frente
'''
"""
try:
frente = Frente.objects.get(id=int(request.GET['frente_id']))
except ObjectDoesNotExist:
@ -445,12 +445,12 @@ class ParlamentarCrud(Crud):
return 'ParlamentarCreate'
def form_valid(self, form):
'''
"""
Reimplementa form_valid devido ao save de ParlamentarCreateForm
ser específico, sendo necessário isolar padrão do crud que aciona
form.save(commit=False) para registrar dados de auditoria se
o model implementá-los, bem como de container se também implement.
'''
"""
return super(Crud.CreateView, self).form_valid(form)
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.parlamentares.models import Legislatura, Parlamentar
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,
DocumentoAdministrativoFilterSet,
DocumentoAdministrativoForm, ProtocoloDocumentForm,
@ -55,12 +54,7 @@ def doc_texto_integral(request, pk):
if documento.texto_integral:
arquivo = documento.texto_integral
ext = arquivo.name.split('.')[-1]
mime = ''
if ext == 'odt':
mime = 'application/vnd.oasis.opendocument.text'
else:
mime = "application/%s" % (ext,)
mime = get_mime_type_from_file_extension(arquivo.name)
with open(arquivo.path, 'rb') as f:
data = f.read()
@ -163,9 +157,7 @@ class ProtocoloPesquisaView(PermissionRequiredMixin, FilterView):
kwargs = {'data': self.request.GET or None}
qs = self.get_queryset().order_by('ano', 'numero')
qs = qs.distinct()
qs = self.get_queryset().order_by('ano', 'numero').distinct()
if 'o' in self.request.GET and not self.request.GET['o']:
qs = qs.order_by('-ano', '-numero')
@ -197,7 +189,7 @@ class ProtocoloPesquisaView(PermissionRequiredMixin, FilterView):
# Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente
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'])
if url.startswith("&page"):
ponto_comeco = url.find('numero=') - 1
@ -552,7 +544,7 @@ class PesquisarDocumentoAdministrativoView(DocumentoAdministrativoMixin,
# Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente
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'])
if url.startswith("&page"):
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'],
sessao_legislativa=request.GET['sessao_legislativa']).last()
except ObjectDoesNotExist:
response = JsonResponse({'numero': 1})
numero = 1
else:
if sessao:
response = JsonResponse({'numero': sessao.numero + 1})
numero = sessao.numero + 1
else:
response = JsonResponse({'numero': 1})
numero = 1
return response
return JsonResponse({'numero': numero})
def sessao_legislativa_legislatura_ajax(request):
@ -1764,21 +1764,16 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
if self.ordem:
ordem_id = kwargs['oid']
try:
ordem = OrdemDia.objects.get(id=ordem_id)
materia_votacao = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist:
raise Http404()
materia_votacao = ordem
elif self.expediente:
expediente_id = kwargs['oid']
try:
expediente = ExpedienteMateria.objects.get(id=expediente_id)
materia_votacao = ExpedienteMateria.objects.get(id=expediente_id)
except ObjectDoesNotExist:
raise Http404()
materia_votacao = expediente
if 'cancelar-votacao' in request.POST:
fechar_votacao_materia(materia_votacao)
@ -2157,9 +2152,9 @@ class VotacaoNominalExpedienteDetailView(DetailView):
class VotacaoExpedienteView(SessaoPermissionMixin):
'''
"""
Votação Simbólica e Secreta
'''
"""
template_name = 'sessao/votacao/votacao.html'
form_class = VotacaoForm
@ -2278,9 +2273,9 @@ class VotacaoExpedienteView(SessaoPermissionMixin):
class VotacaoExpedienteEditView(SessaoPermissionMixin):
'''
"""
Votação Simbólica e Secreta
'''
"""
template_name = 'sessao/votacao/votacao_edit.html'
form_class = VotacaoEditForm
@ -2554,7 +2549,7 @@ class PesquisarSessaoPlenariaView(FilterView):
# Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente
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'])
if url.startswith("&page"):
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))
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