From 7dfa3ccfe9404a4741e660ec8913962bb61b87de Mon Sep 17 00:00:00 2001
From: Jayden Pyles <111098627+jaypyles@users.noreply.github.com>
Date: Thu, 7 Nov 2024 12:24:59 -0600
Subject: [PATCH] fix: small fixes to accompany the docs implementation (#35)
---
api/backend/auth/auth_utils.py | 13 ++++++
api/backend/routers/job_router.py | 6 ++-
api/backend/scraping.py | 2 -
.../submit/job-submitter/job-submitter.tsx | 5 ++-
src/pages/chat.tsx | 43 ++++++++++---------
5 files changed, 43 insertions(+), 26 deletions(-)
diff --git a/api/backend/auth/auth_utils.py b/api/backend/auth/auth_utils.py
index 945e752..d57c392 100644
--- a/api/backend/auth/auth_utils.py
+++ b/api/backend/auth/auth_utils.py
@@ -4,6 +4,7 @@ from gc import disable
from queue import Empty
from typing import Any, Optional
from datetime import datetime, timedelta
+import logging
# PDM
from jose import JWTError, jwt
@@ -16,6 +17,8 @@ from fastapi.security import OAuth2PasswordBearer
from api.backend.schemas import User, UserInDB, TokenData
from api.backend.database import get_user_collection
+LOG = logging.getLogger(__name__)
+
_ = load_dotenv()
SECRET_KEY = os.getenv("SECRET_KEY") or ""
@@ -74,10 +77,16 @@ def create_access_token(
async def get_current_user(token: str = Depends(oauth2_scheme)):
+ LOG.info(f"Getting current user with token: {token}")
+
+ if not token:
+ return EMPTY_USER
+
try:
payload: Optional[dict[str, Any]] = jwt.decode(
token, SECRET_KEY, algorithms=[ALGORITHM]
)
+
if not payload:
return EMPTY_USER
@@ -91,6 +100,10 @@ async def get_current_user(token: str = Depends(oauth2_scheme)):
except JWTError:
return EMPTY_USER
+ except Exception as e:
+ LOG.error(f"Exception occurred: {e}")
+ return EMPTY_USER
+
user = await get_user(email=token_data.email)
if user is None:
diff --git a/api/backend/routers/job_router.py b/api/backend/routers/job_router.py
index 1c058b4..35caa3f 100644
--- a/api/backend/routers/job_router.py
+++ b/api/backend/routers/job_router.py
@@ -5,6 +5,7 @@ from io import StringIO
import csv
import logging
import random
+from typing import Optional
# PDM
from fastapi import Depends, APIRouter
@@ -26,7 +27,7 @@ from api.backend.models import (
Job,
)
from api.backend.schemas import User
-from api.backend.auth.auth_utils import get_current_user
+from api.backend.auth.auth_utils import get_current_user, EMPTY_USER
from api.backend.utils import clean_text
LOG = logging.getLogger(__name__)
@@ -49,7 +50,7 @@ async def submit_scrape_job(job: Job):
job_dict = job.model_dump()
await insert(job_dict)
- return JSONResponse(content=f"Job queued for scraping: {job.id}")
+ return JSONResponse(content={"id": job.id})
except Exception as e:
return JSONResponse(content={"error": str(e)}, status_code=500)
@@ -70,6 +71,7 @@ async def retrieve_scrape_jobs(
@job_router.get("/job/{id}")
async def job(id: str, user: User = Depends(get_current_user)):
LOG.info(f"Retrieving jobs for account: {user.email}")
+
try:
filter = {"user": user.email, "id": id}
results = await query(filter)
diff --git a/api/backend/scraping.py b/api/backend/scraping.py
index be666b2..d106402 100644
--- a/api/backend/scraping.py
+++ b/api/backend/scraping.py
@@ -7,12 +7,10 @@ from lxml import etree
from seleniumwire import webdriver
from lxml.etree import _Element # type: ignore [reportPrivateImport]
from fake_useragent import UserAgent
-from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options as ChromeOptions
-from selenium.webdriver.chrome.service import Service
from urllib.parse import urlparse, urljoin
from api.backend.models import Element, CapturedElement
diff --git a/src/components/submit/job-submitter/job-submitter.tsx b/src/components/submit/job-submitter/job-submitter.tsx
index 5589323..1e7fc6e 100644
--- a/src/components/submit/job-submitter/job-submitter.tsx
+++ b/src/components/submit/job-submitter/job-submitter.tsx
@@ -111,7 +111,10 @@ export const JobSubmitter = ({ stateProps }: Props) => {
return response.json();
})
.then((data) => {
- setSnackbarMessage(data || "Job submitted successfully.");
+ setSnackbarMessage(
+ `Job: ${data.id} submitted successfully.` ||
+ "Job submitted successfully."
+ );
setSnackbarSeverity("info");
setSnackbarOpen(true);
})
diff --git a/src/pages/chat.tsx b/src/pages/chat.tsx
index 01e8f6f..9f44de1 100644
--- a/src/pages/chat.tsx
+++ b/src/pages/chat.tsx
@@ -219,27 +219,28 @@ const AI: React.FC = () => {
) : (
<>
- {messages.map((message, index) => (
-
-
- {message.content}
-
-
- ))}
+ {messages &&
+ messages.map((message, index) => (
+
+
+ {message.content}
+
+
+ ))}
{thinking && (