CSC/ECE 517 Fall 2019 - E1971. OSS project Finklestein: Instructors & Institutions

From Expertiza_Wiki
Jump to navigation Jump to search

E1971. OSS project Finklestein: Instructors & Institutions

Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows instructors to manager courses and assignments for students. Students can form up teams in Expertiza to work on different projects and assignments and do peer review about other students' submissions.

Introduction

  • E1971 Project aims to fix the associations problems between the Institution and Instructor class.


Problem Statement

The following tasks were accomplished in E1971 project:

  • Task1: 1
  • Task2: Fix the bugs to make Expertiza emails reviewers each time an author that they have reviewed submits new work.
  • Task3: The instructor could get a Blind carbon copy every time.


Issue1

  • Add a method in both "update" and "create" functions to call the email function to make the Experiza send the email to reviewee when reviewers submit the reviews
app/controllers/response_controller.rb:

  def send_email_to_reviewee(map)
    defn = {body: {type: "Peer Review", partial_name: "new_submission"} }
    map.email(defn, Assignment.find(Participant.find(map.reviewer_id).parent_id))
  end


Issue2

  • Add new function to email all reviewers a new submission is ready to review:
  • In the first round, there is no reviewer before they take a request
  • ...........................................................
  • ...........................................................

app/controllers/submitted_content_controller.rb:

email_all_reviewers(@participant)
    end
    redirect_to action: 'edit', id: @participant.id
  end
def email_all_reviewers(participant)
    if participant.reviewers != []
      participant.reviewers.each do |reviewer|
        map = ReviewResponseMap.where(['reviewer_id = ? and reviewee_id = ?', reviewer.id, participant.team.id]).first
        responses = Response.where(:map_id => map.id)
        responses = responses.sort_by { |obj| obj.updated_at }

        # the latest response will be the last
        latest_response = responses.last

        # we need to pass the id of lastest_response in the URL mentioned in the mail.
        # this will open the correct /response/edit?id=#{latest_response.id} page for the reviewer when (s)he clicks on it.

        user = User.find(reviewer.user_id)
        instructor = User.find(user.parent_id)
        bcc_mail_address = ""
        if instructor.copy_of_emails?
          bcc_mail_address = instructor.email
        else
          # do noting
        end
        if user.email_on_submission?
          MailerHelper.send_mail_to_reviewer(user,
                                             bcc_mail_address,
                                             "You have a new submission to review",
                                             "update",
                                             "Please visit https://expertiza.ncsu.edu/response/edit?id=#{latest_response.id} and proceed to peer reviews.").deliver
        end
      end
    end
  end


app/helpers/mailer_helper.rb:

def self.send_mail_to_reviewer(user, bcc_mail_address, subject, partial_name, note)
    Mailer.new_review_request_message ({
        to: user.email,
        bcc: bcc_mail_address,
        subject: subject,
        body: {
            user: user,
            first_name: ApplicationHelper.get_user_first_name(user),
            message: note,
            partial_name: partial_name
        }
    })
  end

app/views/mailer/new_review_message.html.erb:

<!DOCTYPE html>
<html>
<head>
  <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<%= render :partial => 'mailer/partials/'+@partial_name+'_html' %>

<hr>

This message has been generated by <A HREF="http://expertiza.ncsu.edu">Expertiza</A><BR/>
http://expertiza.ncsu.edu

</body>
</html>

app/views/mailer/partials/update.html.html.erb:


Hi <%= @first_name %>,</br>
<p>
  One of the assignments you are reviewing has just been entered or revised.
  "<%= @message %>"
</p>
<br/>

Issue3

  • ...........................................................................................

app/controllers/submitted_content_controller.rb:

instructor = User.find(user.parent_id)
        bcc_mail_address = ""
        if instructor.copy_of_emails?
          bcc_mail_address = instructor.email
        else
          # do noting
        end
 bcc: bcc_mail_address,

Process Video

Test

Team Information

  1. Siwei Wen (swen4@ncsu.edu)
  2. Shuzheng Wang (swang41@ncsu.edu)
  3. Zhifeng Zhu (zzhu25@ncsu.edu)
  4. Mentor: Ed Gehringer (efg@ncsu.edu)

References

  1. Expertiza on GitHub
  2. The live Expertiza website
  3. Expertiza project documentation wiki
  4. GitHub Project Repository Fork
  5. Demo link
  6. Rspec Documentation