enabling login btw users
This commit is contained in:
72
app.py
72
app.py
@@ -3,13 +3,14 @@ import os
|
||||
from quart import Quart, request, jsonify, render_template, send_from_directory
|
||||
from tortoise.contrib.quart import register_tortoise
|
||||
|
||||
from quart_jwt_extended import JWTManager
|
||||
from quart_jwt_extended import JWTManager, jwt_refresh_token_required, get_jwt_identity
|
||||
|
||||
from main import consult_simba_oracle
|
||||
from blueprints.conversation.logic import (
|
||||
get_the_only_conversation,
|
||||
add_message_to_conversation,
|
||||
)
|
||||
|
||||
import blueprints.users
|
||||
import blueprints.conversation
|
||||
import blueprints.conversation.logic
|
||||
import blueprints.users.models
|
||||
|
||||
app = Quart(
|
||||
__name__,
|
||||
@@ -20,12 +21,29 @@ app = Quart(
|
||||
app.config["JWT_SECRET_KEY"] = os.getenv("JWT_SECRET_KEY", "SECRET_KEY")
|
||||
jwt = JWTManager(app)
|
||||
|
||||
# Register blueprints
|
||||
app.register_blueprint(blueprints.users.user_blueprint)
|
||||
app.register_blueprint(blueprints.conversation.conversation_blueprint)
|
||||
|
||||
|
||||
TORTOISE_CONFIG = {
|
||||
"connections": {"default": "sqlite://raggr.db"},
|
||||
"apps": {
|
||||
"models": {
|
||||
"models": [
|
||||
"blueprints.conversation.models",
|
||||
"blueprints.users.models",
|
||||
"aerich.models",
|
||||
]
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
# Initialize Tortoise ORM
|
||||
register_tortoise(
|
||||
app,
|
||||
db_url=os.getenv("DATABASE_URL", "sqlite://raggr.db"),
|
||||
modules={"models": ["blueprints.conversation.models"]},
|
||||
generate_schemas=True,
|
||||
config=TORTOISE_CONFIG,
|
||||
generate_schemas=False, # Disabled - using Aerich for migrations
|
||||
)
|
||||
|
||||
|
||||
@@ -45,26 +63,41 @@ async def serve_react_app(path):
|
||||
|
||||
|
||||
@app.route("/api/query", methods=["POST"])
|
||||
@jwt_refresh_token_required
|
||||
async def query():
|
||||
current_user_uuid = get_jwt_identity()
|
||||
user = await blueprints.users.models.User.get(id=current_user_uuid)
|
||||
data = await request.get_json()
|
||||
query = data.get("query")
|
||||
# add message to database
|
||||
conversation = await get_the_only_conversation()
|
||||
print(conversation)
|
||||
await add_message_to_conversation(
|
||||
conversation=conversation, message=query, speaker="user"
|
||||
conversation = await blueprints.conversation.logic.get_conversation_for_user(
|
||||
user=user
|
||||
)
|
||||
await blueprints.conversation.logic.add_message_to_conversation(
|
||||
conversation=conversation,
|
||||
message=query,
|
||||
speaker="user",
|
||||
user=user,
|
||||
)
|
||||
|
||||
response = consult_simba_oracle(query)
|
||||
await add_message_to_conversation(
|
||||
conversation=conversation, message=response, speaker="simba"
|
||||
await blueprints.conversation.logic.add_message_to_conversation(
|
||||
conversation=conversation,
|
||||
message=response,
|
||||
speaker="simba",
|
||||
user=user,
|
||||
)
|
||||
return jsonify({"response": response})
|
||||
|
||||
|
||||
@app.route("/api/messages", methods=["GET"])
|
||||
@jwt_refresh_token_required
|
||||
async def get_messages():
|
||||
conversation = await get_the_only_conversation()
|
||||
current_user_uuid = get_jwt_identity()
|
||||
user = await blueprints.users.models.User.get(id=current_user_uuid)
|
||||
|
||||
conversation = await blueprints.conversation.logic.get_conversation_for_user(
|
||||
user=user
|
||||
)
|
||||
# Prefetch related messages
|
||||
await conversation.fetch_related("messages")
|
||||
|
||||
@@ -91,12 +124,5 @@ async def get_messages():
|
||||
)
|
||||
|
||||
|
||||
# @app.route("/api/ingest", methods=["POST"])
|
||||
# def webhook():
|
||||
# data = request.get_json()
|
||||
# print(data)
|
||||
# return jsonify({"status": "received"})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=8080, debug=True)
|
||||
|
||||
Reference in New Issue
Block a user