fix old subscribers group attribution

Si un utilisateur faisait sa première cotisation alors qu'il avait déjà un compte AE (par exemple, en effectuant un achat sur l'eboutic avant sa cotisation), alors il pouvait se retrouver hors du groupe Anciens cotisants.
This commit is contained in:
imperosol
2025-08-31 20:37:44 +02:00
parent 81260b34a2
commit 2086d23b50
3 changed files with 40 additions and 15 deletions

View File

@@ -18,7 +18,6 @@ from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
from django.conf import settings
from django.contrib.auth.forms import PasswordResetForm
from django.core.exceptions import ValidationError
from django.db import models
from django.urls import reverse
@@ -73,23 +72,19 @@ class Subscription(models.Model):
return f"No user - {self.pk}"
def save(self, *args, **kwargs):
super().save()
from counter.models import Customer
_, account_created = Customer.get_or_create(self.member)
if account_created:
if not self.member.was_subscribed:
# This is the first ever subscription for this user
customer, _ = Customer.get_or_create(self.member)
# Someone who subscribed once will be considered forever
# as an old subscriber.
self.member.groups.add(settings.SITH_GROUP_OLD_SUBSCRIBERS_ID)
form = PasswordResetForm({"email": self.member.email})
if form.is_valid():
form.save(
use_https=True,
email_template_name="core/new_user_email.jinja",
subject_template_name="core/new_user_email_subject.jinja",
from_email="ae@utbm.fr",
)
self.member.make_home()
self.member.make_home()
# now that the user is an old subscriber, change the cached
# property accordingly
self.member.__dict__["was_subscribed"] = True
super().save()
def get_absolute_url(self):
return reverse("core:user_edit", kwargs={"user_id": self.member_id})