mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-08 21:29:12 +00:00
Use email to get_user_subscription from DB and other DB adapters
- Needing user subscription requires chaining function - Simplify get_file_sources DB adapter
This commit is contained in:
@@ -134,10 +134,11 @@ async def set_user_subscription(
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_user_subscription_state(user_subscription: Subscription) -> str:
|
def get_user_subscription_state(email: str) -> str:
|
||||||
"""Get subscription state of user
|
"""Get subscription state of user
|
||||||
Valid state transitions: trial -> subscribed <-> unsubscribed OR expired
|
Valid state transitions: trial -> subscribed <-> unsubscribed OR expired
|
||||||
"""
|
"""
|
||||||
|
user_subscription = Subscription.objects.filter(user__email=email).first()
|
||||||
if not user_subscription:
|
if not user_subscription:
|
||||||
return "trial"
|
return "trial"
|
||||||
elif user_subscription.type == Subscription.Type.TRIAL:
|
elif user_subscription.type == Subscription.Type.TRIAL:
|
||||||
@@ -450,5 +451,5 @@ class EntryAdapters:
|
|||||||
return Entry.objects.filter(user=user).values_list("file_type", flat=True).distinct()
|
return Entry.objects.filter(user=user).values_list("file_type", flat=True).distinct()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_unique_file_source(user: KhojUser):
|
def get_unique_file_sources(user: KhojUser):
|
||||||
return Entry.objects.filter(user=user).values_list("file_source", flat=True).distinct()
|
return Entry.objects.filter(user=user).values_list("file_source", flat=True).distinct().all()
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ templates = Jinja2Templates(directory=constants.web_directory)
|
|||||||
def index(request: Request):
|
def index(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
|
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"chat.html",
|
"chat.html",
|
||||||
@@ -56,8 +55,7 @@ def index(request: Request):
|
|||||||
def index_post(request: Request):
|
def index_post(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
|
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"chat.html",
|
"chat.html",
|
||||||
@@ -75,8 +73,7 @@ def index_post(request: Request):
|
|||||||
def search_page(request: Request):
|
def search_page(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
|
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"search.html",
|
"search.html",
|
||||||
@@ -94,8 +91,7 @@ def search_page(request: Request):
|
|||||||
def chat_page(request: Request):
|
def chat_page(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
|
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"chat.html",
|
"chat.html",
|
||||||
@@ -130,28 +126,27 @@ def login_page(request: Request):
|
|||||||
def config_page(request: Request):
|
def config_page(request: Request):
|
||||||
user: KhojUser = request.user.object
|
user: KhojUser = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription = adapters.get_user_subscription(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
subscription_renewal_date = (
|
subscription_renewal_date = (
|
||||||
user_subscription.renewal_date.strftime("%d %b %Y")
|
user_subscription.renewal_date.strftime("%d %b %Y")
|
||||||
if user_subscription and user_subscription.renewal_date
|
if user_subscription and user_subscription.renewal_date
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
enabled_content_source = set(EntryAdapters.get_unique_file_source(user).all())
|
|
||||||
|
|
||||||
|
enabled_content_source = set(EntryAdapters.get_unique_file_sources(user))
|
||||||
successfully_configured = {
|
successfully_configured = {
|
||||||
"computer": ("computer" in enabled_content_source),
|
"computer": ("computer" in enabled_content_source),
|
||||||
"github": ("github" in enabled_content_source),
|
"github": ("github" in enabled_content_source),
|
||||||
"notion": ("notion" in enabled_content_source),
|
"notion": ("notion" in enabled_content_source),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selected_conversation_config = ConversationAdapters.get_conversation_config(user)
|
||||||
conversation_options = ConversationAdapters.get_conversation_processor_options().all()
|
conversation_options = ConversationAdapters.get_conversation_processor_options().all()
|
||||||
all_conversation_options = list()
|
all_conversation_options = list()
|
||||||
for conversation_option in conversation_options:
|
for conversation_option in conversation_options:
|
||||||
all_conversation_options.append({"chat_model": conversation_option.chat_model, "id": conversation_option.id})
|
all_conversation_options.append({"chat_model": conversation_option.chat_model, "id": conversation_option.id})
|
||||||
|
|
||||||
selected_conversation_config = ConversationAdapters.get_conversation_config(user)
|
|
||||||
|
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"config.html",
|
"config.html",
|
||||||
context={
|
context={
|
||||||
@@ -176,8 +171,7 @@ def config_page(request: Request):
|
|||||||
def github_config_page(request: Request):
|
def github_config_page(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
current_github_config = get_user_github_config(user)
|
current_github_config = get_user_github_config(user)
|
||||||
|
|
||||||
if current_github_config:
|
if current_github_config:
|
||||||
@@ -216,8 +210,7 @@ def github_config_page(request: Request):
|
|||||||
def notion_config_page(request: Request):
|
def notion_config_page(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = adapters.get_user_subscription(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
current_notion_config = get_user_notion_config(user)
|
current_notion_config = get_user_notion_config(user)
|
||||||
|
|
||||||
current_config = NotionContentConfig(
|
current_config = NotionContentConfig(
|
||||||
@@ -243,8 +236,7 @@ def notion_config_page(request: Request):
|
|||||||
def computer_config_page(request: Request):
|
def computer_config_page(request: Request):
|
||||||
user = request.user.object
|
user = request.user.object
|
||||||
user_picture = request.session.get("user", {}).get("picture")
|
user_picture = request.session.get("user", {}).get("picture")
|
||||||
user_subscription = adapters.get_user_subscription(user.email)
|
user_subscription_state = get_user_subscription_state(user.email)
|
||||||
user_subscription_state = get_user_subscription_state(user_subscription)
|
|
||||||
|
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"content_source_computer_input.html",
|
"content_source_computer_input.html",
|
||||||
|
|||||||
Reference in New Issue
Block a user