I'm trying to make the users of type Manager to have a free 4 days for example then after that they should pay to get access to some features I tried this
class CustomUser(AbstractUser):
territorial=models.CharField(max_length=80)
phone_number=models.CharField(max_length=15)
is_real=models.BooleanField(default=False)
is_resident=models.BooleanField(default=False)
is_manager=models.BooleanField(default=False)
def __str__(self) :
return self.username
def fullname(self):
return f'{self.first_name} {self.last_name}'
class Manager(models.Model):
user=models.OneToOneField(CustomUser,on_delete=models.CASCADE,related_name='manager')
village_name=models.CharField(max_length=60)
manimg=models.ImageField(blank=True,null=True)
is_has_dwar=models.BooleanField(default=False)
is_subscribed=models.BooleanField(default=False)
created_at=models.DateTimeField(auto_now_add=True,blank=True,null=True)
def __str__(self):
return self.user.username
def save(self,*args, **kwargs):
two_days_later = timezone.now() + timedelta(minutes=5)
if timezone.now() >= two_days_later:
self.is_subscribed = False
else:
self.is_subscribed=True
super().save(*args, **kwargs)
I also tried this
@receiver(post_save, sender=CustomUser)
def set_manager_subscription(sender, instance, created, **kwargs):
if created and instance.is_manager:
manager = instance.manager
manager.is_subscribed = True
manager.save()
# Set is_subscribed back to False after two days
two_days_later = manager.created_at + timezone.timedelta(days=2)
if timezone.now() > two_days_later:
manager.is_subscribed = False
manager.save()
but with no result so please if you have any solutions or you handled this write it bellow and explain how it work , thanks in advance