<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vnpatel</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vnpatel"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Vnpatel"/>
	<updated>2026-05-23T09:48:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114791</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114791"/>
		<updated>2017-12-13T19:38:17Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:FIleSelectionforUpload.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:PaperDisplay.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:AddCOntributor.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:EmailSenttoAddedContributor.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:DisplayCOntributors.png]]&lt;br /&gt;
&lt;br /&gt;
Link to Screencast: https://www.youtube.com/watch?v=rg06JjVJqtQ&amp;amp;feature=youtu.be&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114736</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114736"/>
		<updated>2017-12-13T04:52:32Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:FIleSelectionforUpload.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:PaperDisplay.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:AddCOntributor.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:EmailSenttoAddedContributor.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:DisplayCOntributors.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:AddCOntributor.png&amp;diff=114735</id>
		<title>File:AddCOntributor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:AddCOntributor.png&amp;diff=114735"/>
		<updated>2017-12-13T04:52:02Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114734</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114734"/>
		<updated>2017-12-13T04:49:04Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:FIleSelectionforUpload.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:PaperDisplay.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:EmailSenttoAddedContributor.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:DisplayCOntributors.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:DisplayCOntributors.png&amp;diff=114733</id>
		<title>File:DisplayCOntributors.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:DisplayCOntributors.png&amp;diff=114733"/>
		<updated>2017-12-13T04:48:36Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114732</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114732"/>
		<updated>2017-12-13T04:47:20Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:FIleSelectionforUpload.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:PaperDisplay.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:EmailSenttoAddedContributor.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:EmailSenttoAddedContributor.png&amp;diff=114731</id>
		<title>File:EmailSenttoAddedContributor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:EmailSenttoAddedContributor.png&amp;diff=114731"/>
		<updated>2017-12-13T04:46:49Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114730</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114730"/>
		<updated>2017-12-13T04:46:06Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:FIleSelectionforUpload.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:PaperDisplay.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:PaperDisplay.png&amp;diff=114729</id>
		<title>File:PaperDisplay.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:PaperDisplay.png&amp;diff=114729"/>
		<updated>2017-12-13T04:45:34Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114728</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114728"/>
		<updated>2017-12-13T04:44:56Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:FIleSelectionforUpload.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FIleSelectionforUpload.png&amp;diff=114727</id>
		<title>File:FIleSelectionforUpload.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FIleSelectionforUpload.png&amp;diff=114727"/>
		<updated>2017-12-13T04:44:24Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114726</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114726"/>
		<updated>2017-12-13T04:43:59Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NotUploaded.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:NotUploaded.png&amp;diff=114725</id>
		<title>File:NotUploaded.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:NotUploaded.png&amp;diff=114725"/>
		<updated>2017-12-13T04:43:28Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114724</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114724"/>
		<updated>2017-12-13T04:42:37Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowCommandsforBlackHolePaper.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ShowCommandsforBlackHolePaper.png&amp;diff=114723</id>
		<title>File:ShowCommandsforBlackHolePaper.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ShowCommandsforBlackHolePaper.png&amp;diff=114723"/>
		<updated>2017-12-13T04:42:07Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114722</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114722"/>
		<updated>2017-12-13T04:41:42Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:ShowPAper.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ShowPAper.png&amp;diff=114721</id>
		<title>File:ShowPAper.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ShowPAper.png&amp;diff=114721"/>
		<updated>2017-12-13T04:41:09Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114720</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114720"/>
		<updated>2017-12-13T04:40:33Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:NewResearchPAper1.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:NewResearchPAper1.png&amp;diff=114719</id>
		<title>File:NewResearchPAper1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:NewResearchPAper1.png&amp;diff=114719"/>
		<updated>2017-12-13T04:40:03Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114718</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114718"/>
		<updated>2017-12-13T04:39:24Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Login.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Login.png&amp;diff=114717</id>
		<title>File:Login.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Login.png&amp;diff=114717"/>
		<updated>2017-12-13T04:38:45Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: uploaded a new version of &amp;amp;quot;File:Login.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114716</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=114716"/>
		<updated>2017-12-13T04:37:19Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actor1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for signup&lt;br /&gt;
