Membro de grupo hierárquico (grupos dentro de grupos)

Para nosso clube de corrida, estou coordenando um desafio anual que inclui uma componente em equipe. Para cada equipe de faixa etária de 10 anos, estou criando um grupo no Discourse para que possam ser mencionados com @ e, possivelmente, ter suas próprias conversas, embora eu duvide muito que alguém descubra isso. Então, tenho sete grupos para cada uma das equipes de faixa etária e preciso atualizá-los manualmente à medida que as pessoas se inscrevem.

Também quero ter um grupo principal que contenha todas as pessoas que estão participando do desafio. Seria MUITO mais fácil se eu pudesse fazer com que o grupo maior “Desafiadores” contivesse apenas os subgrupos para 19 anos ou menos, 20-29, 30-39 e assim por diante. Dessa forma, eu poderia apenas gerenciar os subgrupos e ter as alterações refletidas automaticamente no grupo principal.

Existe (ou poderia existir) uma maneira de fazer isso, ou estou condenado a ter que digitar manualmente cada nome de usuário dos subgrupos? (Acho que serão várias centenas de pessoas no total, o que se tornará uma tarefa semanal.)

Você deve usar a mesma função Adicionar em Massa ao Grupo, o que economizará muita digitação!

Acho que não temos planos de implementar a resolução completa de hierarquia de membros de grupo.

Fico sempre confuso com as referências a ‘Adicionar em Lote ao Grupo’, já que, pelo que consigo ver, isso não aparece na interface. As capturas de tela do tópico de 2015 que você vinculou não correspondem ao que vejo agora. Será que é apenas o mesmo que usar o diálogo ‘Adicionar Membros’ dentro de um grupo?

E como posso copiar uma lista de membros de um grupo para poder adicionar em lote a outro? O melhor fluxo de trabalho que consigo imaginar no momento é copiar o texto da página de Membros e usar um grep com estilo (no Nisus Writer Pro) para copiar os nomes de usuário. É viável, mas não exatamente fácil.

bastantes referências ao recurso “adicionar em massa ao grupo” aqui no Meta, mas não vejo mais que esteja ativo em https://discourse.example.org/admin/groups/bulk, apenas uma página em branco (verifiquei alguns sites diferentes onde tenho direitos de administrador). Você vê algo lá, @adamengst?

Desculpe pelo atraso — perdi a notificação. Não, eu não tenho uma página em

https://forum.fingerlakesrunners.org/admin/groups/bulk

(404), e a página principal de grupos está em FLRC Forum

Não há nenhuma menção a “Bulk Add” em lugar algum que eu possa encontrar.

Acho que isso é um recurso um pouco oculto, mas você pode usar a função de convite em massa para adicionar usuários existentes a grupos. Basta preparar um arquivo CSV com o endereço de e-mail e o grupo, conforme explicado no modal, e fazer o upload. Os usuários não receberão e-mails.

@tobiaseigen Ah! Você sabe se isso lida com atualizações em grupo para usuários existentes caso o endereço de e-mail em questão já tenha uma conta?

Sim. É exatamente isso que quero dizer com isto:

Parece que esse recurso está fazendo duas funções ao mesmo tempo e podemos melhorar a interface do usuário. Vou propor algo.

Incrível, obrigado! Agora é com o LibreOffice Calc! :keyboard:

Obrigado! Isso está ficando mais próximo, embora eu observe que usar o endereço de e-mail como referência frequentemente funciona mal para mim, pois muitas pessoas têm vários endereços. Por isso, preciso verificar com antecedência se estou convidando o endereço associado a uma conta ou outro que possa causar confusão (e potencialmente configurá-los com uma segunda conta).

Não sei como a base subjacente funciona, mas parece mais simples permitir que grupos contenham referências a outros grupos.

Você sempre pode fazer uma exportação de usuários e, em seguida, usar o CSV exportado para criar uma nova lista para importar de volta usando o recurso de convite em massa. Parece que você só precisa fazer isso uma vez para configurar o sistema com seus usuários existentes e, depois, manualmente, quando novas pessoas se juntarem ou fizerem alterações em sua faixa etária.

Talvez haja um caso para código personalizado para semi-automatizar isso para sua comunidade — você pode publicar uma solicitação em Marketplace se tiver um orçamento.

Bom ponto sobre a exportação de usuários — não havia pensado nisso como uma forma de popular a lista com contas para começar. Vou continuar refletindo sobre isso e ver como funciona.

Grupos hierárquicos (grupos como membros de grupos) teriam a vantagem adicional de remover automaticamente membros de grupos herdados.

Para implementar tal funcionalidade “manualmente”, você teria que se lembrar se uma associação de grupo foi herdada por um grupo hierarquicamente superior ou definida diretamente.

Você poderia comentar sobre o uso de um serviço de diretório de usuários externo (ldap) para implementar uma função de grupo hierárquico?

@angus Estou me perguntando se o GroupAssociatedGroup já implementa a intenção desta thread.

Não, esse recurso está relacionado à sincronização de grupos em serviços externos com grupos do Discourse, não com hierarquias de grupos.

Desde que comecei este tópico, pensei em dar minha opinião e dizer que meu pedido por grupos hierárquicos ainda é completamente relevante.

O recurso de Convite em Massa para Grupo simplesmente não entra em jogo porque, no meu caso, estou adicionando pessoas a grupos específicos baseados em idade e a um grupo geral que abrange todos os grupos baseados em idade ao longo de um período de 4 meses, à medida que elas se registram em outro sistema.

Vou ver se meu desenvolvedor consegue automatizar o processo este ano, agora que sei o quão absolutamente tedioso é fazer isso manualmente semanalmente.

@adamengst Algum progresso aqui?

Sim, na verdade meu desenvolvedor conseguiu sincronizar dados do Webscorer, que usamos para registro de corridas, com grupos do Discourse. Isso exige que os nomes coincidam, mas ele criou uma página de administração que mostra quando eles não coincidem.

Portanto, não há hierarquia, mas estamos preenchendo vários grupos automaticamente, o que remove a principal necessidade que eu tinha.

É código de código aberto, então provavelmente posso compartilhá-lo se alguém estiver interessado em ver como funciona.

Recebi uma solicitação direta para isso também, então se alguém quiser dar uma olhada no código de @SteveDesmond.ca para escrever em grupos do Discourse, ele está disponível em:

E Steve disse que está feliz em responder perguntas sobre isso.

Aqui está um esboço para o código específico que Adam mencionou anteriormente:

  1. (L36) obter todos os usuários no sistema externo
  2. (L37) obter todos os usuários no Discourse
  3. (L38-39) obter todos os membros dos grupos em questão (global é o “supergrupo” neste caso)
  4. (L46-78) para cada usuário no sistema externo, verificar se ele existe no Discourse e mapear a quais grupos ele já pertence e precisa ser adicionado