Spaces:
Sleeping
Sleeping
deploy at 2024-08-24 17:48:27.223448
Browse files- main copy.py +2 -5
- main.py +11 -40
main copy.py
CHANGED
|
@@ -45,6 +45,7 @@ from fasthtml.pico import Search, Grid, Fieldset, Label
|
|
| 45 |
from starlette.middleware import Middleware
|
| 46 |
from starlette.middleware.base import BaseHTTPMiddleware
|
| 47 |
from starlette.middleware.sessions import SessionMiddleware
|
|
|
|
| 48 |
from vespa.application import Vespa
|
| 49 |
import json
|
| 50 |
import os
|
|
@@ -178,18 +179,14 @@ class DebugSessionMiddleware(SessionMiddleware):
|
|
| 178 |
await super().__call__(scope, receive, send)
|
| 179 |
print(f"DebugSessionMiddleware: After processing - Scope: {scope}")
|
| 180 |
|
| 181 |
-
from starlette.middleware.cors import CORSMiddleware
|
| 182 |
-
|
| 183 |
middlewares = [
|
| 184 |
Middleware(
|
| 185 |
SessionMiddleware,
|
| 186 |
secret_key=get_key(fname=sess_key_path),
|
| 187 |
max_age=3600,
|
| 188 |
-
#same_site='lax',
|
| 189 |
),
|
| 190 |
-
Middleware(CORSMiddleware, allow_origins=['*']),
|
| 191 |
Middleware(XFrameOptionsMiddleware),
|
| 192 |
-
Middleware(SessionLoggingMiddleware),
|
| 193 |
#Middleware(DebugSessionMiddleware, secret_key=get_key(fname=sess_key_path)),
|
| 194 |
]
|
| 195 |
bware = Beforeware(
|
|
|
|
| 45 |
from starlette.middleware import Middleware
|
| 46 |
from starlette.middleware.base import BaseHTTPMiddleware
|
| 47 |
from starlette.middleware.sessions import SessionMiddleware
|
| 48 |
+
from starlette.middleware.cors import CORSMiddleware
|
| 49 |
from vespa.application import Vespa
|
| 50 |
import json
|
| 51 |
import os
|
|
|
|
| 179 |
await super().__call__(scope, receive, send)
|
| 180 |
print(f"DebugSessionMiddleware: After processing - Scope: {scope}")
|
| 181 |
|
|
|
|
|
|
|
| 182 |
middlewares = [
|
| 183 |
Middleware(
|
| 184 |
SessionMiddleware,
|
| 185 |
secret_key=get_key(fname=sess_key_path),
|
| 186 |
max_age=3600,
|
|
|
|
| 187 |
),
|
|
|
|
| 188 |
Middleware(XFrameOptionsMiddleware),
|
| 189 |
+
#Middleware(SessionLoggingMiddleware),
|
| 190 |
#Middleware(DebugSessionMiddleware, secret_key=get_key(fname=sess_key_path)),
|
| 191 |
]
|
| 192 |
bware = Beforeware(
|
main.py
CHANGED
|
@@ -45,7 +45,6 @@ from fasthtml.pico import Search, Grid, Fieldset, Label
|
|
| 45 |
from starlette.middleware import Middleware
|
| 46 |
from starlette.middleware.base import BaseHTTPMiddleware
|
| 47 |
from starlette.middleware.sessions import SessionMiddleware
|
| 48 |
-
from starlette.middleware.cors import CORSMiddleware
|
| 49 |
from vespa.application import Vespa
|
| 50 |
import json
|
| 51 |
import os
|
|
@@ -58,7 +57,6 @@ import tempfile
|
|
| 58 |
from enum import Enum
|
| 59 |
from typing import Tuple as T
|
| 60 |
from urllib.parse import quote
|
| 61 |
-
import uuid
|
| 62 |
|
| 63 |
DEV_MODE = False
|
| 64 |
|
|
@@ -166,18 +164,6 @@ class XFrameOptionsMiddleware(BaseHTTPMiddleware):
|
|
| 166 |
response.headers["X-Frame-Options"] = "ALLOW-FROM https://huggingface.co/"
|
| 167 |
return response
|
| 168 |
|
| 169 |
-
class SessionLoggingMiddleware(BaseHTTPMiddleware):
|
| 170 |
-
async def dispatch(self, request, call_next):
|
| 171 |
-
print(f"Before request: Session data: {request.session}")
|
| 172 |
-
response = await call_next(request)
|
| 173 |
-
print(f"After request: Session data: {request.session}")
|
| 174 |
-
return response
|
| 175 |
-
|
| 176 |
-
class DebugSessionMiddleware(SessionMiddleware):
|
| 177 |
-
async def __call__(self, scope, receive, send):
|
| 178 |
-
print(f"DebugSessionMiddleware: Before processing - Scope: {scope}")
|
| 179 |
-
await super().__call__(scope, receive, send)
|
| 180 |
-
print(f"DebugSessionMiddleware: After processing - Scope: {scope}")
|
| 181 |
|
| 182 |
middlewares = [
|
| 183 |
Middleware(
|
|
@@ -186,8 +172,6 @@ middlewares = [
|
|
| 186 |
max_age=3600,
|
| 187 |
),
|
| 188 |
Middleware(XFrameOptionsMiddleware),
|
| 189 |
-
#Middleware(SessionLoggingMiddleware),
|
| 190 |
-
#Middleware(DebugSessionMiddleware, secret_key=get_key(fname=sess_key_path)),
|
| 191 |
]
|
| 192 |
bware = Beforeware(
|
| 193 |
user_auth_before,
|
|
@@ -311,6 +295,7 @@ def get(sess):
|
|
| 311 |
queries = [
|
| 312 |
"Breast Cancer Cells Feed on Cholesterol",
|
| 313 |
"Treating Asthma With Plants vs. Pills",
|
|
|
|
| 314 |
"Testing Turmeric on Smokers",
|
| 315 |
"The Role of Pesticides in Parkinson's Disease",
|
| 316 |
]
|
|
@@ -439,10 +424,9 @@ def post(login: Login, sess):
|
|
| 439 |
if not compare_digest(ADMIN_PWD.encode("utf-8"), login.pwd.encode("utf-8")):
|
| 440 |
# Incorrect password - add error message
|
| 441 |
return RedirectResponse("/login?error=True", status_code=303)
|
| 442 |
-
|
| 443 |
-
|
| 444 |
-
|
| 445 |
-
return response
|
| 446 |
|
| 447 |
|
| 448 |
@app.get("/logout")
|
|
@@ -468,26 +452,9 @@ def replace_hi_with_strong(text):
|
|
| 468 |
|
| 469 |
|
| 470 |
def log_query_to_db(query, ranking, sess):
|
| 471 |
-
queries.insert(
|
| 472 |
Query(query=query, ranking=ranking, sess_id=sesskey, timestamp=int(time.time()))
|
| 473 |
)
|
| 474 |
-
if 'user_id' not in sess:
|
| 475 |
-
sess['user_id'] = str(uuid.uuid4())
|
| 476 |
-
|
| 477 |
-
if 'queries' not in sess:
|
| 478 |
-
sess['queries'] = []
|
| 479 |
-
|
| 480 |
-
query_data = {
|
| 481 |
-
'query': query,
|
| 482 |
-
'ranking': ranking,
|
| 483 |
-
'timestamp': int(time.time())
|
| 484 |
-
}
|
| 485 |
-
sess['queries'].append(query_data)
|
| 486 |
-
|
| 487 |
-
# Limit the number of queries stored in the session to prevent it from growing too large
|
| 488 |
-
sess['queries'] = sess['queries'][-100:] # Keep only the last 100 queries
|
| 489 |
-
|
| 490 |
-
return query_data
|
| 491 |
|
| 492 |
|
| 493 |
def parse_results(records):
|
|
@@ -577,7 +544,12 @@ def get_yql(ranking: RankProfile, userquery: str) -> T[str, dict]:
|
|
| 577 |
@app.get("/search")
|
| 578 |
async def search(userquery: str, ranking: str, sess):
|
| 579 |
print(sess)
|
|
|
|
|
|
|
| 580 |
quoted = quote(userquery) + "&ranking=" + ranking
|
|
|
|
|
|
|
|
|
|
| 581 |
log_query_to_db(userquery, ranking, sess)
|
| 582 |
yql, body = get_yql(ranking, userquery)
|
| 583 |
async with vespa_app.asyncio() as session:
|
|
@@ -834,13 +806,12 @@ def get_document(docid: str, sess):
|
|
| 834 |
resp = vespa_app.get_data(data_id=docid, schema="doc", namespace="tutorial")
|
| 835 |
doc = resp.json
|
| 836 |
# Link with Back to search results at top of page
|
| 837 |
-
last_query = sess.get('queries', [{}])[-1].get('query', '')
|
| 838 |
return Main(
|
| 839 |
Div(
|
| 840 |
A(
|
| 841 |
I(cls="fa fa-arrow-left"),
|
| 842 |
"Back to search results",
|
| 843 |
-
hx_get=f"/search?userquery={
|
| 844 |
hx_target="#results",
|
| 845 |
style="margin: 10px;",
|
| 846 |
),
|
|
|
|
| 45 |
from starlette.middleware import Middleware
|
| 46 |
from starlette.middleware.base import BaseHTTPMiddleware
|
| 47 |
from starlette.middleware.sessions import SessionMiddleware
|
|
|
|
| 48 |
from vespa.application import Vespa
|
| 49 |
import json
|
| 50 |
import os
|
|
|
|
| 57 |
from enum import Enum
|
| 58 |
from typing import Tuple as T
|
| 59 |
from urllib.parse import quote
|
|
|
|
| 60 |
|
| 61 |
DEV_MODE = False
|
| 62 |
|
|
|
|
| 164 |
response.headers["X-Frame-Options"] = "ALLOW-FROM https://huggingface.co/"
|
| 165 |
return response
|
| 166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
|
| 168 |
middlewares = [
|
| 169 |
Middleware(
|
|
|
|
| 172 |
max_age=3600,
|
| 173 |
),
|
| 174 |
Middleware(XFrameOptionsMiddleware),
|
|
|
|
|
|
|
| 175 |
]
|
| 176 |
bware = Beforeware(
|
| 177 |
user_auth_before,
|
|
|
|
| 295 |
queries = [
|
| 296 |
"Breast Cancer Cells Feed on Cholesterol",
|
| 297 |
"Treating Asthma With Plants vs. Pills",
|
| 298 |
+
"Alkylphenol Endocrine Disruptors",
|
| 299 |
"Testing Turmeric on Smokers",
|
| 300 |
"The Role of Pesticides in Parkinson's Disease",
|
| 301 |
]
|
|
|
|
| 424 |
if not compare_digest(ADMIN_PWD.encode("utf-8"), login.pwd.encode("utf-8")):
|
| 425 |
# Incorrect password - add error message
|
| 426 |
return RedirectResponse("/login?error=True", status_code=303)
|
| 427 |
+
sess["auth"] = True
|
| 428 |
+
print(f"Sess after login: {sess}")
|
| 429 |
+
return RedirectResponse("/admin", status_code=303)
|
|
|
|
| 430 |
|
| 431 |
|
| 432 |
@app.get("/logout")
|
|
|
|
| 452 |
|
| 453 |
|
| 454 |
def log_query_to_db(query, ranking, sess):
|
| 455 |
+
return queries.insert(
|
| 456 |
Query(query=query, ranking=ranking, sess_id=sesskey, timestamp=int(time.time()))
|
| 457 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 458 |
|
| 459 |
|
| 460 |
def parse_results(records):
|
|
|
|
| 544 |
@app.get("/search")
|
| 545 |
async def search(userquery: str, ranking: str, sess):
|
| 546 |
print(sess)
|
| 547 |
+
if "queries" not in sess:
|
| 548 |
+
sess["queries"] = []
|
| 549 |
quoted = quote(userquery) + "&ranking=" + ranking
|
| 550 |
+
sess["queries"].append(quoted)
|
| 551 |
+
print(f"Searching for: {userquery}")
|
| 552 |
+
print(f"Ranking: {ranking}")
|
| 553 |
log_query_to_db(userquery, ranking, sess)
|
| 554 |
yql, body = get_yql(ranking, userquery)
|
| 555 |
async with vespa_app.asyncio() as session:
|
|
|
|
| 806 |
resp = vespa_app.get_data(data_id=docid, schema="doc", namespace="tutorial")
|
| 807 |
doc = resp.json
|
| 808 |
# Link with Back to search results at top of page
|
|
|
|
| 809 |
return Main(
|
| 810 |
Div(
|
| 811 |
A(
|
| 812 |
I(cls="fa fa-arrow-left"),
|
| 813 |
"Back to search results",
|
| 814 |
+
hx_get=f"/search?userquery={sess['queries'][-1]}",
|
| 815 |
hx_target="#results",
|
| 816 |
style="margin: 10px;",
|
| 817 |
),
|