feat(purchase/models.py): handle mock refunds

This commit is contained in:
2026-03-20 13:14:03 +01:00
parent 84a6c4cf5e
commit d575c836e9

View File

@@ -1,5 +1,6 @@
from django.db import models
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import Group
from django.db import models
class CoursePurchase(models.Model): class CoursePurchase(models.Model):
@@ -7,3 +8,16 @@ class CoursePurchase(models.Model):
course = models.ForeignKey("home.CoursePage", on_delete=models.CASCADE) course = models.ForeignKey("home.CoursePage", on_delete=models.CASCADE)
purchased_at = models.DateTimeField(auto_now_add=True) purchased_at = models.DateTimeField(auto_now_add=True)
refunded = models.BooleanField(default=False) 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)