kfl / staffeli_nt

Staffeli NT Technology
MIT License
8 stars 7 forks source link

Add support for (grading) resubmissions #24

Open madsobitsoe opened 3 years ago

madsobitsoe commented 3 years ago

If I remember correctly, upload.py will not submit grades/feedback, if feedback is already present. I think it's implemented as a failsafe.

In POP2021E we allow resubmissions for all assignments.

I am unsure how to implement this, but we could look into:

I think we need a "new upload function" - possibly called grade_resubmissions, as we want to do the opposite of our normal grade/feedback process. It might be a quite large addition/change.

(This feels like a pipe dream and is not at all urgent. Nice to have, but not needed as such)

madsobitsoe commented 2 years ago

I took the liberty of editing and crossposting Casper's comments from our PoP-slack.

Previously we have been able to grade resubmissions in the following way: 1) Go to Grades 2) Select our course section 3) Here we are able to view who has resubmitted. Click on a student who has resubmitted and enter speedgrader

As of now, the last step does not work. The speedgrader button is grayed out, with the following message:

Due to the size of your course you must select a student group before launching SpeedGrader.

This means we instead have to do the following: 1) Go to Grades 2) Select our course section 3) Here we are able to view who has resubmitted. 4) Open a new window and go to People -> Project Groups 5) Open all Project groups for the relevant course section (Hold) to find the group of one person who has resubmitted 6) Open a new window and go to Assignments 7) Click the relevant assignment 8) Find the group to grade in the (unsorted) drop down menu, to open in speegrader 9) Find the person in the drop down menu from speegrader Repeat for every single resubmission.

madsobitsoe commented 2 years ago

Using the --select-ta option, we can easily download specific (re-)submissions. The functionality we need to add/change is only the re-grading of already graded submissions.

Technically this is as easy as removing the sanity check from upload.py. I think it would be a very good idea to separate the functionality, so we have two different functions:

Duplicating the code is not necessarily nice, but it's much easier than refactoring IMO. Adding some meta-data output, like "This submissions was graded as 0/1 on dd/mm/yyyy. Are you sure you want to overwrite?" would be a nice feature.

It might be a good idea to filter out passed submissions as a default.

kfl commented 2 years ago

As @madsobitsoe says, I think that upload.py can almost update a grade (aka give a new grade for a resubmission), however there is a check to prevent that the same feedback is not uploaded twice, and then there is a small sanity check before the actual grade is set. I don't think that we really need the second sanity check. (Neither sanity checks are in upload_single.py and it has been working fine).

However, I'm more concerned regarding the downloading of resubmissions, where I'd prefer if we can support both the "PoP-style" workflow and the "AP/PCS-style" workflow.

If we start changing upload.py then we might as well fix that comments are sent to all group members.