CSC/E1869 GRADING AUDIT TRAIL: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 111: Line 111:
===Actual Code Change===
===Actual Code Change===
==Files Added==
==Files Added==
*app/controllers/grades_controller.rb
'''
https://bit.ly/2Cg9WzR
Creates a Grading History Record for every Submission grade edited by the instructor for a Team.
'''
*app/controllers/grading_histories_controller.rb
'''
https://bit.ly/2RY5xa6
Calls the grading history view after validaing Submission and Review Type.
'''
*app/controllers/review_mapping_controller.rb
'''
https://bit.ly/2QywzZc
Creates a Grading History Record for every Review grade edited by the instructor for a Student.
'''
*app/models/grading_history.rb
*app/models/grading_history.rb
'''
'''
  class GradingHistory < ActiveRecord::Base
https://bit.ly/2PHKNRY
    attr_protected
Model for Grading History.
    belongs_to :instructor, inverse_of: :instructor_id
'''
    belongs_to :assignment, inverse_of: :assignment_id
 
  end
*app/models/review_grading_history.rb
'''
'''
*app/controllers/grading_history_controller.rb
https://bit.ly/2SPNR0e
Model containing specifics of Review Grading History. Inherits Grading History.
'''
'''
<pre>
  class GradingHistoriesController < ApplicationController
    before_action :set_grading_history, only: %i[show]


    def action_allowed?
      return true if ['Instructor', 'Teaching Assistant', 'Super-Administrator', 'Administrator'].include? current_role_name
    end


    # GET /grading_histories
*app/models/submission_grading_history.rb
    def index
      @grading_histories = GradingHistory.where(grade_receiver_id: params[:grade_receiver_id])
    end
  end
</pre>
'''
'''
*app/views/grading_history/index_html.erb
https://bit.ly/2S5EI3J
Model containing specifics of Submission Grading History. Inherits Grading History.
'''
'''
<pre>
  <h1 class="center">Grading Record</h1>


  <table class="table table-striped">
    <thead>
    <tr>
      <th>Instructor</th>
      <th>Assignment</th>
      <th>Grade Receiver</th>
      <th>Grade</th>
      <th>Comment</th>
      <th>Graded At</th>
    </tr>
    </thead>
    <!--This is the main view of the table. This will add table with either hyperlink or the content nased on the operation. -->
    <tbody>
    <% @grading_histories.each do |record| %>
        <tr>
          <td><%= User.where(id: record.instructor_id).pluck(:fullname).first %></td>
          <td><%= Assignment.where(id: record.assignment_id).pluck(:name).first %></td>
          <% if record.grading_type == "Submission" %>
              <td><%= Team.where(id: record.grade_receiver_id).pluck(:name).first %></td>
          <% else %>
              <td><%= User.where(id: record.grade_receiver_id).pluck(:fullname).first %></td>
          <% end %>
          <td><%= record.grade %></td>
          <td><%= record.comment %></td>
          <td><%= record.created_at %></td>
        </tr>
    <% end %>
    </tbody>
  </table>
</pre>
'''
==Files Modified==
==Files Modified==
* app/controllers/grades_controller.rb
* app/controllers/grades_controller.rb

Revision as of 02:20, 16 December 2018

Introduction

Problem Statement

After an instructor gave a grade to an assignment, there is no way to track who gave the grade. A grading audit trail must be created and the following information needs to be stored:

1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done.
2. Comments previously provided by other instructors must also be preserved.

This information needs to be stored every time an instructor edits a grade / comment and clicks the save button.

Currently, there are two places need to add grading audit trail:

1. Review grade: Log in as instructor -> Manage -> Assignments -> View Review Report
2. Submission grade: Log in as instructor -> Manage -> Assignments -> View submissions

Proposed Solution

Design

We will create a database called grading_history in the system contains elements instructor id, assignment id, grade type, student id, grade, comment, and timestamp.

We will use MVC design to create a model, a controller, and a view for both of Review Grade and Submission Grade.

Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.
Controller: grading_history_controller.rb. Saves a new entry into database every time a review grade or submission grade is saved
View: index_html.erb. Displays current submission or review's grading history. An existing example of this is submission record in the system.

We also need to modified grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create a entry saves into database.

Expected View

Expected view for submission list


Expected view for review report


Expected view for grade record

Diagram

Files Changed

Files Added

  • app/models/grading_history.rb
This is a model for grading audit trail, containing attributes of grading history
  • app/controllers/grading_history_controller.rb
