階層的なグループメンバーシップ(グループ内のグループ)

For our running club, I’m coordinating a year-long challenge that has a team component. For each 10-year age-group team, I’m creating a Discourse group so they can be @mentioned and potentially have their own conversations, though I very much doubt anyone will figure that out. So I have seven groups for each of the age-group teams, and I have to update those manually as people register.

I also want to have an uber-group that contains all the people who are participating in the challenge. It would be a LOT easier if I could have the larger Challengers group merely contain the sub-groups for 19-and-under, 20-29, 30-39, and so on. That way I could just manage the sub-groups and have the changes flow through to the uber-group.

Is there (or could there be) a way to do this, or am I stuck having to manually type in every username from the sub-groups? (I think this will be several hundred people all told, and a weekly task.)

「いいね!」 6

You should be same to use Bulk Add to Group, which will save you a lot of typing!

I don’t think we have plans to implement full hierarchical group membership resolution.

「いいね!」 2

I keep being confused by references Bulk Add to Group, since it doesn’t appear in the UI as far as I can tell—the screenshots from the 2015 topic you linked to don’t match with what I see now. Is it just the same as using the Add Members dialog within a group?

And how can I copy a list of members of one group to be able to bulk add to another? The best workflow I can come up with at the moment is to copy the text of the Members page and use a style-savvy grep (in Nisus Writer Pro) to copy the usernames. Doable, but not exactly easy.

「いいね!」 1

There are quite a few references to the “bulk add to group” feature here on Meta, but I don’t see it active anymore at https://discourse.example.org/admin/groups/bulk, just a blank page (I checked a couple different sites where I have admin rights). Do you see anything there @adamengst?

「いいね!」 1

Sorry for the delay—missed the notification. No, I don’t have a page at

https://forum.fingerlakesrunners.org/admin/groups/bulk at all (404), and the main groups page is at FLRC Forum

No mention of Bulk Add anywhere that I can find.

「いいね!」 1

I guess this is a bit of a hidden feature, but you can use the bulk invite feature to add existing users to groups. Just prep a csv with the email address and group as explained in the modal, and upload it. The users will not be emailed.

「いいね!」 2

@tobiaseigen Aha! Do you happen to know if that would handle group updates for existing users if the email address in question already has an account?

Yes. That is precisely what I mean by this:

This feature seems to be doing double duty and we can improve the UI. I will propose something.

「いいね!」 3

Awesome, thanks! Off to LibreOffice Calc I go! :keyboard:

「いいね!」 1

Thanks! That’s getting closer, although I’ll note that keying off email address often works poorly for me because lots of people have multiple addresses, so I have to verify ahead of time whether I’m inviting the one that’s associated with an account or another one that will be confusing (and potentially set them up with a second account).

I don’t know how the underlying foundation works, but it would seem simplest to allow groups to contain references to other groups.

「いいね!」 1

You could always do a user export and then use the exported CSV to create a new list to import back using the bulk invite feature. Sounds like you just need to do this once to get the system set up with your existing users, then manually when new people join or make a change to their age bracket.

Maye there’s a case for custom code to semi-automate this for your community - you could post a request in marketplace if you have a budget.

「いいね!」 1

Good point on the user export—I wasn’t thinking about that as a way to populate the list with accounts to start. I’ll keep noodling on this and see how it works out.

「いいね!」 1

階層グループ(グループがグループのメンバーである場合)には、継承されたグループからメンバーを自動的に削除するという追加の利点があります。

このような機能を「手動で」実装するには、グループメンバーシップが階層的に上位のグループによって継承されたのか、直接設定されたのかを覚えておく必要があります。

階層グループ機能を実装するために外部ユーザーディレクトリサービス(ldap)を使用することについてコメントしていただけますか?

「いいね!」 2

@angus このスレッドの意図を GroupAssociatedGroup がすでに実装しているかどうか疑問に思っています。

いいえ、その機能は外部サービス上のグループとDiscourseグループの同期に関するものであり、グループ階層に関するものではありません。

「いいね!」 1

このスレッドを開始したので、私の階層グループの要求が依然として完全に有効であることを付け加えたいと思います。

Bulk Invite to Group機能は、私の場合は、登録するにつれて、特定の年齢ベースのグループと、4か月の期間にわたるすべての年齢ベースのグループを網羅する全体的なグループに人々を追加するため、まったく役に立ちません。

開発者に、毎週手作業で行うのがいかに退屈であるかがわかったので、今年はプロセスを自動化できるかどうかを確認します。

「いいね!」 1

@adamengst ここに進展はありますか?

はい、実際、私の開発者は、レース登録に使用している WebScorer のデータを Discourse グループと同期させることができました。名前が一致する必要がありますが、彼は一致しない場合に表示される管理ページを作成しました。

そのため、階層はありませんが、複数のグループが自動的に入力されるため、私が抱えていた主な必要性がなくなりました。

オープンソース コードなので、興味のある人が仕組みを知りたい場合は共有できると思います。

「いいね!」 3

私もこれについて直接リクエストを受けましたので、@SteveDesmond.ca の Discourse グループへの書き込みコードに興味のある方は、以下で入手できます。

スティーブは、それについての質問に喜んで答えてくれるとのことです。

「いいね!」 2

以前アダムが言及していた特定のコードのアウトラインは次のとおりです。

  1. (L36) 外部システムですべてのユーザーを取得する
  2. (L37) Discourseですべてのユーザーを取得する
  3. (L38-39) 問題のグループのすべてのメンバーを取得する(この場合、globalが「スーパーグループ」です)
  4. (L46-78) 外部システムの各ユーザーについて、Discourseに存在するかどうかを確認し、どのグループにすでに属していて、追加する必要があるかをマッピングする
「いいね!」 1