&lt;br /&gt;
Captcha&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Submit your work” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like track of paper (which can be selected from a dropdown).&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Capture.PNG]]&lt;br /&gt;
&lt;br /&gt;
The database for storing the papers submitted is not needed as we will be re-using the assignments database already implemented in the expertiza system by simply adding new attributes as mentioned below.&lt;br /&gt;
&lt;br /&gt;
The project uses mainly uses the same database of the actual expertiza system. The tables need to be edited by adding some attributes to provide sufficiemnt relations among the system.&lt;br /&gt;
&lt;br /&gt;
1. The table assignments that stores the submissions need to have a new attribute that can distinguish if the submission is a paper or not.&lt;br /&gt;
&lt;br /&gt;
2. The roles table identifies all different types of users that access expertiza system like instructor, students, etc. We need to add two more roles to this table, the writer and his co-writers.&lt;br /&gt;
&lt;br /&gt;
___&lt;br /&gt;
EFG: I wouldn't do it that way; I'd add attributes to the teams table.  The teams table currently tells where the submitted work is, and it would continue to do that.  But now, the same individual could be on multiple teams for the same assignment.  Each team would still be associated with one reviewable submission.  In fact, two or more teams for the same &amp;quot;assignment&amp;quot; could have exactly the same set of members, if they have submitted two papers for the conference.&lt;br /&gt;
This requires a new step.  When someone clicks on the assignment, the system needs to ask which team/paper/submission they want to work on.&lt;br /&gt;
&lt;br /&gt;
I would also say that if someone is participating in only one assignment, you take them directly to the page where they choose their submission, rather than requiring them to choose the assignment.&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1Revision1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Files to be created'''==&lt;br /&gt;
&lt;br /&gt;
1. '''new_writer_signup.html.erb''' : /app/views/users/&lt;br /&gt;
&lt;br /&gt;
Needed to allow the author/writer of paper to signup to expertiza. As signup is not part of the current system, this needs to be explicitly created.&lt;br /&gt;
&lt;br /&gt;
2. '''writer_homepage.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This is the homepage of the writer. He can view his submissions and access the functionalities available to him.&lt;br /&gt;
&lt;br /&gt;
3. '''add_coauthors.html.erb''' : &lt;br /&gt;
&lt;br /&gt;
This file is needed to allow the writer to invite co-authors for his/her paper. The writer enters the details of the co-author to be invited in this page.&lt;br /&gt;
&lt;br /&gt;
4. '''writer_paper_mapping.rb''' :&lt;br /&gt;
&lt;br /&gt;
This is the model needed to map the papers to their authors. As papers and writers have a many to many relation, it needs to be handled by this model.&lt;br /&gt;
&lt;br /&gt;
=='''Files to be edited'''==&lt;br /&gt;
&lt;br /&gt;
1. users_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. create_writer : for implementing the sign-up for a writer&lt;br /&gt;
 2. new_writer : creates an instance of user class &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
 Methods added:&lt;br /&gt;
 1. addContributor : for adding co-authors to already submitted papers&lt;br /&gt;
 2. updateAttributes : for updating the attributes of the submitted paper&lt;br /&gt;
 3. addReviewDetails : to control the number of reviews, etc. for a given paper&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
Here is a sample code snippet:&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_for @user , :url =&amp;gt; url_for(:controller =&amp;gt; 'users', :action =&amp;gt; 'create_writer') do |f|%&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :name %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :email %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.label :password %&amp;gt;&lt;br /&gt;
         &amp;lt;%= f.text_field :crypted_password %&amp;gt;&lt;br /&gt;
         &amp;lt;%=submit_tag &amp;quot;Create Writer&amp;quot;%&amp;gt;&lt;br /&gt;
     &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
     def new_writer&lt;br /&gt;
       @user = User.new&lt;br /&gt;
       render 'new_writer_signup.html.erb'&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     def create_writer&lt;br /&gt;
       @user = User.new(user_params)&lt;br /&gt;
       @user.role_id = 8;&lt;br /&gt;
       @user.is_new_user = 1;&lt;br /&gt;
       if @user.save&lt;br /&gt;
         flash[:success] = &amp;quot;Your account has been successfully created&amp;quot;&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       else&lt;br /&gt;
         render 'new_writer_signup.html.erb'&lt;br /&gt;
       end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;br /&gt;
