Utilizamos Discourse para nuestra organización gestionada por voluntarios y con base de miembros, y me gustaría saber si existe una forma rápida de obtener un informe de la membresía de los grupos.
Actualmente tenemos alrededor de 60 usuarios y 20 grupos, ya que usamos Discourse para ayudar a gestionar nuestra organización, especialmente donde las carencias del correo electrónico se hacen evidentes en las discusiones grupales.
Encuentro que algunas de las interfaces de permisos de Discourse son un poco limitantes a veces. Vengo del mundo de la administración de sistemas de TI, por lo que estoy acostumbrado a poder anidar grupos en cosas como Active Directory, pero espero no estar proyectando demasiado eso sobre Discourse, ya que son cosas obviamente muy diferentes.
Espero poder generar fácilmente un informe que tenga una lista de quién está en qué grupo para ayudarme a mantener nuestras categorías organizadas y ahorrar tiempo.
Sé que esto solo será posible si mantengo la membresía de los grupos actualizada, pero es la mejor manera que conozco.
Asumo que la anidación de grupos no es posible.
¿Cuál es la razón de ser del mecanismo que genera este error?
Entiendo que no querrían que una categoría hija fuera accesible cuando la categoría padre no lo está (eso está bien para una unidad de red compartida, pero no tiene sentido en Discourse).
¿Pero podrían cambiarlo a una alerta que indique que el grupo en cuestión no es accesible por la categoría padre, y que al continuar con este cambio, se les asignarán los permisos mínimos necesarios (o un nivel seleccionable)?
¿Podría haber una consulta de Data Explorer que te proporcione esa información? Una lista de cada grupo y los miembros de cada grupo. ¿Es eso lo que buscas?
Si esta es la información que necesitas, estas consultas pueden ayudarte.
LISTAR GRUPOS POR NOMBRE
SELECT
g.name group_name,
user_count
FROM groups g
ORDER BY g.name ASC
LISTAR GRUPO Y MIEMBROS
-- [parámetros]
-- string :group_name
SELECT
g.name group_name,
u.username user_name,
gu.owner group_owner
FROM group_users gu
LEFT JOIN groups g ON gu.group_id = g.id
LEFT JOIN users u ON gu.user_id = u.id
WHERE user_id > 0
AND g.name LIKE '%'||:group_name||'%'
ORDER BY g.name ASC, gu.owner DESC
LISTAR TODOS LOS GRUPOS Y MIEMBROS
SELECT
g.name group_name,
u.username user_name,
gu.owner group_owner
FROM group_users gu
LEFT JOIN groups g ON gu.group_id = g.id
LEFT JOIN users u ON gu.user_id = u.id
WHERE user_id > 0
ORDER BY g.name ASC, gu.owner DESC