diff --git a/apps/participation/management/commands/fix_matrix_channels.py b/apps/participation/management/commands/fix_matrix_channels.py index f9d3bb9..459224f 100644 --- a/apps/participation/management/commands/fix_matrix_channels.py +++ b/apps/participation/management/commands/fix_matrix_channels.py @@ -30,8 +30,8 @@ class Command(BaseCommand): else: stat_file = os.stat("tfjm/static/logo.png") with open("tfjm/static/logo.png", "rb") as f: - resp = await Matrix.upload(f, filename="logo.png", content_type="image/png", - filesize=stat_file.st_size)[0][0] + resp = (await Matrix.upload(f, filename="logo.png", content_type="image/png", + filesize=stat_file.st_size))[0][0] avatar_uri = resp.content_uri with open(".matrix_avatar", "w") as f: f.write(avatar_uri) @@ -169,15 +169,24 @@ class Command(BaseCommand): await Matrix.invite("#dev-bot:tfjm.org", f"@{admin.matrix_username}:tfjm.org") self.stdout.write(f"Give admin permissions for {admin}...") - await Matrix.set_room_power_level("#aide-jurys-orgas:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#annonces:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#bienvenue:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#bot:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#cno:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#dev-bot:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#faq:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#flood:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level("#je-cherche-une-equipe:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#aide-jurys-orgas:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#annonces:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#bienvenue:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#bot:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#cno:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#dev-bot:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#faq:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#flood:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level("#je-cherche-une-equipe:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) # Create tournament-specific channels for tournament in Tournament.objects.all(): @@ -265,12 +274,18 @@ class Command(BaseCommand): await Matrix.invite(f"#tirage-au-sort-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org") self.stdout.write(f"Give permissions to {admin} in all channels of the tournament {name}...") - await Matrix.set_room_power_level(f"#annonces-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level(f"#flood-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level(f"#general-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level(f"#jury-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level(f"#orga-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) - await Matrix.set_room_power_level(f"#tirage-au-sort-{slug}:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level(f"#annonces-{slug}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level(f"#flood-{slug}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level(f"#general-{slug}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level(f"#jury-{slug}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level(f"#orga-{slug}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) + await Matrix.set_room_power_level(f"#tirage-au-sort-{slug}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org", 95) # Invite organizers and give permissions for orga in tournament.organizers.all(): @@ -283,11 +298,16 @@ class Command(BaseCommand): await Matrix.invite(f"#tirage-au-sort-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org") if not orga.is_admin: - await Matrix.set_room_power_level(f"#annonces-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org", 50) - await Matrix.set_room_power_level(f"#flood-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org", 50) - await Matrix.set_room_power_level(f"#general-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org", 50) - await Matrix.set_room_power_level(f"#jury-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org", 50) - await Matrix.set_room_power_level(f"#orga-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org", 50) + await Matrix.set_room_power_level(f"#annonces-{slug}:tfjm.org", + f"@{orga.matrix_username}:tfjm.org", 50) + await Matrix.set_room_power_level(f"#flood-{slug}:tfjm.org", + f"@{orga.matrix_username}:tfjm.org", 50) + await Matrix.set_room_power_level(f"#general-{slug}:tfjm.org", + f"@{orga.matrix_username}:tfjm.org", 50) + await Matrix.set_room_power_level(f"#jury-{slug}:tfjm.org", + f"@{orga.matrix_username}:tfjm.org", 50) + await Matrix.set_room_power_level(f"#orga-{slug}:tfjm.org", + f"@{orga.matrix_username}:tfjm.org", 50) await Matrix.set_room_power_level(f"#tirage-au-sort-{slug}:tfjm.org", f"@{orga.matrix_username}:tfjm.org", 50) @@ -295,10 +315,14 @@ class Command(BaseCommand): for participation in tournament.participations.filter(valid=True).all(): for participant in participation.team.participants.all(): self.stdout.write(f"Invite {participant} in public channels of the tournament {name}...") - await Matrix.invite(f"#annonces-{slug}:tfjm.org", f"@{participant.matrix_username}:tfjm.org") - await Matrix.invite(f"#flood-{slug}:tfjm.org", f"@{participant.matrix_username}:tfjm.org") - await Matrix.invite(f"#general-{slug}:tfjm.org", f"@{participant.matrix_username}:tfjm.org") - await Matrix.invite(f"#tirage-au-sort-{slug}:tfjm.org", f"@{participant.matrix_username}:tfjm.org") + await Matrix.invite(f"#annonces-{slug}:tfjm.org", + f"@{participant.matrix_username}:tfjm.org") + await Matrix.invite(f"#flood-{slug}:tfjm.org", + f"@{participant.matrix_username}:tfjm.org") + await Matrix.invite(f"#general-{slug}:tfjm.org", + f"@{participant.matrix_username}:tfjm.org") + await Matrix.invite(f"#tirage-au-sort-{slug}:tfjm.org", + f"@{participant.matrix_username}:tfjm.org") # Create pool-specific channels for pool in tournament.pools.all(): @@ -307,8 +331,9 @@ class Command(BaseCommand): await Matrix.create_room( visibility=RoomVisibility.public, alias=f"poule-{slug}-{pool.id}", - name=f"{name} - Jour {pool.round} - Poule " - f"{', '.join(participation.team.trigram for participation in pool.participations.all())}", + name= + f"{name} - Jour {pool.round} - Poule " + f"{', '.join(participation.team.trigram for participation in pool.participations.all())}", topic=f"Discussion avec les équipes - {pool}", federate=False, preset=RoomPreset.private_chat, @@ -317,8 +342,9 @@ class Command(BaseCommand): await Matrix.create_room( visibility=RoomVisibility.public, alias=f"poule-{slug}-{pool.id}-jurys", - name=f"{name} - Jour {pool.round} - Jurys poule " - f"{', '.join(participation.team.trigram for participation in pool.participations.all())}", + name= + f"{name} - Jour {pool.round} - Jurys poule " + f"{', '.join(participation.team.trigram for participation in pool.participations.all())}", topic=f"Discussion avec les jurys - {pool}", federate=False, preset=RoomPreset.private_chat, @@ -331,33 +357,39 @@ class Command(BaseCommand): isAudioConf='false', displayName='$matrix_display_name', avatarUrl='$matrix_avatar_url', userId='$matrix_user_id')) \ .replace("%24", "$") - await Matrix.add_integration(f"#poule-{slug}-{pool.id}:tfjm.org", - f"https://scalar.vector.im/api/widgets/bigbluebutton.html?{url_params}", - f"bbb-{slug}-{pool.id}", "bigbluebutton", "BigBlueButton", str(pool)) - await Matrix.add_integration(f"#poule-{slug}-{pool.id}:tfjm.org", - f"https://board.tfjm.org/boards/{slug}-{pool.id}", f"board-{slug}-{pool.id}", - "customwidget", "Tableau", str(pool)) + await Matrix.add_integration( + f"#poule-{slug}-{pool.id}:tfjm.org", + f"https://scalar.vector.im/api/widgets/bigbluebutton.html?{url_params}", + f"bbb-{slug}-{pool.id}", "bigbluebutton", "BigBlueButton", str(pool)) + await Matrix.add_integration( + f"#poule-{slug}-{pool.id}:tfjm.org", + f"https://board.tfjm.org/boards/{slug}-{pool.id}", f"board-{slug}-{pool.id}", + "customwidget", "Tableau", str(pool)) # Invite admins and give permissions for admin in AdminRegistration.objects.all(): - await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", f"@{admin.matrix_username}:tfjm.org") - await Matrix.invite(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", f"@{admin.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", + f"@{admin.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", + f"@{admin.matrix_username}:tfjm.org") await Matrix.set_room_power_level(f"#poule-{slug}-{pool.id}:tfjm.org", - f"@{admin.matrix_username}:tfjm.org", 95) + f"@{admin.matrix_username}:tfjm.org", 95) await Matrix.set_room_power_level(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", - f"@{admin.matrix_username}:tfjm.org", 95) + f"@{admin.matrix_username}:tfjm.org", 95) # Invite organizers and give permissions for orga in VolunteerRegistration.objects.all(): - await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", f"@{orga.matrix_username}:tfjm.org") - await Matrix.invite(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", f"@{orga.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", + f"@{orga.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", + f"@{orga.matrix_username}:tfjm.org") if not orga.is_admin: await Matrix.set_room_power_level(f"#poule-{slug}-{pool.id}:tfjm.org", - f"@{orga.matrix_username}:tfjm.org", 50) + f"@{orga.matrix_username}:tfjm.org", 50) await Matrix.set_room_power_level(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", - f"@{orga.matrix_username}:tfjm.org", 50) + f"@{orga.matrix_username}:tfjm.org", 50) # Invite the jury, give good permissions for jury in pool.juries.all(): @@ -366,12 +398,16 @@ class Command(BaseCommand): await Matrix.invite(f"#flood-{slug}:tfjm.org", f"@{jury.matrix_username}:tfjm.org") await Matrix.invite(f"#jury-{slug}:tfjm.org", f"@{jury.matrix_username}:tfjm.org") await Matrix.invite(f"#orga-{slug}:tfjm.org", f"@{jury.matrix_username}:tfjm.org") - await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", f"@{jury.matrix_username}:tfjm.org") - await Matrix.invite(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", f"@{jury.matrix_username}:tfjm.org") - await Matrix.invite(f"#tirage-au-sort-{slug}:tfjm.org", f"@{jury.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", + f"@{jury.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", + f"@{jury.matrix_username}:tfjm.org") + await Matrix.invite(f"#tirage-au-sort-{slug}:tfjm.org", + f"@{jury.matrix_username}:tfjm.org") if not jury.is_admin: - await Matrix.set_room_power_level(f"#jury-{slug}:tfjm.org", f"@{jury.matrix_username}:tfjm.org", 50) + await Matrix.set_room_power_level(f"#jury-{slug}:tfjm.org", + f"@{jury.matrix_username}:tfjm.org", 50) await Matrix.set_room_power_level(f"#poule-{slug}-{pool.id}:tfjm.org", f"@{jury.matrix_username}:tfjm.org", 50) await Matrix.set_room_power_level(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", @@ -380,7 +416,8 @@ class Command(BaseCommand): # Invite participants to the right pool for participation in pool.participations.all(): for participant in participation.team.participants.all(): - await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", f"@{participant.matrix_username}:tfjm.org") + await Matrix.invite(f"#poule-{slug}-{pool.id}:tfjm.org", + f"@{participant.matrix_username}:tfjm.org") # Create private channels for teams for team in Team.objects.all(): @@ -395,7 +432,8 @@ class Command(BaseCommand): preset=RoomPreset.private_chat, ) for participant in team.participants.all(): - await Matrix.invite(f"#equipe-{team.trigram.lower}:tfjm.org", f"@{participant.matrix_username}:tfjm.org") + await Matrix.invite(f"#equipe-{team.trigram.lower}:tfjm.org", + f"@{participant.matrix_username}:tfjm.org") await Matrix.set_room_power_level(f"#equipe-{team.trigram.lower()}:tfjm.org", f"@{participant.matrix_username}:tfjm.org", 50)