&lt;br /&gt;
=='''Test Plan'''==&lt;br /&gt;
&lt;br /&gt;
The automated tests will be implemented based on final implementation of the project as many functions to be used are already defined and tested. But for manual testing, the following test plan can be used.&lt;br /&gt;
&lt;br /&gt;
Test plan for Publishing a paper&lt;br /&gt;
&lt;br /&gt;
1) Click on the link from conference website&lt;br /&gt;
&lt;br /&gt;
2) Enter name, password, and email ID&lt;br /&gt;
&lt;br /&gt;
3) Publish paper&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details for the paper to be published&lt;br /&gt;
&lt;br /&gt;
5) upload paper&lt;br /&gt;
&lt;br /&gt;
6) add collaboraters (enter name and email of contributors)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test plan for editing paper attributes&lt;br /&gt;
&lt;br /&gt;
1) Login&lt;br /&gt;
&lt;br /&gt;
2) Select paper from displayed paper list&lt;br /&gt;
&lt;br /&gt;
3) update attributes and save.&lt;br /&gt;
&lt;br /&gt;
4) Logout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Screenshot'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Signup.png]]&lt;br /&gt;
&lt;br /&gt;
For further queries, contact:&lt;br /&gt;
&lt;br /&gt;
adupadhy@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
dkamin@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
vnpatel@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
uparikh@ncsu.edu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signup.png&amp;diff=114715</id>
		<title>File:Signup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signup.png&amp;diff=114715"/>
		<updated>2017-12-13T04:36:25Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=112802</id>
		<title>CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &quot;assignment&quot; (e.g., for conference reviewing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17A5_Allow_users_to_create_an_account_and_submit_work_to_an_%22assignment%22_(e.g.,_for_conference_reviewing)&amp;diff=112802"/>
		<updated>2017-11-10T03:49:22Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
==Problem Definition==&lt;br /&gt;
&lt;br /&gt;
Expertiza is mainly a peer-assessment system for the students to review submissions made by their peers. For a similar system for journals and conferences, there is one stark difference from the standard peer assessment system. For journals and papers, we need to allow the user to create an account to submit the paper, unlike the standard system where the instructor is supposed to create account for all the students. Also, when a user wants to add a co-author for his/her paper/submission, he should be able to invite them irrespective of the fact that the invited user has an account or not. If the invited user does not have an account, a new account must be created for him/her. For the new system, submitting and reviewing is same as the peer assessment system.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
&lt;br /&gt;
This project aims at extending the application of the expertiza system towards reviewing of journals and conferences by peer authors and relevant users. Hence, it enhances the utility of the expertiza platform for better knowledge sharing beyond the simple assignment submission and reviewing. &lt;br /&gt;
&lt;br /&gt;
=='''Requirements'''==&lt;br /&gt;
&lt;br /&gt;
1.	Any non-Expertiza user can sign up, for submitting his/her work&lt;br /&gt;
&lt;br /&gt;
2.	Document upload privileges for that user.&lt;br /&gt;
&lt;br /&gt;
3.	Adding co-authors to a paper being submitted for reviewing.&lt;br /&gt;
&lt;br /&gt;
4.	View for scores/reviews submitted by reviewers.&lt;br /&gt;
&lt;br /&gt;
=='''Use Cases'''==&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectUseCase.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Actors.PNG‎]]&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Sign Up&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' He/she should not have existing account on Expertiza&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Go to Conference Reviewing section&lt;br /&gt;
&lt;br /&gt;
2.	Provide information in form for sign up&lt;br /&gt;
&lt;br /&gt;
3.	Activate account by opening link, provided via e-mail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Add contributors&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' Writer must have uploaded a paper for reviewing&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Sign in&lt;br /&gt;
&lt;br /&gt;
2.	Select the uploaded document&lt;br /&gt;
&lt;br /&gt;
3.	Select option to add contributors&lt;br /&gt;
&lt;br /&gt;
4.	Add information of co-authors. Email, Name, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Create a submission&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The user is logged in and wants to submit a paper.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:'''&lt;br /&gt;
&lt;br /&gt;
1.	Selects the “Make a submission” button&lt;br /&gt;
&lt;br /&gt;
2.	Enter the details of the paper, like topic of paper, presented at, date of publishing, etc.&lt;br /&gt;
&lt;br /&gt;
3.	The writer is redirected to an upload page where the user can upload the submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Upload Paper&lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Writer&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None&lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' The writer has already created a submission window and is at the upload page.&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1.    The writer clicks the “Upload paper”button.&lt;br /&gt;
&lt;br /&gt;
2.    The writer selects the paper to be submitted from local device.&lt;br /&gt;
&lt;br /&gt;
3.    The writer clicks the “Submit” button.&lt;br /&gt;
&lt;br /&gt;
=='''Database Design'''==&lt;br /&gt;
&lt;br /&gt;
1)	Paper Table&lt;br /&gt;
&lt;br /&gt;
[[File:Paper.PNG‎]]&lt;br /&gt;
&lt;br /&gt;
2) Table to handle many to many relationship between contributors and paper writer.&lt;br /&gt;
&lt;br /&gt;
[[File:Otherone.PNG‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Class Diagram'''==&lt;br /&gt;
&lt;br /&gt;
[[File:ClassDiagram1_latest.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
=='''Designing Practices'''==&lt;br /&gt;
&lt;br /&gt;
The designing practices used will be determined as the project proceeds and the requirements are handled. But for starting the project we will be following the following standard design practices:&lt;br /&gt;
&lt;br /&gt;
1. Model-View-Controller architecture&lt;br /&gt;
&lt;br /&gt;
2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.&lt;br /&gt;
&lt;br /&gt;
3. Try not to violate DRY principle&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ClassDiagram1_latest.png&amp;diff=112801</id>
		<title>File:ClassDiagram1 latest.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ClassDiagram1_latest.png&amp;diff=112801"/>
		<updated>2017-11-10T03:48:25Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111767</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111767"/>
		<updated>2017-11-03T19:28:45Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path:&lt;br /&gt;
    1)describe 'check_directory_path' do:&lt;br /&gt;
    2)    it 'returns false if directory path already in use' do:&lt;br /&gt;
    3)        @assignment = create(:assignment)&lt;br /&gt;
    4)        expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
    5)    end&lt;br /&gt;
    6)end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment:&lt;br /&gt;
