ibrahimlasfar commited on
Commit
7372212
·
1 Parent(s): fa42c97

flexible textarea, send button, prompts refresh, and add voice

Browse files
Files changed (3) hide show
  1. api/auth.py +2 -2
  2. api/endpoints.py +9 -8
  3. main.py +7 -6
api/auth.py CHANGED
@@ -38,5 +38,5 @@ fastapi_users = FastAPIUsers[User, int](
38
  [auth_backend],
39
  )
40
 
41
- # Dependency للحصول على المستخدم الحالي
42
- current_active_user = fastapi_users.current_user(active=True)
 
38
  [auth_backend],
39
  )
40
 
41
+ # Dependency للحصول على المستخدم الحالي (اختياري)
42
+ current_active_user = fastapi_users.current_user(active=True, optional=True) # ← تغيير هنا
api/endpoints.py CHANGED
@@ -3,12 +3,11 @@ import os
3
  import uuid
4
  from fastapi import APIRouter, Depends, HTTPException, Request, status, UploadFile, File
5
  from fastapi.responses import StreamingResponse
6
- from api.models import QueryRequest
7
  from api.auth import current_active_user
8
  from api.database import get_db
9
  from sqlalchemy.orm import Session
10
  from utils.generation import request_generation, select_model
11
- from utils.web_search import web_search
12
  import io
13
  from openai import OpenAI
14
  from motor.motor_asyncio import AsyncIOMotorClient
@@ -29,6 +28,8 @@ TTS_MODEL = os.getenv("TTS_MODEL", "facebook/mms-tts-ara")
29
 
30
  # إعداد MongoDB
31
  MONGO_URI = os.getenv("MONGODB_URI")
 
 
32
  client = AsyncIOMotorClient(MONGO_URI)
33
  db = client["hager"]
34
  session_message_counts = db["session_message_counts"]
@@ -60,7 +61,7 @@ async def performance_stats():
60
  async def chat_endpoint(
61
  request: Request,
62
  req: QueryRequest,
63
- user: str = Depends(current_active_user, use_cache=False),
64
  db: Session = Depends(get_db)
65
  ):
66
  session_id = request.session.get("session_id")
