Permisos: marketing (export completo, agenda/citas, cumpleanos, visitas, WACRM), gerencia gestiona usuarios y roles, recepcion edita expedientes, cosmetologas ven agenda, fix del sidebar que no dejaba seleccionar Leads

This commit is contained in:
2026-09-18 03:23:44 +00:00
parent c38783eb31
commit cebf8d663d
13 changed files with 354 additions and 47 deletions

View File

@@ -36,7 +36,9 @@ ROLE_RANKS = {
'psicologa': 50,
'farmacia': 50,
'gerencia': 50,
'marketing': 10,
# marketing pasó a 50: puede agendar citas y escribir en el WACRM, igual
# que recepción (los permisos de ESCRITURA dependen del rango).
'marketing': 50,
'lectura': 10,
}
@@ -48,7 +50,7 @@ MENU_ROLES_KEY = 'skeen.menu_roles'
# /cumpleanos y /wacrm/*.
DEFAULT_MENU_ROLES = {
'/' : ['admin', 'medico', 'recepcion', 'enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'gerencia', 'marketing', 'lectura'],
'/agenda': ['admin', 'recepcion', 'medico', 'gerencia'],
'/agenda': ['admin', 'recepcion', 'medico', 'gerencia', 'cosmetologia', 'marketing'],
'/mis-ventas': ['medico'],
'/pacientes': ['admin', 'recepcion', 'medico', 'lectura', 'gerencia'],
'/pos': ['admin', 'recepcion', 'gerencia'],
@@ -71,24 +73,43 @@ DEFAULT_MENU_ROLES = {
'/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura', 'gerencia'],
'/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura', 'gerencia'],
'/reportes?tab=exportar': ['admin', 'recepcion', 'lectura', 'gerencia'],
'/configuracion': ['admin'],
'/cumpleanos': ['admin', 'recepcion'],
'/wacrm/messages': ['admin', 'recepcion'],
'/wacrm/leads': ['admin', 'recepcion'],
'/configuracion': ['admin', 'gerencia'],
'/cumpleanos': ['admin', 'recepcion', 'gerencia', 'marketing'],
'/wacrm/messages': ['admin', 'recepcion', 'gerencia', 'marketing'],
'/wacrm/leads': ['admin', 'recepcion', 'gerencia', 'marketing'],
# El chat interno se lista explícitamente para dejar fuera a marketing
# (antes, al no estar listado, lo veía todo el mundo).
'/chat': ['admin', 'medico', 'recepcion', 'enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'gerencia', 'lectura'],
}
# Marketing NO hereda los menús de 'lectura': sólo estos (mínimo privilegio).
MARKETING_MENUS = (
'/', '/agenda', '/pacientes', '/cumpleanos', '/visitas',
'/wacrm/messages', '/wacrm/leads',
)
# Roles nuevos que por default ven lo mismo que 'lectura'.
READ_ONLY_NEW_ROLES = ('enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'marketing')
def default_menu_roles():
"""Matriz por default: MENU_ROLES + roles nuevos donde esté 'lectura'."""
"""Matriz por default: MENU_ROLES + roles nuevos donde esté 'lectura'.
Marketing es la excepción: no hereda lo de 'lectura', sólo entra en sus
menús explícitos (agenda, pacientes, cumpleaños, visitas y WACRM).
"""
matrix = {}
for href, roles in DEFAULT_MENU_ROLES.items():
r = list(roles)
if 'lectura' in roles:
r.extend(nr for nr in READ_ONLY_NEW_ROLES if nr not in r)
matrix[href] = r
for href in matrix:
matrix[href] = [r for r in matrix[href] if r != 'marketing']
for href in MARKETING_MENUS:
matrix.setdefault(href, [])
if 'marketing' not in matrix[href]:
matrix[href].append('marketing')
return matrix