Coverage for app / moodleTasks.py: 92%
36 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-26 21:50 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-26 21:50 +0000
1from typing import List
2from datetime import datetime, timedelta
4from fastapi import APIRouter, Depends, HTTPException
5from sqlalchemy.orm import Session
7from app.database import get_db
8from app.models.moodleTask import MoodleTask
9from app.models.task import Task
11router = APIRouter()
14@router.get("") # default /moodletasks endpoint
15def get_tasks(db: Session = Depends(get_db)):
16 moodleTasks = (
17 db.query(MoodleTask).filter(
18 MoodleTask.user_id == 2,
19 MoodleTask.approved == None
20 ).all()
21 ) # Hard coded user 2, until users are implemented
23 if not moodleTasks:
24 raise HTTPException(status_code=404, detail="No Tasks Found")
26 else:
27 return moodleTasks
30@router.post("/{task_id}/approve")
31def approve_task(task_id: int, db: Session = Depends(get_db)):
32 moodleTask = (
33 db.query(MoodleTask)
34 .filter(MoodleTask.id == task_id, MoodleTask.user_id == 2)
35 .first()
36 )
38 if not moodleTask:
39 raise HTTPException(status_code=404, detail="Task Not Found")
41 if moodleTask.approved:
42 raise HTTPException(status_code=400, detail="Task already approved")
44 new_task = Task(
45 user_id=1,
46 title=moodleTask.title,
47 description=f"{moodleTask.course_name} | {moodleTask.activity}",
48 length=20,
49 importance=5,
50 due_at=(
51 moodleTask.due_at
52 if moodleTask.due_at
53 else datetime.now() + timedelta(days=1)
54 ),
55 reference_url=moodleTask.reference_url,
56 )
58 moodleTask.approved = True
59 moodleTask.approved_at = datetime.now()
61 db.add(new_task)
62 db.commit()
63 db.refresh(new_task)
65 return {"detail": "Task approved", "task_id": new_task.id}
68@router.post("/{task_id}/reject")
69def reject_task(task_id: int, db: Session = Depends(get_db)):
70 moodleTask = (
71 db.query(MoodleTask)
72 .filter(MoodleTask.id == task_id, MoodleTask.user_id == 2)
73 .first()
74 )
76 if not moodleTask:
77 raise HTTPException(status_code=404, detail="Task Not Found")
79 moodleTask.approved = False
80 db.commit()
82 return {"detail": "Task rejected"}