From d575c836e94cfbd3ab52447a570f014e824e7637 Mon Sep 17 00:00:00 2001 From: Artur Borecki Date: Fri, 20 Mar 2026 13:14:03 +0100 Subject: [PATCH] feat(purchase/models.py): handle mock refunds --- purchase/models.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/purchase/models.py b/purchase/models.py index 9bc20d7..74586af 100644 --- a/purchase/models.py +++ b/purchase/models.py @@ -1,5 +1,6 @@ -from django.db import models from django.conf import settings +from django.contrib.auth.models import Group +from django.db import models class CoursePurchase(models.Model): @@ -7,3 +8,16 @@ class CoursePurchase(models.Model): course = models.ForeignKey("home.CoursePage", on_delete=models.CASCADE) purchased_at = models.DateTimeField(auto_now_add=True) refunded = models.BooleanField(default=False) + + def mock_refund(self): + self.refunded = True + self.save() + + def save(self, *args, **kwargs): + super().save(*args, **kwargs) + group_name = f"course_{self.course.id}_access" + + group, _ = Group.objects.get_or_create(name=group_name) + if self.refunded: + print(f"Removing user {self.user} from group {group_name} due to refund") + self.user.groups.remove(group)