mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-07-04 07:32:18 +02:00
Clone Corres2math platform
This commit is contained in:
56
apps/registration/signals.py
Normal file
56
apps/registration/signals.py
Normal file
@ -0,0 +1,56 @@
|
||||
# Copyright (C) 2020 by Animath
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from tfjm.lists import get_sympa_client
|
||||
from tfjm.matrix import Matrix
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from .models import AdminRegistration, Registration
|
||||
|
||||
|
||||
def set_username(instance, **_):
|
||||
"""
|
||||
Ensure that the user username is always equal to the user email address.
|
||||
"""
|
||||
instance.username = instance.email
|
||||
|
||||
|
||||
def send_email_link(instance, **_):
|
||||
"""
|
||||
If the email address got changed, send a new validation link
|
||||
and update the registration status in the team mailing list.
|
||||
"""
|
||||
if instance.pk:
|
||||
old_instance = User.objects.get(pk=instance.pk)
|
||||
if old_instance.email != instance.email:
|
||||
registration = Registration.objects.get(user=instance)
|
||||
registration.email_confirmed = False
|
||||
registration.save()
|
||||
registration.user = instance
|
||||
registration.send_email_validation_link()
|
||||
|
||||
if registration.participates and registration.team:
|
||||
get_sympa_client().unsubscribe(old_instance.email, f"equipe-{registration.team.trigram.lower()}", False)
|
||||
get_sympa_client().subscribe(instance.email, f"equipe-{registration.team.trigram.lower()}", False,
|
||||
f"{instance.first_name} {instance.last_name}")
|
||||
|
||||
|
||||
def create_admin_registration(instance, **_):
|
||||
"""
|
||||
When a super user got created through console,
|
||||
ensure that an admin registration is created.
|
||||
"""
|
||||
if instance.is_superuser:
|
||||
AdminRegistration.objects.get_or_create(user=instance)
|
||||
|
||||
|
||||
def invite_to_public_rooms(instance: Registration, created: bool, **_):
|
||||
"""
|
||||
When a user got registered, automatically invite the Matrix user into public rooms.
|
||||
"""
|
||||
if not created:
|
||||
Matrix.invite("#annonces:tfjm.org", f"@{instance.matrix_username}:tfjm.org")
|
||||
Matrix.invite("#faq:tfjm.org", f"@{instance.matrix_username}:tfjm.org")
|
||||
Matrix.invite("#je-cherche-une-equip:tfjm.org",
|
||||
f"@{instance.matrix_username}:tfjm.org")
|
||||
Matrix.invite("#flood:tfjm.org", f"@{instance.matrix_username}:tfjm.org")
|
Reference in New Issue
Block a user