Skip to content

Commit

Permalink
ADD endpoint for manually retriggering autograde #394
Browse files Browse the repository at this point in the history
  • Loading branch information
wabscale committed Sep 19, 2022
1 parent cd4bedf commit ee32af1
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
6 changes: 6 additions & 0 deletions api/anubis/rpc/enqueue.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from anubis.k8s.theia import reap_theia_session_by_id, reap_stale_theia_sessions
from anubis.lms.assignments import make_shared_assignment
from anubis.lms.questions import assign_missing_questions
from anubis.lms.autograde import bulk_autograde
from anubis.utils.data import with_context
from anubis.utils.testing.seed import seed

Expand Down Expand Up @@ -105,3 +106,8 @@ def enqueue_create_assignment_github_repo(*args):
def enqueue_reap_pvc_user(*args):
"""Enqueue reap pvc for user"""
rpc_enqueue(reap_user_pvc, queue='default', args=args)


def enqueue_bulk_autograde(*args):
"""Enqueue bulk autograde of assignment"""
rpc_enqueue(bulk_autograde, queue="regrade", args=args)
28 changes: 28 additions & 0 deletions api/anubis/views/admin/autograde.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
get_assignment_history,
get_assignment_sundial,
)
from anubis.rpc.enqueue import enqueue_bulk_autograde

autograde_ = Blueprint("admin-autograde", __name__, url_prefix="/admin/autograde")

Expand Down Expand Up @@ -48,6 +49,33 @@ def admin_autograde_cache_reset(assignment_id: str):
return success_response({"message": "success"})


@autograde_.get("/run/<string:assignment_id>")
@require_admin()
@json_response
def admin_autograde_run_assignment_id(assignment_id: str):
"""
:param assignment_id:
:return:
"""

# Pull the assignment object
assignment = Assignment.query.filter(Assignment.id == assignment_id).first()

# Verify that we got an assignment
req_assert(assignment is not None, message="assignment does not exist")

# Verify that the current course context, and the assignment course match
assert_course_context(assignment)

# Enqueue regrade to be run in rpc worker
enqueue_bulk_autograde(assignment.id)

return success_response({
'status': 'Regrade of assignment has been enqueued',
})


@autograde_.route("/assignment/<string:assignment_id>")
@require_admin()
@json_response
Expand Down

0 comments on commit ee32af1

Please sign in to comment.