check if a google calendar exixst before adding it , in the add page

This commit is contained in:
CREDO23 2025-08-02 05:36:43 +02:00
parent edf46e4de1
commit ad0a1e5c97
7 changed files with 62 additions and 311 deletions

View file

@ -47,6 +47,7 @@ def get_connector_emoji(connector_name: str) -> str:
"DISCORD_CONNECTOR": "🗨️",
"TAVILY_API": "🔍",
"LINKUP_API": "🔗",
"GOOGLE_CALENDAR_CONNECTOR": "📅",
}
return connector_emojis.get(connector_name, "🔎")

View file

@ -41,11 +41,14 @@ class Config:
NEXT_FRONTEND_URL = os.getenv("NEXT_FRONTEND_URL")
# AUTH: Google OAuth
# Auth
AUTH_TYPE = os.getenv("AUTH_TYPE")
# Google OAuth
GOOGLE_OAUTH_CLIENT_ID = os.getenv("GOOGLE_OAUTH_CLIENT_ID")
GOOGLE_OAUTH_CLIENT_SECRET = os.getenv("GOOGLE_OAUTH_CLIENT_SECRET")
# Google Calendar redirect URI
GOOGLE_CALENDAR_REDIRECT_URI = os.getenv("GOOGLE_CALENDAR_REDIRECT_URI")
# LLM instances are now managed per-user through the LLMConfig system

View file

@ -1,22 +1,28 @@
# app/routes/google_calendar.py
import base64
import json
from sqlite3 import IntegrityError
import logging
from uuid import UUID
from venv import logger
from fastapi import APIRouter, Depends, HTTPException, Request
from fastapi.responses import RedirectResponse
from google_auth_oauthlib.flow import Flow
from jsonschema import ValidationError
from pydantic import ValidationError
from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from app.config import config
from app.db import SearchSourceConnector, User, get_async_session
from app.db import (
SearchSourceConnector,
SearchSourceConnectorType,
User,
get_async_session,
)
from app.users import current_active_user
logger = logging.getLogger(__name__)
router = APIRouter()
SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"]
@ -100,7 +106,8 @@ async def calendar_callback(
result = await session.execute(
select(SearchSourceConnector).filter(
SearchSourceConnector.user_id == user_id,
SearchSourceConnector.connector_type == "GOOGLE_CALENDAR_CONNECTOR",
SearchSourceConnector.connector_type
== SearchSourceConnectorType.GOOGLE_CALENDAR_CONNECTOR,
)
)
existing_connector = result.scalars().first()
@ -111,7 +118,7 @@ async def calendar_callback(
)
db_connector = SearchSourceConnector(
name="Google Calendar Connector",
connector_type="GOOGLE_CALENDAR_CONNECTOR",
connector_type=SearchSourceConnectorType.GOOGLE_CALENDAR_CONNECTOR,
config=creds_dict,
user_id=user_id,
is_indexable=True,