Keep user subscription state. Update it when user has unsubscribed

This commit is contained in:
Debanjum Singh Solanky
2023-11-08 12:08:36 -08:00
parent c52affc6d9
commit ef5c13f968
4 changed files with 35 additions and 2 deletions

View File

@@ -103,10 +103,21 @@ async def create_google_user(token: dict) -> KhojUser:
return user
async def set_user_unsubscribed(email: str, type="standard") -> KhojUser:
user = await KhojUser.objects.filter(email=email, subscription_type=type).afirst()
if user:
user.is_subscribed = False
await user.asave()
return user
else:
return None
async def set_user_subscribed(email: str, type="standard") -> KhojUser:
user = await KhojUser.objects.filter(email=email).afirst()
if user:
user.subscription_type = type
user.is_subscribed = True
start_date = user.subscription_renewal_date or datetime.now()
user.subscription_renewal_date = start_date + timedelta(days=30)
await user.asave()

View File

@@ -0,0 +1,17 @@
# Generated by Django 4.2.5 on 2023-11-08 19:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("database", "0013_khojuser_subscription_renewal_date_and_more"),
]
operations = [
migrations.AddField(
model_name="khojuser",
name="is_subscribed",
field=models.BooleanField(default=False),
),
]

View File

@@ -22,6 +22,7 @@ class KhojUser(AbstractUser):
subscription_type = models.CharField(
max_length=20, choices=SubscriptionType.choices, default=SubscriptionType.TRIAL
)
is_subscribed = models.BooleanField(default=False)
subscription_renewal_date = models.DateTimeField(null=True, default=None)
def save(self, *args, **kwargs):