From 3c52c1d002d4ce630c0661cd2039d968df8226c3 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Thu, 27 Feb 2020 15:36:12 +0100 Subject: [PATCH] Users have now automatically an attached profile to a user (fix an old bug) --- apps/member/apps.py | 13 +++++++++++++ apps/member/signals.py | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/apps/member/apps.py b/apps/member/apps.py index 2d7f4ab..20be3e3 100644 --- a/apps/member/apps.py +++ b/apps/member/apps.py @@ -2,9 +2,22 @@ # SPDX-License-Identifier: GPL-3.0-or-later from django.apps import AppConfig +from django.conf import settings +from django.db.models.signals import pre_save from django.utils.translation import gettext_lazy as _ +from .signals import save_user_note + class MemberConfig(AppConfig): name = 'member' verbose_name = _('member') + + def ready(self): + """ + Define app internal signals to interact with other apps + """ + pre_save.connect( + save_user_note, + sender=settings.AUTH_USER_MODEL, + ) diff --git a/apps/member/signals.py b/apps/member/signals.py index 4e945ad..5debce4 100644 --- a/apps/member/signals.py +++ b/apps/member/signals.py @@ -1,2 +1,15 @@ # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later + +def save_user_note(instance, created, raw, **_kwargs): + """ + Hook to create and save a profile when an user is updated if it is not registered with the signup form + """ + if raw: + # When provisionning data, do not try to autocreate + return + + if created: + from .models import Profile + Profile.objects.get_or_create(user=instance) + instance.profile.save()