CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an "assignment" (e.g., for conference reviewing)

From Expertiza_Wiki
Revision as of 04:40, 13 December 2017 by Vnpatel (talk | contribs)
Jump to navigation Jump to search

Introduction

Problem Definition

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.

Scope

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.

Requirements

1. Any non-Expertiza user can sign up, for submitting his/her work

2. Document upload privileges for that user.

3. Adding co-authors to a paper being submitted for reviewing.

4. View for scores/reviews submitted by reviewers.

Use Cases


Name: Sign up

Actor: Writer

Other Participants: None

Precondition: He/she should not have existing account on Expertiza

Primary Sequence:

1. Go to Conference Reviewing section

2. Provide information in form for signup

Captcha

3. Activate account by opening link, provided via e-mail


Name: Add contributors

Actor: Writer

Other Participants: None

Precondition: Writer must have uploaded a paper for reviewing

Primary Sequence:

1. Sign in

2. Select the uploaded document

3. Select option to add contributors

4. Add information of co-authors. Email, Name, etc


Name: Create a submission

Actor: Writer

Other Participants: None

Precondition: The user is logged in and wants to submit a paper.

Primary Sequence:

1. Selects the “Submit your work” button

2. Enter the details of the paper, like track of paper (which can be selected from a dropdown).

3. The writer is redirected to an upload page where the user can upload the submission.


Name: Upload Paper

Actor: Writer

Other Participants: None

Precondition: The writer has already created a submission window and is at the upload page.

Primary Sequence:

1. The writer clicks the “Upload paper”button.

2. The writer selects the paper to be submitted from local device.

3. The writer clicks the “Submit” button.

Database Design

Table to handle many to many relationship between contributors and paper writer.

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.

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.

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.

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.

___ 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 "assignment" could have exactly the same set of members, if they have submitted two papers for the conference. 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.

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.

Class Diagram

Files to be created

1. new_writer_signup.html.erb : /app/views/users/

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.

2. writer_homepage.html.erb :

This is the homepage of the writer. He can view his submissions and access the functionalities available to him.

3. add_coauthors.html.erb :

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.

4. writer_paper_mapping.rb :

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.

Files to be edited

1. users_controller.rb

Methods added:
1. create_writer : for implementing the sign-up for a writer
2. new_writer : creates an instance of user class 


2. assignments_controller.rb

Methods added:
1. addContributor : for adding co-authors to already submitted papers
2. updateAttributes : for updating the attributes of the submitted paper
3. addReviewDetails : to control the number of reviews, etc. for a given paper

Implementation

Here is a sample code snippet:

View:

    <%= form_for @user , :url => url_for(:controller => 'users', :action => 'create_writer') do |f|%>
        <%= f.label :name %>
        <%= f.text_field :name %>
        <%= f.label :email %>
        <%= f.text_field :email %>
        <%= f.label :password %>
        <%= f.text_field :crypted_password %>
        <%=submit_tag "Create Writer"%>
    <%end%>

Controller:

    def new_writer
      @user = User.new
      render 'new_writer_signup.html.erb'
    end


    def create_writer
      @user = User.new(user_params)
      @user.role_id = 8;
      @user.is_new_user = 1;
      if @user.save
        flash[:success] = "Your account has been successfully created"
        render 'new_writer_signup.html.erb'
      else
        render 'new_writer_signup.html.erb'
      end
    end

Designing Practices

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:

1. Model-View-Controller architecture

2. Using standard naming convention for variables and methods, like name_variable, singular words for class name, etc.

3. Try not to violate DRY principle

Test Plan

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.

Test plan for Publishing a paper

1) Click on the link from conference website

2) Enter name, password, and email ID

3) Publish paper

4) Fill in the details for the paper to be published

5) upload paper

6) add collaboraters (enter name and email of contributors)


Test plan for editing paper attributes

1) Login

2) Select paper from displayed paper list

3) update attributes and save.

4) Logout


Screenshot

For further queries, contact:

adupadhy@ncsu.edu

dkamin@ncsu.edu

vnpatel@ncsu.edu

uparikh@ncsu.edu