mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.8 KiB
107 lines
3.8 KiB
import logging
|
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from sapl.utils import google_recaptcha_configured as \
|
|
google_recaptcha_configured_utils, sapn_is_enabled, cached_call, get_base_url
|
|
from sapl.utils import mail_service_configured as mail_service_configured_utils
|
|
|
|
|
|
def parliament_info(request):
|
|
from sapl.base.views import get_casalegislativa
|
|
casa = get_casalegislativa()
|
|
if casa:
|
|
return casa.__dict__
|
|
else:
|
|
return {}
|
|
|
|
|
|
def mail_service_configured(request):
|
|
if not mail_service_configured_utils(request):
|
|
logger = logging.getLogger(__name__)
|
|
logger.warning(_('Servidor de email não configurado.'))
|
|
return {'mail_service_configured': False}
|
|
return {'mail_service_configured': True}
|
|
|
|
|
|
def google_recaptcha_configured(request):
|
|
if not google_recaptcha_configured_utils():
|
|
logger = logging.getLogger(__name__)
|
|
logger.warning(_('Google Recaptcha não configurado.'))
|
|
return {'google_recaptcha_configured': False}
|
|
return {'google_recaptcha_configured': True}
|
|
|
|
|
|
def pendencias_assinatura(request):
|
|
"""Injeta contagem e URL de matérias pendentes de assinatura para o usuário logado."""
|
|
if not request.user.is_authenticated:
|
|
return {'pendencias_assinatura_total': 0, 'pendencias_assinatura_url': ''}
|
|
|
|
from django.core.cache import cache
|
|
from sapl.materia.pendencias import CACHE_KEY, CACHE_TTL
|
|
|
|
cache_key = CACHE_KEY.format(request.user.pk)
|
|
cached = cache.get(cache_key)
|
|
|
|
if cached is None:
|
|
try:
|
|
from django.urls import reverse
|
|
from sapl.materia.models import MateriaLegislativa
|
|
from sapl.materia.pendencias import (
|
|
autores_do_usuario, filtrar_pendentes)
|
|
|
|
# Pendência é POR AUTOR: a matéria que um coautor já assinou segue
|
|
# pendente para os demais. Contar `pdf_assinado` vazio — como se
|
|
# fazia aqui — zerava o badge do coautor na primeira assinatura.
|
|
autores = autores_do_usuario(request.user)
|
|
|
|
if autores:
|
|
total = filtrar_pendentes(
|
|
MateriaLegislativa.objects.all(), autores=autores).count()
|
|
# A URL leva ao mesmo recorte: um autor por vez na pesquisa, o
|
|
# primeiro deles (o assessor de dois vereadores vê o total no
|
|
# badge e refina na tela).
|
|
url = (
|
|
reverse('sapl.materia:pesquisar_materia')
|
|
+ f'?autoria__autor={autores[0].pk}&status_assinatura=pendente'
|
|
)
|
|
else:
|
|
total = 0
|
|
url = ''
|
|
except Exception:
|
|
logging.getLogger(__name__).exception(
|
|
'Falha ao calcular pendências de assinatura')
|
|
total = 0
|
|
url = ''
|
|
|
|
cached = {'total': total, 'url': url}
|
|
cache.set(cache_key, cached, CACHE_TTL)
|
|
|
|
return {
|
|
'pendencias_assinatura_total': cached['total'],
|
|
'pendencias_assinatura_url': cached['url'],
|
|
}
|
|
|
|
|
|
def ged_configurado(request):
|
|
"""Injeta flag indicando se o GED (acervo histórico) está configurado."""
|
|
from sapl.materia.views_ged import GED_URL
|
|
return {'ged_configurado': bool(GED_URL)}
|
|
|
|
|
|
@cached_call("site-title", timeout=60 * 2)
|
|
def enable_sapn(request):
|
|
verbose_name = _('SGVP') \
|
|
if not sapn_is_enabled() \
|
|
else _('Sistema de Gestão e Votação Parlamentar')
|
|
|
|
from sapl.base.models import CasaLegislativa
|
|
casa_legislativa = CasaLegislativa.objects.first()
|
|
nome_casa = casa_legislativa.nome if casa_legislativa and casa_legislativa.nome else ''
|
|
|
|
return {
|
|
'sapl_as_sapn': sapn_is_enabled(),
|
|
'nome_sistema': verbose_name,
|
|
'nome_casa': nome_casa,
|
|
'base_url': get_base_url(request),
|
|
}
|
|
|