Instal·lar plugin discourse-data-explorer

Vull fer lo que diu aquest senyor Sync group membership with external list of email addresses - support - Discourse Meta

Diuen que és una idea terrible

Però és similar a com estem gestionant sincronia de exo-membres en els diferents canals (ara per ara): matrix i llista de correu

Si fos per nom d’usuari, ja estaria fet via API Discourse API Docs

Però no exposa per correu electrònic (lo qual és realment, a priori, més convenient)

El lloc on suggereixen el discourse-data-explorer ( GitHub - discourse/discourse-data-explorer: SQL Queries for admins in Discourse ) és aquí per un escenari similar Exporting group members emails as csv - support - Discourse Meta ; de fet, probablement aquest plugin ens servirà per altres extraccions de dades rares que vulguem fer en el futur

cc @evilham

Ei, no cal:

https://docs.discourse.org/#tag/Users/operation/adminListUsers

Una crida a: https://agora.eXO.cat/admin/users/list/active.json?show_emails=true dona els usuaris actius amb els correus.

M’adono que no he explicat prou bé el propòsit: necessitem poder fer una consulta que retorni el llistat dels correus electrònics que formen part del grup de membres d’eXO d’agora.exo.cat per donar-los d’alta o de baixa segons l’estat de la seva afiliació a l’associació.

La consulta que comentes [1], només retorna tots els usuaris de la instància d’agora.exo.cat, i no és possible especificar el llistat d’usuaris del grup eXO (la API de Groups només deixa amb el username).

No ens serviria de gaire sincronitzar el llistat de membres d’eXO amb els usuaris d’àgora perquè vam decidir que aquesta instància seria de registre obert, i només el subgrup d’usuaris registrats en agora.exo.cat tindria accés al grup privat d’eXO-membres. Per exemple, una persona que es dona d’alta no té per què ser membre d’eXO, ni li donaríem de baixa en cas de donar-se de baixa com a membre de l’associació.

[1] Discourse API Docs

Crec que havia entès i potser m’equivoco, però diria que tenim tota la informació necessària amb l’API estàndard:

# on _d és curl -X ...`
all_user_data="$(_d /admin/users/list/active.json?show_emails=true)"
group_data="$(_d /groups/exo-membres/members.json)"
group_users="$(echo "${group_data}" | jq -r '.members[].username')"
user_email_mapping="$(echo "${all_user_data}" | jq -r '.[] | [.username, .email] | @tsv')"
for group_user in ${group_users}; do
	echo "${user_email_mapping}"  | awk "/^${group_user}\t/"
done

Genera només per usuaris membres del grup:

username1	email1

vale! cert, disculpa, i gràcies per deixar-m’ho ja mig fet!! :slight_smile: . Tanco això perquè ja no és necessari