@@ -109,7 +110,7 @@ async def chat_endpoint(
109
  async def audio_transcription_endpoint(
110
  request: Request,
111
  file: UploadFile = File(...),
112
- user: str = Depends(current_active_user, use_cache=False),
113
  db: Session = Depends(get_db)
114
  ):
115
  session_id = request.session.get("session_id")
@@ -155,7 +156,7 @@ async def audio_transcription_endpoint(
155
  async def text_to_speech_endpoint(
156
  request: Request,
157
  req: dict,
158
- user: str = Depends(current_active_user, use_cache=False),
159
  db: Session = Depends(get_db)
160
  ):
161
  session_id = request.session.get("session_id")
@@ -200,7 +201,7 @@ async def text_to_speech_endpoint(
200
  async def code_endpoint(
201
  request: Request,
202
  req: dict,
203
- user: str = Depends(current_active_user, use_cache=False),
204
  db: Session = Depends(get_db)
205
  ):
206
  session_id = request.session.get("session_id")
@@ -252,7 +253,7 @@ async def code_endpoint(
252
  async def analysis_endpoint(
253
  request: Request,
254
  req: dict,
255
- user: str = Depends(current_active_user, use_cache=False),
256
  db: Session = Depends(get_db)
257
  ):
258
  session_id = request.session.get("session_id")
@@ -302,7 +303,7 @@ async def image_analysis_endpoint(
302
  request: Request,
303
  file: UploadFile = File(...),
304
  output_format: str = "text",
305
- user: str = Depends(current_active_user, use_cache=False),
306
  db: Session = Depends(get_db)
307
  ):
308
  session_id = request.session.get("session_id")
 
3
  import uuid
4
  from fastapi import APIRouter, Depends, HTTPException, Request, status, UploadFile, File
5
  from fastapi.responses import StreamingResponse
6
+ from api.models import QueryRequest, User
7
  from api.auth import current_active_user
8
  from api.database import get_db
9
  from sqlalchemy.orm import Session
10
  from utils.generation import request_generation, select_model
 
11
  import io
12
  from openai import OpenAI
13
  from motor.motor_asyncio import AsyncIOMotorClient
 
28
 
29
  # إعداد MongoDB
30
  MONGO_URI = os.getenv("MONGODB_URI")
31
+ if not MONGO_URI:
32
+ raise ValueError("MONGODB_URI is not set in environment variables.")
33
  client = AsyncIOMotorClient(MONGO_URI)
34
  db = client["hager"]
35
  session_message_counts = db["session_message_counts"]
 
61
  async def chat_endpoint(
62
  request: Request,
63
  req: QueryRequest,
64
+ user: User = Depends(current_active_user),
65
  db: Session = Depends(get_db)
66
  ):
67
  session_id = request.session.get("session_id")
 
110
  async def audio_transcription_endpoint(
111
  request: Request,
112
  file: UploadFile = File(...),
113
+ user: User = Depends(current_active_user),
114
  db: Session = Depends(get_db)
115
  ):
116
  session_id = request.session.get("session_id")
 
156
  async def text_to_speech_endpoint(
157
  request: Request,
158
  req: dict,
159
+ user: User = Depends(current_active_user),
160
  db: Session = Depends(get_db)
161
  ):
162
  session_id = request.session.get("session_id")
 
201
  async def code_endpoint(
202
  request: Request,
203
  req: dict,
204
+ user: User = Depends(current_active_user),
205
  db: Session = Depends(get_db)
206
  ):
207
  session_id = request.session.get("session_id")
 
253
  async def analysis_endpoint(
254
  request: Request,
255
  req: dict,
256
+ user: User = Depends(current_active_user),
257
  db: Session = Depends(get_db)
258
  ):
259
  session_id = request.session.get("session_id")
 
303
  request: Request,
304
  file: UploadFile = File(...),
305
  output_format: str = "text",
306
+ user: User = Depends(current_active_user),
307
  db: Session = Depends(get_db)
308
  ):
309
  session_id = request.session.get("session_id")
main.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import os
2
  import logging
3
  from fastapi import FastAPI, Request, Depends, HTTPException, status, Query
@@ -61,7 +62,7 @@ CONCURRENCY_LIMIT = int(os.getenv("CONCURRENCY_LIMIT", 20))
61
  app = FastAPI(title="MGZon Chatbot API")
62
 
63
  # إضافة SessionMiddleware
64
- app.add_middleware(SessionMiddleware, secret_key=os.getenv("JWT_SECRET"))
65
 
66
  # إنشاء الجداول تلقائيًا
67
  Base.metadata.create_all(bind=engine)
@@ -122,31 +123,31 @@ app.add_middleware(NotFoundMiddleware)
122
 
123
  # Root endpoint
124
  @app.get("/", response_class=HTMLResponse)
125
- async def root(request: Request, user: User = Depends(fastapi_users.current_user(optional=True))):
126
  return templates.TemplateResponse("index.html", {"request": request, "user": user})
127
 
128
  # Login page
129
  @app.get("/login", response_class=HTMLResponse)
130
- async def login_page(request: Request, user: User = Depends(fastapi_users.current_user(optional=True))):
131
  if user:
132
  return RedirectResponse(url="/chat", status_code=302)
133
  return templates.TemplateResponse("login.html", {"request": request})
134
 
135
  # Register page
136
  @app.get("/register", response_class=HTMLResponse)
137
- async def register_page(request: Request, user: User = Depends(fastapi_users.current_user(optional=True))):
138
  if user:
139
  return RedirectResponse(url="/chat", status_code=302)
140
  return templates.TemplateResponse("register.html", {"request": request})
141
 
142
  # Chat endpoint
143
  @app.get("/chat", response_class=HTMLResponse)
144
- async def chat(request: Request, user: User = Depends(fastapi_users.current_user(optional=True))):
145
  return templates.TemplateResponse("chat.html", {"request": request, "user": user})
146
 
147
  # About endpoint
148
  @app.get("/about", response_class=HTMLResponse)
149
- async def about(request: Request, user: User = Depends(fastapi_users.current_user(optional=True))):
150
  return templates.TemplateResponse("about.html", {"request": request, "user": user})
151
 
152
  # Blog endpoint (قائمة المقالات)
 
1
+ # main.py
2
  import os
3
  import logging
4
  from fastapi import FastAPI, Request, Depends, HTTPException, status, Query
 
62
  app = FastAPI(title="MGZon Chatbot API")
63
 
64
  # إضافة SessionMiddleware
65
+ app.add_middleware(SessionMiddleware, secret_key=os.getenv("JWT_SECRET"), cookie_secure=True)
66
 
67
  # إنشاء الجداول تلقائيًا
68
  Base.metadata.create_all(bind=engine)
 
123
 
124
  # Root endpoint
125
  @app.get("/", response_class=HTMLResponse)
126
+ async def root(request: Request, user: User = Depends(current_active_user)):
127
  return templates.TemplateResponse("index.html", {"request": request, "user": user})
128
 
129
  # Login page
130
  @app.get("/login", response_class=HTMLResponse)
131
+ async def login_page(request: Request, user: User = Depends(current_active_user)):
132
  if user:
133
  return RedirectResponse(url="/chat", status_code=302)
134
  return templates.TemplateResponse("login.html", {"request": request})
135
 
136
  # Register page
137
  @app.get("/register", response_class=HTMLResponse)
138
+ async def register_page(request: Request, user: User = Depends(current_active_user)):
139
  if user:
140
  return RedirectResponse(url="/chat", status_code=302)
141
  return templates.TemplateResponse("register.html", {"request": request})
142
 
143
  # Chat endpoint
144
  @app.get("/chat", response_class=HTMLResponse)
145
+ async def chat(request: Request, user: User = Depends(current_active_user)):
146
  return templates.TemplateResponse("chat.html", {"request": request, "user": user})
147
 
148
  # About endpoint
149
  @app.get("/about", response_class=HTMLResponse)
150
+ async def about(request: Request, user: User = Depends(current_active_user)):
151
  return templates.TemplateResponse("about.html", {"request": request, "user": user})
152
 
153
  # Blog endpoint (قائمة المقالات)