&lt;br /&gt;
 1)it 'is not valid without directory_path' do&lt;br /&gt;
 2)    assignment.directory_path = nil&lt;br /&gt;
 3)    assignment.should_not be_valid&lt;br /&gt;
 4)end&lt;br /&gt;
&lt;br /&gt;
3)  To check if after assigning course to an assignment is the directory path updated to contain the course path:&lt;br /&gt;
&lt;br /&gt;
 1)it 'should contain course in path name' do&lt;br /&gt;
 2)    @assignment = create(:assignment)&lt;br /&gt;
 3)    @assignment.directory_path = Course.first.directory_path.to_s + &amp;quot;/finaltest&amp;quot;&lt;br /&gt;
 4)    expect(@assignment.directory_path).to include(Course.first.directory_path)&lt;br /&gt;
 5)end&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111766</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111766"/>
		<updated>2017-11-03T19:20:28Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path:&lt;br /&gt;
    1)describe 'check_directory_path' do:&lt;br /&gt;
    2)    it 'returns false if directory path already in use' do:&lt;br /&gt;
    3)        @assignment = create(:assignment)&lt;br /&gt;
    4)        expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
    5)    end&lt;br /&gt;
    6)end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment:&lt;br /&gt;
&lt;br /&gt;
 1)it 'is not valid without directory_path' do&lt;br /&gt;
 2)    assignment.directory_path = nil&lt;br /&gt;
 3)    assignment.should_not be_valid&lt;br /&gt;
 4)end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111765</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111765"/>
		<updated>2017-11-03T19:07:05Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path.&lt;br /&gt;
&lt;br /&gt;
    1) describe 'check_directory_path' do&lt;br /&gt;
    2)   it 'returns false if directory path already in use' do&lt;br /&gt;
    3)     @assignment = create(:assignment)&lt;br /&gt;
    4)     expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
    5)   end&lt;br /&gt;
    6) end&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment.&lt;br /&gt;
&lt;br /&gt;
    1) it 'is not valid without directory_path' do&lt;br /&gt;
    2)   assignment.directory_path = nil&lt;br /&gt;
    3)   assignment.should_not be_valid&lt;br /&gt;
    4) end&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111764</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111764"/>
		<updated>2017-11-03T19:05:51Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path.&lt;br /&gt;
&lt;br /&gt;
  1) describe 'check_directory_path' do&lt;br /&gt;
  2)   it 'returns false if directory path already in use' do&lt;br /&gt;
  3)     @assignment = create(:assignment)&lt;br /&gt;
  4)     expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
  5)   end&lt;br /&gt;
  6) end&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment.&lt;br /&gt;
