Automatically create appropriated channels when tournaments/pools/participations are updated
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
parent
1e5d0ebcfc
commit
f26f102650
|
@ -2,8 +2,15 @@
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
|
from django.db.models.signals import post_save
|
||||||
|
|
||||||
|
|
||||||
class ChatConfig(AppConfig):
|
class ChatConfig(AppConfig):
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
default_auto_field = "django.db.models.BigAutoField"
|
||||||
name = "chat"
|
name = "chat"
|
||||||
|
|
||||||
|
def ready(self):
|
||||||
|
from chat import signals
|
||||||
|
post_save.connect(signals.create_tournament_channels, "participation.Tournament")
|
||||||
|
post_save.connect(signals.create_pool_channels, "participation.Pool")
|
||||||
|
post_save.connect(signals.create_team_channel, "participation.Participation")
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
from django.core.management import BaseCommand
|
from django.core.management import BaseCommand
|
||||||
from django.utils.translation import activate
|
from django.utils.translation import activate
|
||||||
|
|
||||||
from participation.models import Team, Tournament
|
from participation.models import Team, Tournament
|
||||||
from tfjm.permissions import PermissionType
|
from tfjm.permissions import PermissionType
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Copyright (C) 2024 by Animath
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
from chat.models import Channel
|
||||||
|
from participation.models import Participation, Pool, Tournament
|
||||||
|
from tfjm.permissions import PermissionType
|
||||||
|
|
||||||
|
|
||||||
|
def create_tournament_channels(instance: Tournament, **_kwargs):
|
||||||
|
tournament = instance
|
||||||
|
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Annonces",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.TOURNAMENT_MEMBER,
|
||||||
|
write_access=PermissionType.TOURNAMENT_ORGANIZER,
|
||||||
|
tournament=tournament,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Général",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.TOURNAMENT_MEMBER,
|
||||||
|
write_access=PermissionType.TOURNAMENT_MEMBER,
|
||||||
|
tournament=tournament,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Détente",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.TOURNAMENT_MEMBER,
|
||||||
|
write_access=PermissionType.TOURNAMENT_MEMBER,
|
||||||
|
tournament=tournament,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Juré⋅es",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.JURY_MEMBER,
|
||||||
|
write_access=PermissionType.JURY_MEMBER,
|
||||||
|
tournament=tournament,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
if tournament.remote:
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Président⋅es de jury",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.TOURNAMENT_JURY_PRESIDENT,
|
||||||
|
write_access=PermissionType.TOURNAMENT_JURY_PRESIDENT,
|
||||||
|
tournament=tournament,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_pool_channels(instance: Pool, **_kwargs):
|
||||||
|
pool = instance
|
||||||
|
tournament = pool.tournament
|
||||||
|
|
||||||
|
if tournament.remote:
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Poule {pool.short_name}",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.POOL_MEMBER,
|
||||||
|
write_access=PermissionType.POOL_MEMBER,
|
||||||
|
pool=pool,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"{tournament.name} - Poule {pool.short_name} - Jury",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TOURNAMENT,
|
||||||
|
read_access=PermissionType.JURY_MEMBER,
|
||||||
|
write_access=PermissionType.JURY_MEMBER,
|
||||||
|
pool=pool,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_team_channel(instance: Participation, **_kwargs):
|
||||||
|
if instance.valid:
|
||||||
|
Channel.objects.update_or_create(
|
||||||
|
name=f"Équipe {instance.team.trigram}",
|
||||||
|
defaults=dict(
|
||||||
|
category=Channel.ChannelCategory.TEAM,
|
||||||
|
read_access=PermissionType.TEAM_MEMBER,
|
||||||
|
write_access=PermissionType.TEAM_MEMBER,
|
||||||
|
team=instance.team,
|
||||||
|
),
|
||||||
|
)
|
4
tox.ini
4
tox.ini
|
@ -13,7 +13,7 @@ deps = coverage
|
||||||
|
|
||||||
commands =
|
commands =
|
||||||
python manage.py compilemessages -i .tox -i venv
|
python manage.py compilemessages -i .tox -i venv
|
||||||
coverage run --source=api,draw,logs,participation,registration,tfjm ./manage.py test api/ draw/ logs/ participation/ registration/ tfjm/
|
coverage run --source=api,draw,logs,participation,registration,tfjm ./manage.py test api/ chat/ draw/ logs/ participation/ registration/ tfjm/
|
||||||
coverage report -m
|
coverage report -m
|
||||||
|
|
||||||
[testenv:linters]
|
[testenv:linters]
|
||||||
|
@ -26,7 +26,7 @@ deps =
|
||||||
pep8-naming
|
pep8-naming
|
||||||
pyflakes
|
pyflakes
|
||||||
commands =
|
commands =
|
||||||
flake8 api/ draw/ logs/ participation/ registration/ tfjm/
|
flake8 api/ chat/ draw/ logs/ participation/ registration/ tfjm/
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
exclude =
|
exclude =
|
||||||
|
|
Loading…
Reference in New Issue