53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
|
|
from flask import g, request
|
||
|
|
from flask_login import current_user
|
||
|
|
|
||
|
|
def permission_context_processor():
|
||
|
|
"""Context processor simples que disponibiliza informações básicas do usuário"""
|
||
|
|
context = {
|
||
|
|
'user_can': lambda permission: True, # Sempre True - controle é no nível de dados
|
||
|
|
'user_has_role': lambda role: True, # Sempre True - controle é no nível de dados
|
||
|
|
'is_admin': False,
|
||
|
|
'current_user_data': None
|
||
|
|
}
|
||
|
|
|
||
|
|
if current_user.is_authenticated:
|
||
|
|
context.update({
|
||
|
|
'is_admin': getattr(current_user, 'is_admin', False),
|
||
|
|
'current_user_data': current_user
|
||
|
|
})
|
||
|
|
|
||
|
|
return context
|
||
|
|
|
||
|
|
def safe_render_helper():
|
||
|
|
"""Helper que fornece dados seguros para templates"""
|
||
|
|
return {
|
||
|
|
'safe_data': lambda data, default=None: data if data is not None else (default or [])
|
||
|
|
}
|
||
|
|
|
||
|
|
def init_template_filters(app):
|
||
|
|
"""Inicializa filtros de template personalizados"""
|
||
|
|
|
||
|
|
@app.template_filter('safe_list')
|
||
|
|
def safe_list_filter(value):
|
||
|
|
"""Garante que o valor seja sempre uma lista"""
|
||
|
|
if value is None:
|
||
|
|
return []
|
||
|
|
if isinstance(value, list):
|
||
|
|
return value
|
||
|
|
return [value]
|
||
|
|
|
||
|
|
@app.template_filter('safe_dict')
|
||
|
|
def safe_dict_filter(value):
|
||
|
|
"""Garante que o valor seja sempre um dicionário"""
|
||
|
|
if value is None:
|
||
|
|
return {}
|
||
|
|
if isinstance(value, dict):
|
||
|
|
return value
|
||
|
|
return {}
|
||
|
|
|
||
|
|
@app.template_filter('safe_str')
|
||
|
|
def safe_str_filter(value):
|
||
|
|
"""Garante que o valor seja sempre uma string"""
|
||
|
|
if value is None:
|
||
|
|
return ""
|
||
|
|
return str(value)
|