diff --git a/src/database/adapters/__init__.py b/src/database/adapters/__init__.py
index f4e816bf..b4186d57 100644
--- a/src/database/adapters/__init__.py
+++ b/src/database/adapters/__init__.py
@@ -2,7 +2,7 @@ from typing import Type, TypeVar, List
from datetime import date, datetime, timedelta
import secrets
from typing import Type, TypeVar, List
-from datetime import date
+from datetime import date, timezone
from django.db import models
from django.contrib.sessions.backends.db import SessionStore
@@ -116,12 +116,9 @@ async def set_user_subscribed(email: str, type="standard") -> KhojUser:
def is_user_subscribed(email: str, type="standard") -> bool:
- user = KhojUser.objects.filter(email=email, subscription_type=type).first()
- if user and user.subscription_renewal_date:
- is_subscribed = user.subscription_renewal_date > date.today()
- return is_subscribed
- else:
- return False
+ return KhojUser.objects.filter(
+ email=email, subscription_type=type, subscription_renewal_date__gte=datetime.now(tz=timezone.utc)
+ ).exists()
async def get_user_by_token(token: dict) -> KhojUser:
diff --git a/src/khoj/interface/web/config.html b/src/khoj/interface/web/config.html
index 5269065d..3179db0b 100644
--- a/src/khoj/interface/web/config.html
+++ b/src/khoj/interface/web/config.html
@@ -184,8 +184,7 @@
{% else %}
-
+
@@ -259,14 +258,11 @@
};
function unsubscribe() {
- fetch('/api/subscription', {
+ fetch('/api/subscription?email=' + '{{username}}', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
- body: JSON.stringify({
- "email": "{{ username }}"
- })
})
}
diff --git a/src/khoj/routers/api.py b/src/khoj/routers/api.py
index 287ff8a5..005496b2 100644
--- a/src/khoj/routers/api.py
+++ b/src/khoj/routers/api.py
@@ -776,10 +776,13 @@ async def subscribe(request: Request):
@api.delete("/subscription")
@requires(["authenticated"])
-async def unsubscribe(request: Request, user_email: str):
- customer = stripe.Customer.list(email=user_email).data
+async def unsubscribe(request: Request, email: str):
+ customer = stripe.Customer.list(email=email).data
if not is_none_or_empty(customer):
- stripe.Subscription.modify(customer[0].id, cancel_at_period_end=True)
+ customer_id = customer[0].id
+ for subscription in stripe.Subscription.list(customer=customer_id):
+ stripe.Subscription.modify(subscription.id, cancel_at_period_end=True)
+
success = True
else:
success = False
diff --git a/src/khoj/routers/web_client.py b/src/khoj/routers/web_client.py
index b49404a2..b3150ad0 100644
--- a/src/khoj/routers/web_client.py
+++ b/src/khoj/routers/web_client.py
@@ -1,5 +1,5 @@
# System Packages
-from datetime import datetime
+from datetime import datetime, timezone
import json
import os
@@ -119,7 +119,9 @@ def config_page(request: Request):
user: KhojUser = request.user.object
user_picture = request.session.get("user", {}).get("picture")
user_is_subscribed = is_user_subscribed(user.email)
- days_to_renewal = (user.subscription_renewal_date - datetime.now()).days if user.subscription_renewal_date else 0
+ days_to_renewal = (
+ (user.subscription_renewal_date - datetime.now(tz=timezone.utc)).days if user.subscription_renewal_date else 0
+ )
enabled_content_source = set(EntryAdapters.get_unique_file_source(user).all())
successfully_configured = {