CSC/ECE 517 Fall 2016/oss E1656: Difference between revisions
Line 24: | Line 24: | ||
===Handle Duplicates=== | ===Handle Duplicates=== | ||
====Current Implementation=== | ====Current Implementation==== | ||
'''When a team with a duplicate name is imported, one of the options is to rename the new team. There should also be an option to rename an existing team. See Issue 329. | '''When a team with a duplicate name is imported, one of the options is to rename the new team. There should also be an option to rename an existing team. See Issue 329. |
Revision as of 04:22, 28 October 2016
E1656. Improve imports
This page provides a description of the Expertiza based OSS project.
Introduction to Expertiza
Expertiza is an open source project based on Ruby on Rails framework.
Problem Statement
The following tasks were listed for this project:
- The simplest fix: If I try to import topics, the import page gives me this message: “The import process expects the following columns:” but it doesn’t say what the columns are (topic number, topic name, category, number of slots, category)! It used to be in the system; please revert the change to fix this bug. See Issue 719.
- When teams are imported in order to insert new members, the members are not inserted. See Issue 328.
- When a team with a duplicate name is imported, one of the options is to rename the new team. There should also be an option to rename an existing team. See Issue 329.
- Review assignments (“reviewer mappings”) should be able to be imported, but cannot be imported. See Issue 711
- It should be possible to import a list of users who have signed up for topics, but this feature does not yet exist. See Issue 153.
- It should be possible to leave off the final fields in a line of a CSV file. These fields are often not specified anyway. For example, if a password isn’t specified when a new user is created, the system generates a password (see Issue 183). When importing topics, topic categories are rarely specified. But if the final field is blank, the import requires the CSV line to end with “, “ (comma and space). This should be fixed for all imports.
- For every kind of data to be imported, Expertiza currently specifies the ordering of fields. This isn’t very flexible; it may require the user (an instructor) to edit an existing CSV file. It would be better if, after importing the data, Expertiza showed the data together with dropdowns containing the default field headers. (This is similar to the way Excel shows data when it is imported from a CSV file.) Then the user could change the dropdowns to cause a different ordering of fields. See Issue 110.
- Create a way to export a list of teams that have signed up for topics, and who are waitlisted for topics, as well as participants in an assignment who have not signed up for topics. Choose the format, but keep it as consistent as possible with the other export formats. This would help the professor when students ask him for advice on finding teammates.
About Versions Controller
Handle Duplicates
Current Implementation
When a team with a duplicate name is imported, one of the options is to rename the new team. There should also be an option to rename an existing team. See Issue 329. The current implementation allows the user to handle duplicates, by the following techniques
- ignore the new team
- replace the existing team with the new team
- insert any new members into the existing team
- rename the new team and import
- rename the existing team and import
Functionality
The above functionalities make it easier to achieve the goal of handling duplicates while importing.
Drawbacks and Solutions
The above set of functionalities do not allow User to ever rename an existing team, rather force him rename his own team. Thus the above requirement provides the necessary freedom to the User by providing him the option to rename an already existing team.
=New Implementation
The option has been implemented using the update functionality that is already present in rails models, to update existing values of Active Records. To implement this feature we have also made use of the functionality for generating team names, that is already present within the Team model.
A code snippet is given below:
if handle_dups == "renameOldTeam" # rename: rename new team if teamtype.is_a?(CourseTeam) CourseTeam.update(team.id, :name => self.generate_team_name(Course.find(id).name)) return name elsif teamtype.is_a?(AssignmentTeam) AssignmentTeam.update(team.id, :name => self.generate_team_name(Assignment.find(id).name)) return name end end