diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 8caca7a6a..8e3d7ec8b 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -44,7 +44,6 @@ from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, SituacaoMilitar, TipoAfastamento, TipoDependente, Votante, Bloco, FrenteCargo, FrenteParlamentar, BlocoCargo, BlocoMembro, MesaDiretora) - FrenteCargoCrud = CrudAux.build(FrenteCargo, 'frente_cargo') BlocoCargoCrud = CrudAux.build(BlocoCargo, 'bloco_cargo') CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa') @@ -154,7 +153,7 @@ class ProposicaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): class ListView(CrudBaseForListAndDetailExternalAppView.ListView): def get_context_data(self, **kwargs): - context = CrudBaseForListAndDetailExternalAppView\ + context = CrudBaseForListAndDetailExternalAppView \ .ListView.get_context_data(self, **kwargs) return context @@ -172,14 +171,13 @@ class ProposicaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): @property def extras_url(self): - if self.object.texto_articulado.exists(): ta = self.object.texto_articulado.first() yield (str(reverse_lazy( 'sapl.compilacao:ta_text', kwargs={'ta_id': ta.pk})) + '?back_type=history', - 'btn-success', - _('Texto Eletrônico')) + 'btn-success', + _('Texto Eletrônico')) class PesquisarParlamentarView(FilterView): @@ -361,14 +359,21 @@ class ParticipacaoParlamentarCrud(CrudBaseForListAndDetailExternalAppView): comissoes = [] for p in object_list: + ## TODO: atualmente periodo.data_fim pode ser nulo o que pode gerar um erro nessa tela + data_fim = p.composicao.periodo.data_fim + if data_fim: + data_fim = data_fim.strftime("%d/%m/%Y") + else: + data_fim = ' - ' + comissao = [ (p.composicao.comissao.nome, reverse( 'sapl.comissoes:comissao_detail', kwargs={ 'pk': p.composicao.comissao.pk})), (p.cargo.nome, None), (p.composicao.periodo.data_inicio.strftime( - "%d/%m/%Y") + ' a ' + - p.composicao.periodo.data_fim.strftime("%d/%m/%Y"), + "%d/%m/%Y") + ' a ' + + data_fim, None) ] comissoes.append(comissao) @@ -558,8 +563,8 @@ class FrenteParlamentarCrud(MasterDetailCrud): def get_parlamentar_frentes(request, pk): template_name = 'parlamentares/parlamentar_frentes_list.html' frentes = [f for f in FrenteParlamentar.objects.filter(parlamentar_id=pk) - .select_related('frente', 'cargo') - .order_by('-data_entrada', '-data_saida')] + .select_related('frente', 'cargo') + .order_by('-data_entrada', '-data_saida')] context = { 'subnav_template_name': 'parlamentares/subnav.yaml', @@ -605,7 +610,7 @@ class MandatoCrud(MasterDetailCrud): def get_initial(self): return {'parlamentar': Parlamentar.objects.get( - pk=self.kwargs['pk'])} + pk=self.kwargs['pk'])} class UpdateView(MasterDetailCrud.UpdateView): form_class = MandatoForm @@ -629,7 +634,6 @@ class ComposicaoColigacaoCrud(MasterDetailCrud): class LegislaturaCrud(CrudAux): - model = Legislatura help_topic = 'legislatura' @@ -840,20 +844,20 @@ class ParlamentarMateriasView(FormView): autoria = Autoria.objects.filter( autor=autor, primeiro_autor=True).values( - 'materia__ano', - 'materia__tipo__pk', - 'materia__tipo__sigla', - 'materia__tipo__descricao').annotate( - total=Count('materia__tipo__pk')).order_by( - '-materia__ano', 'materia__tipo') + 'materia__ano', + 'materia__tipo__pk', + 'materia__tipo__sigla', + 'materia__tipo__descricao').annotate( + total=Count('materia__tipo__pk')).order_by( + '-materia__ano', 'materia__tipo') coautoria = Autoria.objects.filter( autor=autor, primeiro_autor=False).values( - 'materia__ano', - 'materia__tipo__pk', - 'materia__tipo__sigla', - 'materia__tipo__descricao').annotate( - total=Count('materia__tipo__pk')).order_by( + 'materia__ano', + 'materia__tipo__pk', + 'materia__tipo__sigla', + 'materia__tipo__descricao').annotate( + total=Count('materia__tipo__pk')).order_by( '-materia__ano', 'materia__tipo') autor_list = self.get_autoria(autoria) @@ -912,8 +916,8 @@ class MesaDiretoraView(FormView): return self.render_to_response( {'legislaturas': Legislatura.objects.all( ).order_by('-numero'), - 'legislatura_selecionada': Legislatura.objects.last(), - 'cargos_vagos': CargoMesa.objects.all()}) + 'legislatura_selecionada': Legislatura.objects.last(), + 'cargos_vagos': CargoMesa.objects.all()}) @xframe_options_exempt def get(self, request, *args, **kwargs): @@ -933,7 +937,7 @@ class MesaDiretoraView(FormView): mesa_diretora = sessao_atual.mesadiretora_set.order_by( '-data_inicio').first() if sessao_atual else None - + composicao = mesa_diretora.composicaomesa_set.all() if mesa_diretora else [] cargos_ocupados = [m.cargo for m in composicao] @@ -955,13 +959,13 @@ class MesaDiretoraView(FormView): return self.render_to_response( {'legislaturas': Legislatura.objects.all( ).order_by('-numero'), - 'legislatura_selecionada': legislatura, - 'sessoes': sessoes, - 'sessao_selecionada': sessao_atual, - 'composicao_mesa': composicao, - 'parlamentares': parlamentares_vagos, - 'cargos_vagos': cargos_vagos - }) + 'legislatura_selecionada': legislatura, + 'sessoes': sessoes, + 'sessao_selecionada': sessao_atual, + 'composicao_mesa': composicao, + 'parlamentares': parlamentares_vagos, + 'cargos_vagos': cargos_vagos + }) def altera_field_mesa(request): @@ -971,14 +975,14 @@ def altera_field_mesa(request): operação (Legislatura/Sessão/Inclusão/Remoção), atualizando os campos após cada alteração """ - #TODO: Adicionar opção de selecionar mesa diretora no CRUD + # TODO: Adicionar opção de selecionar mesa diretora no CRUD logger = logging.getLogger(__name__) legislatura = request.GET['legislatura'] sessoes = SessaoLegislativa.objects.filter( legislatura=legislatura).order_by('-data_inicio') username = request.user.username - + if not sessoes: return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)}) @@ -1003,12 +1007,12 @@ def altera_field_mesa(request): mesa_diretora = request.GET.get('mesa_diretora') - #Mesa nao deve ser informada ainda + # Mesa nao deve ser informada ainda if not mesa_diretora: - #Cria nova mesa diretora ou retorna a primeira + # Cria nova mesa diretora ou retorna a primeira mesa_diretora, _ = MesaDiretora.objects.get_or_create(sessao_legislativa=sessao_selecionada) - - #TODO: quando a mesa for criada explicitamente em tabelas auxiliares, + + # TODO: quando a mesa for criada explicitamente em tabelas auxiliares, # deve-se somente tentar recuperar a mesa, e caso nao exista # retornar o erro abaixo # return JsonResponse({'msg': ('Nenhuma mesa encontrada na sessão!')}) @@ -1060,11 +1064,11 @@ def insere_parlamentar_composicao(request): username = request.user.username if request.user.has_perm( '%s.add_%s' % ( - AppConfig.label, ComposicaoMesa._meta.model_name)): + AppConfig.label, ComposicaoMesa._meta.model_name)): composicao = ComposicaoMesa() - + try: - #logger.debug( + # logger.debug( # "user=" + username + ". Tentando obter SessaoLegislativa com id={}.".format(request.POST['sessao'])) mesa_diretora, _ = MesaDiretora.objects.get_or_create(sessao_legislativa_id=int(request.POST['sessao'])) composicao.mesa_diretora = mesa_diretora @@ -1120,8 +1124,8 @@ def remove_parlamentar_composicao(request): logger = logging.getLogger(__name__) username = request.user.username if request.POST and request.user.has_perm( - '%s.delete_%s' % ( - AppConfig.label, ComposicaoMesa._meta.model_name)): + '%s.delete_%s' % ( + AppConfig.label, ComposicaoMesa._meta.model_name)): if 'composicao_mesa' in request.POST: try: @@ -1130,8 +1134,9 @@ def remove_parlamentar_composicao(request): composicao = ComposicaoMesa.objects.get( id=request.POST['composicao_mesa']) except ObjectDoesNotExist: - logger.error("user=" + username + ". ComposicaoMesa com id={} não encontrada, portanto não pode ser removida." - .format(request.POST['composicao_mesa'])) + logger.error( + "user=" + username + ". ComposicaoMesa com id={} não encontrada, portanto não pode ser removida." + .format(request.POST['composicao_mesa'])) return JsonResponse( {'msg': ( 'Composição da Mesa não pôde ser removida!', 0)}) @@ -1204,7 +1209,7 @@ def altera_field_mesa_public_view(request): atualizando os campos após cada alteração """ - #TODO: Adicionar opção de selecionar mesa diretora no CRUD + # TODO: Adicionar opção de selecionar mesa diretora no CRUD logger = logging.getLogger(__name__) username = request.user.username @@ -1227,11 +1232,11 @@ def altera_field_mesa_public_view(request): if not sessao_selecionada: year = timezone.now().year logger.info( - f"user={username}. Tentando obter sessões com data_inicio.ano = {year}.") + f"user={username}. Tentando obter sessões com data_inicio.ano = {year}.") sessao_selecionada = sessoes.filter(data_inicio__year=year).first() if sessao_selecionada is None: logger.error(f"user={username}. Sessões não encontradas com com data_inicio.ano = {year}. " - "Selecionado o id da primeira sessão.") + "Selecionado o id da primeira sessão.") sessao_selecionada = sessoes.first() else: sessao_selecionada = SessaoLegislativa.objects.get(id=sessao_selecionada) @@ -1239,20 +1244,20 @@ def altera_field_mesa_public_view(request): # Atualiza os componentes da view após a mudança lista_sessoes = [(s.id, s.__str__()) for s in sessoes] - #Pegar Mesas diretoras da sessao + # Pegar Mesas diretoras da sessao mesa_diretora = request.GET.get('mesa_diretora') - #Mesa nao deve ser informada ainda + # Mesa nao deve ser informada ainda if not mesa_diretora: try: mesa_diretora = sessao_selecionada.mesadiretora_set.first() except ObjectDoesNotExist: logger.error(f"user={username}. Mesa não encontrada com sessão Nº {sessao_selecionada.id}. ") else: - #Cria nova mesa diretora ou retorna a primeira + # Cria nova mesa diretora ou retorna a primeira mesa_diretora, _ = MesaDiretora.objects.get_or_create(sessao_legislativa=sessao_selecionada) - - #TODO: quando a mesa for criada explicitamente em tabelas auxiliares, + + # TODO: quando a mesa for criada explicitamente em tabelas auxiliares, # deve-se somente tentar recuperar a mesa, e caso nao exista # retornar o erro abaixo # logger.error(f"user={username}. Mesa Nº {mesa_diretora} não encontrada na sessão Nº {sessao_selecionada.id}. " @@ -1299,7 +1304,7 @@ def altera_field_mesa_public_view(request): 'lista_sessoes': lista_sessoes, 'lista_fotos': lista_fotos, 'sessao_selecionada': sessao_selecionada.id, - 'mesa_diretora':mesa_diretora.id, + 'mesa_diretora': mesa_diretora.id, 'msg': ('', 1) }) @@ -1308,7 +1313,7 @@ class VincularParlamentarView(PermissionRequiredMixin, FormView): logger = logging.getLogger(__name__) form_class = VincularParlamentarForm template_name = 'parlamentares/vincular_parlamentar.html' - permission_required = ('parlamentares.add_parlamentar', ) + permission_required = ('parlamentares.add_parlamentar',) def get_success_url(self): return reverse('sapl.parlamentares:parlamentar_list') @@ -1392,7 +1397,6 @@ class BlocoMembroCrud(MasterDetailCrud): def get_sessoes_legislatura(request): - legislatura_id = request.GET['legislatura'] json_response = {'sessoes_legislativas': []}