Пример #1
0
def change_mark(request, slug):
    if request.method == "POST":
        data = json.loads(request.body.decode("utf-8"))
        grade_system = data.get("grade_system")
        pk = data.get("pk")
        new_comment = data.get("comment")
        new_mark = data.get("mark")
        if grade_system is not None and pk is not None and new_mark is not None:
            with reversion.create_revision():
                mark, old_mark = MarkAPI.set_mark(grade_system, pk, new_mark)
                if mark.problem:
                    assignment_hierarchy = "{0:s}/{1:s}/{2:s}".format(
                        mark.problem.task.assignment.name, mark.problem.task.name, mark.problem.name
                    )
                elif mark.task:
                    assignment_hierarchy = "{0:s}/{1:s}".format(mark.task.assignment.name, mark.task.name)
                else:
                    assignment_hierarchy = "{0:s}".format(mark.assignment.name)
                reversion.set_user(request.user)
                reversion.set_comment(
                    """Mark for '{0:s}' student, for '{1:s}'
                    assignment was changed from '{2:d}' to '{3:d}' by '{4:s}' user """.format(
                        mark.student.username, assignment_hierarchy, old_mark, mark.mark, request.user.username
                    )
                )
        if grade_system is not None and pk is not None and new_comment is not None:
            MarkAPI.set_comment(grade_system, pk, new_comment)
    return HttpResponse()