diff --git a/sapl/api/views.py b/sapl/api/views.py index 80c44a17c..f73af6b50 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -34,7 +34,7 @@ from sapl.parlamentares.models import Parlamentar from sapl.protocoloadm.models import DocumentoAdministrativo,\ DocumentoAcessorioAdministrativo, TramitacaoAdministrativo, Anexado from sapl.sessao.models import SessaoPlenaria, ExpedienteSessao -from sapl.utils import models_with_gr_for_model, choice_anos_com_sessaoplenaria +from sapl.utils import models_with_gr_for_model, choice_anos_com_sessaoplenaria, get_base_url from sapl.parlamentares.models import (ComposicaoMesa, SessaoLegislativa) from sapl.parlamentares.views import (partido_parlamentar_sessao_legislativa) @@ -55,69 +55,35 @@ def recria_token(request, pk): def get_mesa_diretora(request): logger = logging.getLogger(__name__) - username = request.user.username - legislatura = request.GET.get('legislatura') - - if legislatura: - legislatura = Legislatura.objects.get(id=legislatura) - else: - legislatura = Legislatura.objects.order_by('-data_inicio').first() - sessoes = legislatura.sessaolegislativa_set.filter( - tipo='O').order_by('-data_inicio') + kwargs = {} - if not sessoes: - return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)}) + legislatura = request.GET.get('legislatura') + if legislatura: + kwargs['legislatura_id'] = legislatura + + sessao = request.GET.get('sessao') + if sessao: + kwargs['id'] = sessao - sessao_selecionada = request.GET.get('sessao') - if not sessao_selecionada: - try: - year = timezone.now().year - logger.info( - f"user={username}. Tentando obter sessões com data_inicio.ano = {year}.") - sessao_selecionada = sessoes.get(data_inicio__year=year).id - except ObjectDoesNotExist: - logger.error(f"user={username}. Sessões não encontradas com com data_inicio.ano = {year}. " - "Selecionado o id da primeira sessão.") - sessao_selecionada = sessoes.first().id + sessao_legislativa = SessaoLegislativa.objects.filter(**kwargs).order_by('-data_inicio').first() - # Atualiza os componentes da view após a mudança - lista_sessoes = [(s.id, s.__str__()) for s in sessoes] + query_legislatura = Legislatura.objects.filter(id=legislatura).order_by('-data_inicio').first() - composicao_mesa = ComposicaoMesa.objects.select_related('cargo', 'parlamentar').filter( - sessao_legislativa=sessao_selecionada).order_by('cargo_id') + composicao_mesa = ComposicaoMesa.objects.select_related('parlamentar', 'cargo').all().filter( + sessao_legislativa=sessao_legislativa).order_by('cargo_id') - cargos_ocupados = list(composicao_mesa.values_list( - 'cargo__id', 'cargo__descricao')) - parlamentares_ocupados = list(composicao_mesa.values_list( - 'parlamentar__id', 'parlamentar__nome_parlamentar')) - - lista_fotos = [] - lista_partidos = [] - - sessao = SessaoLegislativa.objects.get(id=sessao_selecionada) - for p in parlamentares_ocupados: - parlamentar = Parlamentar.objects.get(id=p[0]) - if parlamentar.fotografia: - lista_fotos.append({parlamentar.fotografia.path}) - else: - lista_fotos.append(None) - - membros_da_mesa = [] - - for x in range(0, len(parlamentares_ocupados)): - membro_atual = {} - membro_atual['lesgilatura_id'] = legislatura.id - membro_atual['sessao_legislativa_id'] = sessao.id - membro_atual['cargo_id'] = cargos_ocupados[x][0] - membro_atual['cargo_descricao'] = cargos_ocupados[x][1] - membro_atual['parlamentar_id'] = parlamentares_ocupados[x][0] - membro_atual['nome_parlamentar'] = parlamentares_ocupados[x][1] - - membros_da_mesa.append(membro_atual) + mesa_diretora = [{'legislatura_id':query_legislatura.id,'legislatura':str(query_legislatura), + 'sessao_legislativa_id':sessao_legislativa.id,'sessao_legislativa':str(sessao_legislativa), + 'parlamentar_id':i[0], 'parlamentar_nome':i[1], 'cargo_id':i[2], 'cargo_descricao':i[3]} + for i in composicao_mesa.values_list('parlamentar_id', 'parlamentar__nome_parlamentar', + 'cargo_id', 'cargo__descricao')] + + for i, c in enumerate(composicao_mesa): + mesa_diretora[i]['fotografia'] = get_base_url(request) + c.parlamentar.fotografia.url return JsonResponse({ - 'mesa_diretora':membros_da_mesa, + 'mesa_diretora':mesa_diretora, })