Skip to content

Updating own past feedback sets other tutors assignment to is_done=True

Summary

Updating own past feedback sets other tutors assignment to is_done=True.
The function that implements this behaviour makes it seem as if it were intentional.
We should try to understand why the function has been written the way it is and if there are any side effects to changing to such that it doesn't set other people assignments to is_done=False when a tutor updates his own feedback.

Steps to reproduce

Example Project

What is the current bug behavior?

What is the expected correct behavior?

Relevant logs and/or screenshots

from signals.py

@receiver(post_save, sender=Feedback)
def update_after_feedback_save(sender, instance, created, **kwargs):
    """ Do the following steps when feedback is saved:

    - set that feedback exists
    - copy the final status of the feedback
    - set all assignments of the submission done and remove active status
    """
    log.debug('SIGNAL -- update_after_feedback_save')
    meta = instance.of_submission.meta
    meta.has_feedback = True
    meta.has_final_feedback = instance.is_final

    undone_assignment = meta.submission.assignments.filter(is_done=False)
    assert undone_assignment.count() <= 1
    if undone_assignment.count() > 0:
        log.debug('SIGNAL -- Completed: %s' % undone_assignment.first())
        meta.feedback_authors.add(undone_assignment.first().subscription.owner)
        meta.done_assignments += 1
        meta.has_active_assignment = False
        undone_assignment.update(is_done=True)

    meta.save()

Possible fixes