Merge pull request #577 from khoj-ai/fix/user-subscription-email-not-exists

Fix null exception when user does not exist for subscription
This commit is contained in:
sabaimran
2023-12-03 15:14:31 -08:00
committed by GitHub

View File

@@ -85,6 +85,15 @@ async def get_or_create_user(token: dict) -> KhojUser:
return user return user
async def get_or_create_user_by_email(email: str) -> KhojUser:
user, _ = await KhojUser.objects.filter(email=email).aupdate_or_create(defaults={"username": email, "email": email})
await user.asave()
await Subscription.objects.acreate(user=user, type="trial")
return user
async def create_user_by_google_token(token: dict) -> KhojUser: async def create_user_by_google_token(token: dict) -> KhojUser:
user, _ = await KhojUser.objects.filter(email=token.get("email")).aupdate_or_create( user, _ = await KhojUser.objects.filter(email=token.get("email")).aupdate_or_create(
defaults={"username": token.get("email"), "email": token.get("email")} defaults={"username": token.get("email"), "email": token.get("email")}
@@ -115,7 +124,10 @@ def get_user_subscription(email: str) -> Optional[Subscription]:
async def set_user_subscription( async def set_user_subscription(
email: str, is_recurring=None, renewal_date=None, type="standard" email: str, is_recurring=None, renewal_date=None, type="standard"
) -> Optional[Subscription]: ) -> Optional[Subscription]:
user_subscription = await Subscription.objects.filter(user__email=email).afirst() # Get or create the user object
user = await get_or_create_user_by_email(email)
user_subscription = await Subscription.objects.filter(user=user).afirst()
if not user_subscription: if not user_subscription:
user = await get_user_by_email(email) user = await get_user_by_email(email)
if not user: if not user: