# Copyright (C) 2020 by Animath # SPDX-License-Identifier: GPL-3.0-or-later import os from asgiref.sync import async_to_sync from django.core.management import BaseCommand from registration.models import AdminRegistration, Registration from tfjm.matrix import Matrix, RoomPreset, RoomVisibility class Command(BaseCommand): def handle(self, *args, **options): Matrix.set_display_name("Bot du TFJM²") if not os.getenv("SYNAPSE_PASSWORD"): avatar_uri = "plop" else: # pragma: no cover if not os.path.isfile(".matrix_avatar"): stat_file = os.stat("tfjm/static/logo.svg") with open("tfjm/static/logo.svg", "rb") as f: resp = Matrix.upload(f, filename="logo.svg", content_type="image/svg", filesize=stat_file.st_size)[0][0] avatar_uri = resp.content_uri with open(".matrix_avatar", "w") as f: f.write(avatar_uri) Matrix.set_avatar(avatar_uri) with open(".matrix_avatar", "r") as f: avatar_uri = f.read().rstrip(" \t\r\n") if not async_to_sync(Matrix.resolve_room_alias)("#faq:tfjm.org"): Matrix.create_room( visibility=RoomVisibility.public, alias="faq", name="FAQ", topic="Posez toutes vos questions ici !", federate=False, preset=RoomPreset.public_chat, ) if not async_to_sync(Matrix.resolve_room_alias)("#annonces:tfjm.org"): Matrix.create_room( visibility=RoomVisibility.public, alias="annonces", name="Annonces", topic="Informations importantes du TFJM²", federate=False, preset=RoomPreset.public_chat, ) if not async_to_sync(Matrix.resolve_room_alias)("#je-cherche-une-equipe:tfjm.org"): Matrix.create_room( visibility=RoomVisibility.public, alias="je-cherche-une-equipe", name="Je cherche une équipe", topic="Le Tinder du TFJM²", federate=False, preset=RoomPreset.public_chat, ) if not async_to_sync(Matrix.resolve_room_alias)("#flood:tfjm.org"): Matrix.create_room( visibility=RoomVisibility.public, alias="flood", name="Flood", topic="Discutez de tout et de rien !", federate=False, preset=RoomPreset.public_chat, ) Matrix.set_room_avatar("#annonces:tfjm.org", avatar_uri) Matrix.set_room_avatar("#faq:tfjm.org", avatar_uri) Matrix.set_room_avatar("#je-cherche-une-equipe:tfjm.org", avatar_uri) Matrix.set_room_avatar("#flood:tfjm.org", avatar_uri) Matrix.set_room_power_level_event("#annonces:tfjm.org", "events_default", 50) for r in Registration.objects.all(): Matrix.invite("#annonces:tfjm.org", f"@{r.matrix_username}:tfjm.org") Matrix.invite("#faq:tfjm.org", f"@{r.matrix_username}:tfjm.org") Matrix.invite("#je-cherche-une-equipe:tfjm.org", f"@{r.matrix_username}:tfjm.org") Matrix.invite("#flood:tfjm.org", f"@{r.matrix_username}:tfjm.org") for admin in AdminRegistration.objects.all(): Matrix.set_room_power_level("#annonces:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) Matrix.set_room_power_level("#faq:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95) Matrix.set_room_power_level("#flood:tfjm.org", f"@{admin.matrix_username}:tfjm.org", 95)