|
|
@ -11,6 +11,7 @@ from django.utils import timezone |
|
|
|
from django.utils.decorators import classonlymethod |
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
from django_filters.rest_framework.backends import DjangoFilterBackend |
|
|
|
from django.http import JsonResponse |
|
|
|
from rest_framework import serializers as rest_serializers |
|
|
|
from rest_framework.authtoken.models import Token |
|
|
|
from rest_framework.decorators import action, api_view, permission_classes |
|
|
@ -34,6 +35,8 @@ 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.parlamentares.models import (ComposicaoMesa, SessaoLegislativa) |
|
|
|
from sapl.parlamentares.views import (partido_parlamentar_sessao_legislativa) |
|
|
|
|
|
|
|
|
|
|
|
@receiver(post_save, sender=settings.AUTH_USER_MODEL) |
|
|
@ -50,6 +53,83 @@ def recria_token(request, pk): |
|
|
|
|
|
|
|
return Response({"message": "Token recriado com sucesso!", "token": token.key}) |
|
|
|
|
|
|
|
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') |
|
|
|
|
|
|
|
if not sessoes: |
|
|
|
return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)}) |
|
|
|
|
|
|
|
# Verifica se já tem uma sessão selecionada. Ocorre quando é alterado o |
|
|
|
# campo de sessão |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
# Atualiza os componentes da view após a mudança |
|
|
|
lista_sessoes = [(s.id, s.__str__()) for s in sessoes] |
|
|
|
|
|
|
|
composicao_mesa = ComposicaoMesa.objects.select_related('cargo', 'parlamentar').filter( |
|
|
|
sessao_legislativa=sessao_selecionada).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]) |
|
|
|
lista_partidos.append( |
|
|
|
partido_parlamentar_sessao_legislativa(sessao, parlamentar)) |
|
|
|
if parlamentar.fotografia: |
|
|
|
try: |
|
|
|
thumbnail_url = get_backend().get_thumbnail_url( |
|
|
|
parlamentar.fotografia, |
|
|
|
{ |
|
|
|
'size': (128, 128), |
|
|
|
'box': parlamentar.cropping, |
|
|
|
'crop': True, |
|
|
|
'detail': True, |
|
|
|
} |
|
|
|
) |
|
|
|
lista_fotos.append(thumbnail_url) |
|
|
|
except Exception as e: |
|
|
|
logger.error(e) |
|
|
|
logger.error( |
|
|
|
F'erro processando arquivo: {parlamentar.fotografia.path}') |
|
|
|
else: |
|
|
|
lista_fotos.append(None) |
|
|
|
|
|
|
|
return JsonResponse({ |
|
|
|
'lista_parlamentares': parlamentares_ocupados, |
|
|
|
'lista_partidos': lista_partidos, |
|
|
|
'lista_cargos': cargos_ocupados, |
|
|
|
'lista_sessoes': lista_sessoes, |
|
|
|
'lista_fotos': lista_fotos, |
|
|
|
'sessao_selecionada': sessao_selecionada, |
|
|
|
'msg': ('', 1) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
class BusinessRulesNotImplementedMixin: |
|
|
|
def create(self, request, *args, **kwargs): |
|
|
|