&lt;br /&gt;
  1) it 'is not valid without directory_path' do&lt;br /&gt;
  2)   assignment.directory_path = nil&lt;br /&gt;
  3)   assignment.should_not be_valid&lt;br /&gt;
  4) end&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111763</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111763"/>
		<updated>2017-11-03T19:05:05Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path.&lt;br /&gt;
&lt;br /&gt;
  1)describe 'check_directory_path' do&lt;br /&gt;
  2)   it 'returns false if directory path already in use' do&lt;br /&gt;
  3)     @assignment = create(:assignment)&lt;br /&gt;
  4)     expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
  5)   end&lt;br /&gt;
  6)end&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment.&lt;br /&gt;
&lt;br /&gt;
  1)it 'is not valid without directory_path' do&lt;br /&gt;
  2)   assignment.directory_path = nil&lt;br /&gt;
  3)   assignment.should_not be_valid&lt;br /&gt;
  4)end&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111762</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111762"/>
		<updated>2017-11-03T19:03:56Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path.&lt;br /&gt;
 1)describe 'check_directory_path' do&lt;br /&gt;
 2)   it 'returns false if directory path already in use' do&lt;br /&gt;
 3)     @assignment = create(:assignment)&lt;br /&gt;
 4)     expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
 5)   end&lt;br /&gt;
 6)end&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment.&lt;br /&gt;
 1)it 'is not valid without directory_path' do&lt;br /&gt;
 2)   assignment.directory_path = nil&lt;br /&gt;
 3)   assignment.should_not be_valid&lt;br /&gt;
 4)end&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111761</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=111761"/>
		<updated>2017-11-03T19:02:18Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
==''' Automated tests for Issue #391 and #404 '''==&lt;br /&gt;
&lt;br /&gt;
Following RSPEC Code is added to assignment_spec.rb:&lt;br /&gt;
&lt;br /&gt;
1) To check if the directory storage path specified by the user is a part of any other submissions directory we check if the assignment.directory_path is a part of any existing directory path.&lt;br /&gt;
 describe 'check_directory_path' do&lt;br /&gt;
    it 'returns false if directory path already in use' do&lt;br /&gt;
      @assignment = create(:assignment)&lt;br /&gt;
      expect(@assignment.check_directory_path).to eql(false)&lt;br /&gt;
    end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
2) To check that an assignment object cannot be saved until a submission directory path is provided for that assignment.&lt;br /&gt;
 it 'is not valid without directory_path' do&lt;br /&gt;
    assignment.directory_path = nil&lt;br /&gt;
    assignment.should_not be_valid&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110882</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110882"/>
		<updated>2017-10-29T16:03:59Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository https://github.com/daxamin/expertiza .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110881</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110881"/>
		<updated>2017-10-29T16:03:14Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://youtu.be/OVVknOBkG6Y&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://youtu.be/uvnamlY2wzg&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository [https://github.com/daxamin/expertiza] .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110768</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110768"/>
		<updated>2017-10-28T04:03:50Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #391 : https://mymediasite.online.ncsu.edu/online/Play/4f2a294dc38246f996119d309fec30da1d&lt;br /&gt;
