CSC/ECE 517 Fall 2016/oss E1649 KPS

From Expertiza_Wiki
Revision as of 00:03, 4 November 2016 by Ssdeshp5 (talk | contribs) (→‎New Implementation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Expertiza

Expertiza is an Open Source Software project developed by NCSU. It allows the instructor to create assignments as well as modify existing assignments. Students can signup for topics in an assignment and can submit articles, codes, web-sites etc. It is a web application built on Ruby on Rails framework. It also allows students to review the submissions that have been made other students.

Current Implementation

In the current implementation only the students can sign up for topics. Because of this, no higher authority (e.g instructor) can control the signups in a straightforward manner. If the instructor wishes to assign a particular topic to a team or remove a team from a particular topic then the instructor has to impersonate that student and sign up for the topic. Due, to the current implementation, you can neither handle the mistakes in signups , nor make modifications to the existing signups without impersonation.

New Implementation

The new implementation allows an instructor to assign a particular topic to a team as well as remove a team from a topic.This functionality has been added in views/sign_up_sheet/_all_actions.html.erb which now has a '+' sign to assign a topic to a particular user. If the instructor clicks on this, then a view will appear which takes in the username of a student to be added. When the box is filled out and the “add” button clicked, then the indicated user’s team is signed up for the topic. If there are no slots available for that topic then the team will be put on the waiting list. There is also a 'X' sign that will help the instructor to remove a team from a topic.

Some of the scenarios where the instructor might wish to add a team would be if the sign up deadline has passed, or if the instructor has decided to update the maximum number of teams allowed to choose a particular topic. The instructor might want to drop a team from the topic if the team doesn't want to proceed with the same topic for the assignment. With the new implementation, Instructors/Teaching Assistants do not need to go through the trouble of impersonating a student in order to add or drop their team from topics.

We have chosen the nested if-else approach because there were many scenarios , all of which required us to take different actions. Changes were made in the following files -

  • controllers/sign_up_sheet_controller.rb
  • views/sign_up_sheet/_all_actions.html.erb
  • views/sign_up_sheet/assign_topic.html.erb
  • views/sign_up_sheet/remove_topic.html.erb

Functions added to implement functionality :-

  • update_team
  • assign_topic
  • remove_team
  • remove_topic

In the sign_up_sheet controller, two major methods were added:

update_team

This method allows an admin user to add a team to a particular topic, based on the username of any member of said team. If the number of teams already assigned to the topic is greater than or equal to the maximum number of teams allowed to pick the topic, the new team is added to the waitlist. If a team was previously assigned a topic, and are then added by an admin to a new topic, their association with the old topic is deleted, and the required changes to the waitlist of topics are made as well. The system will throw an error if the username of an invalid user is used to search for teams associated with the user. The system checks that the topic is not being assigned again to the same team that has the topic.

remove_team

This method allows the admin to remove teams from a given topic, based on the username of a team member. First, a check is done to ensure that the team is indeed associated with the given topic. If this is the case, the entry is deleted from the table sign_up_teams, and the corresponding changes are made to the waitlist as well.

You can view our Pull Request here.

Functionality

Two additional icons have been added in the Actions column. The ‘green plus’ icon allows you to add a team to the current topic. Clicking on the icon redirects you to a form, where the admin is required to enter the username of the person whose team he wishes to add.

Clicking submit then redirects back to the original page, with a flash message containing the status of the operation.

In case the topic has already been assigned the maximum number of teams, the new team is added to the waitlist.

The 'red cross' icon is used to remove a team from the given topic. Clicking on it takes the admin to a form, where he is required to enter the username of one of the team members belonging to the team that is to be removed. Submitting the form redirects the user back to the original page, with a flash message indicating the status of the remove operation.

Scope for Improvement

The system can take in individual users who don't have a team or topic and can add him/her to the existing teams that are enrolled for the topic.

References

  1. Expertiza on GitHub
  2. The live Expertiza website
  3. Expertiza wiki