Coverage for src / local_deep_research / research_scheduler / routes.py: 90%

35 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-02-25 01:07 +0000

1""" 

2API routes for document scheduler management. 

3""" 

4 

5from flask import Blueprint, jsonify, session 

6from loguru import logger 

7 

8from ..web.auth.decorators import login_required 

9from .document_scheduler import get_document_scheduler 

10 

11# Create blueprint 

12scheduler_bp = Blueprint("document_scheduler", __name__) 

13 

14 

15def get_current_username(): 

16 """Get current username from session.""" 

17 return session.get("username") 

18 

19 

20@scheduler_bp.route("/api/scheduler/status", methods=["GET"]) 

21@login_required 

22def get_scheduler_status(): 

23 """Get the current status of the document scheduler for the current user.""" 

24 try: 

25 username = get_current_username() 

26 if not username: 26 ↛ 27line 26 didn't jump to line 27 because the condition on line 26 was never true

27 return jsonify({"error": "User not authenticated"}), 401 

28 

29 scheduler = get_document_scheduler() 

30 status = scheduler.get_status(username) 

31 return jsonify(status) 

32 except Exception: 

33 logger.exception("Error getting scheduler status") 

34 return jsonify({"error": "Failed to get scheduler status"}), 500 

35 

36 

37@scheduler_bp.route("/api/scheduler/run-now", methods=["POST"]) 

38@login_required 

39def trigger_manual_run(): 

40 """Trigger a manual processing run of the document scheduler for the current user.""" 

41 try: 

42 username = get_current_username() 

43 if not username: 43 ↛ 44line 43 didn't jump to line 44 because the condition on line 43 was never true

44 return jsonify({"error": "User not authenticated"}), 401 

45 

46 scheduler = get_document_scheduler() 

47 success, message = scheduler.trigger_manual_run(username) 

48 

49 if success: 

50 return jsonify({"message": message}) 

51 else: 

52 return jsonify({"error": message}), 400 

53 except Exception: 

54 logger.exception("Error triggering manual run") 

55 return jsonify({"error": "Failed to trigger manual run"}), 500