&lt;br /&gt;
Link to ScreenCast Bug #404 : https://mymediasite.online.ncsu.edu/online/Play/a1f2b9b7a74b458cb8613c09024f40f01d&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository [https://github.com/daxamin/expertiza] .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110737</id>
		<title>CSC/ECE 517 Fall 2017/E1762 Test various kinds of response-map hierarchies</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110737"/>
		<updated>2017-10-28T03:46:05Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza Background==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, codes, websites, etc). Instructors add and edit assignments to Expertiza. Students can be assigned in teams based on their selection of the topics. The Expertiza project is supported by the National Science Foundation. The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, there are several types of response maps (model files in app/models).  They basically map responses, the one who submitted the response and the one to whom it is directed to. The parent class is ResponseMap, and the subclasses are (from most used to least used) ReviewResponseMap, TeammateReviewResponseMap, FeedbackResponseMap, QuizResponseMap, AssignmentSurveyResponseMap, BookmarkRatingResponseMap, MetareviewResponseMap, SelfReviewResponseMap, CourseSurveyResponseMap, GlobalSurveyResponseMap. You can find the database structure for these response maps here. For each response map record, there is one reviewer_id and reviewee_id. However, you need to check the code to learn what are recorded as reviewer/reviewee ids (see the foreign key constraints at the beginning of each model, they could be participant_id, team_id, etc. as per that model). These models do not have any unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Work to be done'''==&lt;br /&gt;
•	Create a factory for each response map models in factories.rb file (review_response_map factory has already existed).&lt;br /&gt;
&lt;br /&gt;
•	Then create test files in spec/models (you can refer to answer_spec.rb, due_date_spec.rb for how to write specs); write model specs for methods (if you find any method has no caller, remove the method instead of write tests for it). Good tests means their coverage is maximum, so try to cover as much methods and conditions as possible.&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=='''Files to be used or created'''==&lt;br /&gt;
To write the unit tests for the models, we need to define the spec files for the models. But before that, we need to understand the working of the methods. For this we use the following files (in '''app\models''') –&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Feedback_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Quiz_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Assignment_survey_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Bookmark_rating_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Metareview_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Self_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Course_survey_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Global_survey_response_map.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While writing our tests we will need a way to set up database records in a way to test against them in different scenarios. This is done by creating factories for each response map model in the '''spec/factories/factories.rb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, we use RSpec to create the test cases for these models. These files are added in the spec/models/ folder. The convention of naming the files is MODELNAME_spec.rb, hence we get following files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Teammate_review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Feedback_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Quiz_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Assignment_survey_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Bookmark_rating_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Metareview_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Self_review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Course_survey_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Global_survey_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Creating Factories'''==&lt;br /&gt;
Each response map model needs its own factory for testing to create relevant mock objects to test the specs written. Hence here is a sample of a factory we created for the response_map.rb model.&lt;br /&gt;
&lt;br /&gt;
    factory :response_map, class: ResponseMap do&lt;br /&gt;
        reviewed_object_id 1&lt;br /&gt;
        reviewer_id 1&lt;br /&gt;
        reviewee_id 1&lt;br /&gt;
        type 'ResponseMap'&lt;br /&gt;
        calibrate_to 0&lt;br /&gt;
     end&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110734</id>
		<title>CSC/ECE 517 Fall 2017/E1762 Test various kinds of response-map hierarchies</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110734"/>
		<updated>2017-10-28T03:44:15Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Badhu Barabar Che Enjoy Khali tuj chutiyo chu'''&lt;br /&gt;
