moved uuid2subject inside subject as it made more

sense
This commit is contained in:
Karma Riuk
2025-05-20 11:53:29 +02:00
parent 7e3089595d
commit 346b3fc40a
3 changed files with 7 additions and 9 deletions

View File

@ -3,7 +3,7 @@ from typing import Callable
from flask import Blueprint, request, jsonify, current_app, url_for from flask import Blueprint, request, jsonify, current_app, url_for
from utils.errors import InvalidJsonFormatError from utils.errors import InvalidJsonFormatError
from utils.process_data import evaluate_comments, evaluate_refinement from utils.process_data import evaluate_comments, evaluate_refinement
from utils.observer import SocketObserver, Status, Subject, uuid2subject from utils.observer import SocketObserver, Status, Subject
import functools import functools
import json, uuid import json, uuid
@ -64,7 +64,7 @@ def handler(type_: str, validate_json: Callable, evaluate_submission: Callable):
process_id = str(uuid.uuid4()) process_id = str(uuid.uuid4())
subject = Subject(process_id, type_, evaluate_submission) subject = Subject(process_id, type_, evaluate_submission)
uuid2subject[process_id] = subject Subject.uuid2subject[process_id] = subject
QUEUE_MANAGER.submit(subject, validated) QUEUE_MANAGER.submit(subject, validated)
url = url_for(f".status", id=process_id, _external=True) url = url_for(f".status", id=process_id, _external=True)
@ -91,10 +91,10 @@ def submit_comments(task):
@router.route('/status/<id>') @router.route('/status/<id>')
def status(id): def status(id):
if id not in uuid2subject: if id not in Subject.uuid2subject:
return jsonify({"error": "Id doens't exist", "message": f"Id {id} doesn't exist"}), 404 return jsonify({"error": "Id doens't exist", "message": f"Id {id} doesn't exist"}), 404
subject = uuid2subject[id] subject = Subject.uuid2subject[id]
if subject.status == Status.COMPLETE: if subject.status == Status.COMPLETE:
return jsonify({"status": "complete", "type": subject.type, "results": subject.results}) return jsonify({"status": "complete", "type": subject.type, "results": subject.results})

View File

@ -2,7 +2,7 @@
from flask import Flask, request from flask import Flask, request
from flask_cors import CORS from flask_cors import CORS
from flask_socketio import SocketIO from flask_socketio import SocketIO
from utils.observer import Status, uuid2subject from utils.observer import Status, Subject
from routes.index import router as index_router from routes.index import router as index_router
from routes.answers import QUEUE_MANAGER, router as answers_router from routes.answers import QUEUE_MANAGER, router as answers_router
from routes.datasets import router as datasets_router from routes.datasets import router as datasets_router
@ -49,7 +49,7 @@ def init_socketio(app):
def on_get_queue_position(data): def on_get_queue_position(data):
sid = request.sid # type: ignore sid = request.sid # type: ignore
subject_id = data["uuid"] subject_id = data["uuid"]
subject = uuid2subject[subject_id] subject = Subject.uuid2subject[subject_id]
if subject.status == Status.WAITING: if subject.status == Status.WAITING:
return socketio.emit( return socketio.emit(
'queue_position', 'queue_position',

View File

@ -47,6 +47,7 @@ class SocketObserver(Observer):
class Subject: class Subject:
obs2subject: dict[Observer, "Subject"] = {} obs2subject: dict[Observer, "Subject"] = {}
uuid2subject: dict[str, "Subject"] = {}
def __init__(self, id: str, type_: str, task: Callable) -> None: def __init__(self, id: str, type_: str, task: Callable) -> None:
self.id = id self.id = id
@ -83,6 +84,3 @@ class Subject:
self.observers.clear() self.observers.clear()
self.results = results self.results = results
# TODO: maybe save results to disk here? # TODO: maybe save results to disk here?
uuid2subject: dict[str, Subject] = {}