This is a controller for grading audit trail, it can add grading history into the system
  • app/views/grading_history/index_html.erb
This is a view for grading audit trail, it will display all grading histories of a submission/review

Files Modified

  • app/controllers/grades_controller.rb
Add code to call methods in grading_history_controller.rb to create new grading history
  • app/views/assignments/list_submissions.html.erb
Add code to support view changes for Grade Record
  • app/views/review_mapping/_review_report.html.erb
Add code to support view changes for Grade Record

Testing Plan

Functional testing:

For “Review grade”:

1.Log in as instructor

2.Navigate to Manage -> Assignments

3.Click on Review Report

A report with following details will show up: Timestamp, Instructor Id, Assignment id, Grade type, Student id, Grade, Comment

4.Every time an instructor edits or comments on the grade the report is updated with the new entry and timestamp.


For “Submission grade”:

1.Log in as instructor

2. Navigate to Manage -> Assignments

3.Click on View Submission -> History

A report with following details whill show up: Timestamp, Instructor Id, Assignment id, Grade type, Student id, Grade, Comment

4.Every time an instructor edits or comments on the grade the report is updated with the new entry and timestamp.

Actual Implementation

Actual View

Actual view for submission list


Actual view for review report


Actual view for submission grade record


Actual view for review grade record

Actual Code Change

Files Added

  • app/controllers/grades_controller.rb

https://bit.ly/2Cg9WzR

Creates a Grading History Record for every Submission grade edited by the instructor for a Team.

  • app/controllers/grading_histories_controller.rb

https://bit.ly/2RY5xa6

Calls the grading history view after validaing Submission and Review Type.

  • app/controllers/review_mapping_controller.rb

https://bit.ly/2QywzZc Creates a Grading History Record for every Review grade edited by the instructor for a Student.

  • app/models/grading_history.rb

https://bit.ly/2PHKNRY Model for Grading History.

  • app/models/review_grading_history.rb

https://bit.ly/2SPNR0e Model containing specifics of Review Grading History. Inherits Grading History.


  • app/models/submission_grading_history.rb

https://bit.ly/2S5EI3J Model containing specifics of Submission Grading History. Inherits Grading History.

Files Modified

  • app/controllers/grades_controller.rb

 def save_grade_and_comment_for_submission
   participant = AssignmentParticipant.find_by(id: params[:participant_id])
   @team = participant.team
   @team.grade_for_submission = params[:grade_for_submission]
   @team.comment_for_submission = params[:comment_for_submission]
   begin
+     GradingHistory.create(instructor_id: session[:user].id,
+                           assignment_id: participant.assignment.id,
+                           grading_type: "Submission",
+                           grade_receiver_id: @team.id,
+                           grade: @team.grade_for_submission,
+                           comment: @team.comment_for_submission)
     @team.save
   rescue StandardError
     flash[:error] = $ERROR_INFO
   end
   redirect_to controller: 'assignments', action: 'list_submissions', id: @team.parent_id
 end
  • app/controllers/review_mapping_controller.rb

def save_grade_and_comment_for_reviewer
   review_grade = ReviewGrade.find_by(participant_id: params[:participant_id])
   review_grade = ReviewGrade.create(participant_id: params[:participant_id]) if review_grade.nil?
   review_grade.grade_for_reviewer = params[:grade_for_reviewer] if params[:grade_for_reviewer]
   review_grade.comment_for_reviewer = params[:comment_for_reviewer] if params[:comment_for_reviewer]
   review_grade.review_graded_at = Time.now
   review_grade.reviewer_id = session[:user].id
   begin
+     GradingHistory.create(instructor_id: session[:user].id,
+                           assignment_id: params[:assignment_id],
+                           grading_type: "Review",
+                           grade_receiver_id: Participant.find(params[:participant_id]).user_id,
+                           grade: params[:grade_for_reviewer],
+                           comment: params[:comment_for_reviewer])
     review_grade.save!
   rescue StandardError
     flash[:error] = $ERROR_INFO
   end
   redirect_to controller: 'review_mapping', action: 'response_report', id: params[:assignment_id]
 end

  • app/views/assignments/list_submissions.html.erb

132

133            <%= link_to "Grading History", grading_histories_path(grade_receiver_id: Participant.where(id: r.id).pluck(:user_id).first) %>

134

  • app/views/review_mapping/_review_report.html.erb

75

77          <%= link_to "Grading History", grading_histories_path(grade_receiver_id: team.id) %>

79

Reference

Expertiza

Expertiza_wiki

Expertiza Documentation

Expertiza Github