&lt;br /&gt;
==Expertiza Background==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, codes, websites, etc). Instructors add and edit assignments to Expertiza. Students can be assigned in teams based on their selection of the topics. The Expertiza project is supported by the National Science Foundation. The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, there are several types of response maps (model files in app/models).  They basically map responses, the one who submitted the response and the one to whom it is directed to. The parent class is ResponseMap, and the subclasses are (from most used to least used) ReviewResponseMap, TeammateReviewResponseMap, FeedbackResponseMap, QuizResponseMap, AssignmentSurveyResponseMap, BookmarkRatingResponseMap, MetareviewResponseMap, SelfReviewResponseMap, CourseSurveyResponseMap, GlobalSurveyResponseMap. You can find the database structure for these response maps here. For each response map record, there is one reviewer_id and reviewee_id. However, you need to check the code to learn what are recorded as reviewer/reviewee ids (see the foreign key constraints at the beginning of each model, they could be participant_id, team_id, etc. as per that model). These models do not have any unit tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Work to be done'''==&lt;br /&gt;
•	Create a factory for each response map models in factories.rb file (review_response_map factory has already existed).&lt;br /&gt;
&lt;br /&gt;
•	Then create test files in spec/models (you can refer to answer_spec.rb, due_date_spec.rb for how to write specs); write model specs for methods (if you find any method has no caller, remove the method instead of write tests for it). Good tests means their coverage is maximum, so try to cover as much methods and conditions as possible.&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=='''Files to be used or created'''==&lt;br /&gt;
To write the unit tests for the models, we need to define the spec files for the models. But before that, we need to understand the working of the methods. For this we use the following files (in '''app\models''') –&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Teammate_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Feedback_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Quiz_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Assignment_survey_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Bookmark_rating_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Metareview_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Self_review_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Course_survey_response_map.rb&lt;br /&gt;
&lt;br /&gt;
•	Global_survey_response_map.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While writing our tests we will need a way to set up database records in a way to test against them in different scenarios. This is done by creating factories for each response map model in the '''spec/factories/factories.rb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, we use RSpec to create the test cases for these models. These files are added in the spec/models/ folder. The convention of naming the files is MODELNAME_spec.rb, hence we get following files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Teammate_review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Feedback_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Quiz_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Assignment_survey_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Bookmark_rating_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Metareview_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Self_review_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Course_survey_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
•	Global_survey_response_map_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Creating Factories'''==&lt;br /&gt;
Each response map model needs its own factory for testing to create relevant mock objects to test the specs written. Hence here is a sample of a factory we created for the response_map.rb model.&lt;br /&gt;
&lt;br /&gt;
    factory :response_map, class: ResponseMap do&lt;br /&gt;
        reviewed_object_id 1&lt;br /&gt;
        reviewer_id 1&lt;br /&gt;
        reviewee_id 1&lt;br /&gt;
        type 'ResponseMap'&lt;br /&gt;
        calibrate_to 0&lt;br /&gt;
     end&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110605</id>
		<title>CSC/ECE 517 Fall 2017/E1762 Test various kinds of response-map hierarchies</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110605"/>
		<updated>2017-10-28T02:24:48Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;lakh la kaik&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110604</id>
		<title>CSC/ECE 517 Fall 2017/E1762 Test various kinds of response-map hierarchies</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110604"/>
		<updated>2017-10-28T02:24:35Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110602</id>
		<title>CSC/ECE 517 Fall 2017/E1762 Test various kinds of response-map hierarchies</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110602"/>
		<updated>2017-10-28T02:22:56Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hi thereto harami chu&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110601</id>
		<title>CSC/ECE 517 Fall 2017/E1762 Test various kinds of response-map hierarchies</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1762_Test_various_kinds_of_response-map_hierarchies&amp;diff=110601"/>
		<updated>2017-10-28T02:22:34Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: Created page with &amp;quot;hi there&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hi there&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110200</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110200"/>
		<updated>2017-10-27T22:24:33Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
** To test the changes clone the following repository [https://github.com/daxamin/expertiza] .&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110190</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110190"/>
		<updated>2017-10-27T22:22:30Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;br /&gt;
&lt;br /&gt;
** Transfer of files from one directory to another will only be visible if you clone and run the updated expertiza project on local machine or it will be available on server.&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110186</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110186"/>
		<updated>2017-10-27T22:20:19Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
&lt;br /&gt;
5) Save&lt;br /&gt;
&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
&lt;br /&gt;
6) Click Save&lt;br /&gt;
&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110185</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110185"/>
		<updated>2017-10-27T22:19:25Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    Added following logic in assignment.rb&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code: Added the following logic in assignments_controller.rb update method&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;br /&gt;
&lt;br /&gt;
==''' How to Test '''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #391 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to test Issue #391:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
3) New public assignment/ New private assignment&lt;br /&gt;
4) Fill in the details and remember the directory path&lt;br /&gt;
5) Save&lt;br /&gt;
6) Create New assignment&lt;br /&gt;
7) Fill in the details and keep the directory path same as the one before.&lt;br /&gt;
8) You will see an error displayed on top of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==''' Issue #404 '''==&lt;br /&gt;
&lt;br /&gt;
Steps to Test Issue #404:&lt;br /&gt;
&lt;br /&gt;
1) Login as Instructor&lt;br /&gt;
2) Click on Manage , select assignments.&lt;br /&gt;
3) Find out an assignment which isn't assigned to a course.&lt;br /&gt;
4) Select assign to course badge&lt;br /&gt;
5) Select course from available radio button&lt;br /&gt;
6) Click Save&lt;br /&gt;
7) Now you will the updated path on assignment display list and instead of assign to course remove from course badge will be visible.&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110126</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110126"/>
		<updated>2017-10-27T21:33:07Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
    1) assignment_path (path user is trying to assign to new assignment)&lt;br /&gt;
    2) for each assignment in assignment_database&lt;br /&gt;
    3)    if assignment.directory_path includes assignment_path&lt;br /&gt;
    4)       add to errors &amp;quot;Directory is already assigned to some assignment&amp;quot;&lt;br /&gt;
    In assignment/new.html.erb&lt;br /&gt;
    1) Display error if any&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment, the assignment directory path should change to &amp;quot;&amp;lt;course_path&amp;gt;/&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;CSC517/f17/assignment4/ruby&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Psuedo Code:&lt;br /&gt;
    1) assignment_path (old path where files are stored)&lt;br /&gt;
    2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
    3) create directory assignment_new_path&lt;br /&gt;
    4) for each assignment_file in assignment_path&lt;br /&gt;
    5)      FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
    6) assignment.save&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110109</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110109"/>
		<updated>2017-10-27T21:20:34Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;br /&gt;
