|
|
|
@ -3,8 +3,9 @@ import json |
|
|
|
import logging |
|
|
|
|
|
|
|
from django.contrib import messages |
|
|
|
from django.contrib.auth.decorators import user_passes_test |
|
|
|
from django.core.exceptions import ObjectDoesNotExist |
|
|
|
from django.contrib.auth.decorators import (login_required, permission_required, |
|
|
|
user_passes_test) |
|
|
|
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied |
|
|
|
from django.urls import reverse |
|
|
|
from django.db.models import Q |
|
|
|
from django.http import HttpResponse, JsonResponse |
|
|
|
@ -200,39 +201,23 @@ def can_vote(context, context_vars, request): |
|
|
|
return context, context_vars |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
@permission_required('parlamentares.can_vote', raise_exception=True) |
|
|
|
def votante_view(request): |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
username = request.user.username if request.user.is_authenticated else 'AnonymousUser' |
|
|
|
|
|
|
|
# Pega o votante relacionado ao usuário |
|
|
|
template_name = 'painel/voto_individual.html' |
|
|
|
context = {} |
|
|
|
context_vars = {} |
|
|
|
username = request.user.username |
|
|
|
|
|
|
|
try: |
|
|
|
logger.debug(f'user={username}. Tentando obter objeto Votante com user={request.user}.') |
|
|
|
if not request.user.is_anonymous and request.user.is_authenticated: |
|
|
|
votante = Votante.objects.get(user=request.user) |
|
|
|
else: |
|
|
|
raise ObjectDoesNotExist |
|
|
|
except ObjectDoesNotExist: |
|
|
|
logger.error(f"user={username}. Usuário (user={request.user}) não cadastrado como votante na tela de parlamentares. " |
|
|
|
"Contate a administração de sua Casa Legislativa!") |
|
|
|
msg = _("Usuário não cadastrado como votante na tela de parlamentares. Contate a administração de sua Casa Legislativa!") |
|
|
|
context.update({'error_message': msg}) |
|
|
|
if not Votante.objects.filter(user=request.user).exists(): |
|
|
|
logger.warning( |
|
|
|
f'user={username} sem cadastro de Votante tentou acessar /voto-individual/.' |
|
|
|
) |
|
|
|
raise PermissionDenied |
|
|
|
|
|
|
|
return render(request, template_name, context) |
|
|
|
context_vars = {'votante': votante} |
|
|
|
template_name = 'painel/voto_individual.html' |
|
|
|
context = {'head_title': str(_('Votação Individual'))} |
|
|
|
context_vars = {'votante': Votante.objects.get(user=request.user)} |
|
|
|
|
|
|
|
# Verifica se usuário possui permissão para votar |
|
|
|
if 'parlamentares.can_vote' in request.user.get_all_permissions(): |
|
|
|
context, context_vars = can_vote(context, context_vars, request) |
|
|
|
logger.debug("user=" + username + ". Verificando se usuário {} possui permissão para votar.".format(request.user)) |
|
|
|
else: |
|
|
|
logger.error("user=" + username + ". Usuário {} sem permissão para votar.".format(request.user)) |
|
|
|
context.update({'permissao': False, |
|
|
|
'error_message': 'Usuário sem permissão para votar.'}) |
|
|
|
|
|
|
|
# Salva o voto |
|
|
|
if request.method == 'POST': |
|
|
|
|