-&amp;gt; The system once gets a create request compares the directory path to paths of all existing directories for similarity and sub-part check (sub part check is required because if not done a directory will have submission files of one assignment as well as a directory for some other assignment) and logs an error if similarity is found.&lt;br /&gt;
-&amp;gt; If there errors they will be displayed in /assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
Pseudo Code:&lt;br /&gt;
1) assignment_path (old path where files are stored)&lt;br /&gt;
2) assignment_new_path = course_path + assignment_path (As course assigned to an assignment it must be stored within the directory structure of that course)&lt;br /&gt;
3) create directory assignment_new_path&lt;br /&gt;
4)for each assignment_file in assignment_path&lt;br /&gt;
    FileUtils.mv(assignment_file, assignment_new_path)&lt;br /&gt;
5)assignment.save&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Issue #404 '''===&lt;br /&gt;
When an instructor creates a new assignment, (s)he can do it without specifying the course to which assignment belongs. In this case, the directory path for the course is assigned as &amp;quot;&amp;lt;instructor_username&amp;gt;/path/mentioned/while/creating/&amp;quot; Eg. &amp;quot;instructor6/assignment4/Java/&amp;quot; &lt;br /&gt;
&lt;br /&gt;
However when later s(he) assigns a course to the assignment the&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110103</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110103"/>
		<updated>2017-10-27T21:11:37Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
In Expertiza, students may submit links (which go into the Expertiza db) or files (which go into a directory in the Expertiza filespace).  A persistent problem in Expertiza has been that instructors have created multiple assignments that had the same submission directory.  In this case, the students’ submissions for one assignment went into the same directory as the submissions for another assignment, and reviewers who thought they were reviewing for one assignment were also presented with work submitted by a different student on another assignment.  The basic problem has been fixed, but there are some special cases that need to be addressed, and tests need to be written.&lt;br /&gt;
----&lt;br /&gt;
=='''Issues to be fixed'''==&lt;br /&gt;
&lt;br /&gt;
Issue #391: When an assignment is created, there needs to be a check that the submission directory is not the same as the submission directory for any other assignment.  In Expertiza, the pathname for an assignment always has the instructor’s user-id (e.g., /efg) in the path, so it’s only necessary to check all assignments created by the current instructor to make sure that the specified directory path is not in use by another assignment.  Make sure that the check is made correctly even if it is a TA who creates the assignment. There is a method for setting path of the submission in assignment.rb.&lt;br /&gt;
&lt;br /&gt;
Issue #404: When a previously created assignment is assigned to a course, any existing submissions need to be moved to a subdirectory of the course in the Expertiza filespace.  (In Expertiza, an assignment can be created without being assigned to any course, and can later be assigned to a course.)  Even the assigning the assignment to a course is implemented in assignment.rb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Modified Files'''==&lt;br /&gt;
&lt;br /&gt;
1) assignment_controller.rb&lt;br /&gt;
&lt;br /&gt;
2) assignment.rb&lt;br /&gt;
&lt;br /&gt;
3) assignment/new.html.erb&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==='''Issue #391 '''===&lt;br /&gt;
&lt;br /&gt;
When an instructor tries to create a new assignment with the storage directory similar to one of the other assignments or a sub-part of other pre-existing assignment the system would warn the instructor about this change and wouldn't save the assignment.&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110097</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110097"/>
		<updated>2017-10-27T21:04:33Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110096</id>
		<title>CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1782_OSS_Project_Red_Assignment_Directories&amp;diff=110096"/>
		<updated>2017-10-27T21:01:56Z</updated>

		<summary type="html">&lt;p&gt;Vnpatel: Created page with &amp;quot;Hi&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi&lt;/div&gt;</summary>
		<author><name>Vnpatel</name></author>
	</entry>
</feed>