CSC/ECE 517 Spring 2019 - Project E1907 Refactor response controller: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
(Replaced content with "Sorry, page moved to: http://wiki.expertiza.ncsu.edu/index.php/Spring2019_E1907_refactor_response_controller")
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
=='''Introduction'''==
Sorry, page moved to:
Expertiza is an open source webapp built on Ruby on Rails stack. It provides a platform to students with various features like peer-reviewing projects, submitting work, form teams, viewing grades etc. The project is being built and maintained by students and faculty at NCSU.
http://wiki.expertiza.ncsu.edu/index.php/Spring2019_E1907_refactor_response_controller
 
=='''About response_controller.rb'''==
The file response_controller.rb handles the operations on responses based on user permissions and redirects the user to the appropriate place after the action is complete. The responses here constitute of peer reviews/questionnaires/survey. The controller takes care of tasks such as creating, saving, editing, updating and deleting these responses.
 
==='''Pull request'''===
 
The pull request for this task can be viewed at [https://github.com/expertiza/expertiza/pull/1383]
 
==='''Github forked repo'''===
https://github.com/Anusha-Godavarthi/expertiza
 
==='''Team branches'''===
https://github.com/Anusha-Godavarthi/expertiza/branches
 
=='''Tasks accomplished'''==
 
1. Renamed edit_allowed function to view_allowed in the response_controller.rb file
 
 
2. Moved the pending_surveys function to survey_deployment_controller.rb
 
Made changes in the following files and folders:
* app/controllers/response_controller.rb
* app/controllers/survey_deployment_controller.rb
* config/routes.rb
* spec/controllers/respose_controller_spec.rb
* Moved pending_surveys.html.erb from views/response to views/survey_deployment
 
 
3. Removed assign_instance_vars section as it was not needed and combined in Edit and New sections
 
Original assign_instance_vars method :-
<pre>
 
def assign_instance_vars
    case params[:action]
    when 'edit'
      @header = 'Edit'
      @next_action = 'update'
      @response = Response.find(params[:id])
      @map = @response.map
      @contributor = @map.contributor
    when 'new'
      @header = 'New'
      @next_action = 'create'
      @feedback = params[:feedback]
      @map = ResponseMap.find(params[:id])
      @modified_object = @map.id
    end
    @return = params[:return]
  end
 
</pre>
 
 
Moved the assign_instance_vars for the Edit action to the edit method.
<pre>
  def edit
    # instance variables for Edit action
    @header = 'Edit'
    @next_action = 'update'
    @response = Response.find(params[:id])
    @map = @response.map
    @contributor = @map.contributor
    @prev = Response.where(map_id: @map.id)
    @review_scores = @prev.to_a
    if @prev.present?
      @sorted = @review_scores.sort {|m1, m2| m1.version_num.to_i && m2.version_num.to_i ? m2.version_num.to_i <=> m1.version_num.to_i : (m1.version_num ? -1 : 1) }
      @largest_version_num = @sorted[0]
    end
    @modified_object = @response.response_id
    # set more handy variables for the view
    set_content
    @review_scores = []
    @questions.each do |question|
      @review_scores << Answer.where(response_id: @response.response_id, question_id: question.id).first
    end
    @questionnaire = set_questionnaire
    render action: 'response'
  end
 
</pre>
 
Moved assign_instance_vars for the New action inside the new method : -
 
<pre>
 
def new
    # instance variable for New action
    @header = 'New'
    @next_action = 'create'
    @feedback = params[:feedback]
    @map = ResponseMap.find(params[:id])
    @modified_object = @map.id
    set_content(true)
    @stage = @assignment.get_current_stage(SignedUpTeam.topic_id(@participant.parent_id, @participant.user_id)) if @assignment
      team = AssignmentTeam.find(@map.reviewee_id)
    @response = Response.where(map_id: @map.id, round: @current_round.to_i).order(updated_at: :desc).first
    if @response.nil? || team.most_recent_submission.updated_at > @response.updated_at
      @response = Response.create(map_id: @map.id, additional_comment: '', round: @current_round, is_submitted: 0)
    end
    questions = sort_questions(@questionnaire.questions)
    init_answers(questions)
    render action: 'response'
  end
 
</pre>
 
4. Removed was_submitted.  Changed to previously_submitted in the in create method.
 
 
5. Added comments in private methods
 
 
6. Introduced temporary explaining variables in the redirect method
 
=='''Code Climate and Travis CI '''==
There are only cyclomatic , cognitive errors with code climate whereas there are no integration errors with Travis CI
 
=='''References'''==
1. Expertiza Main Repo [https://github.com/expertiza/expertiza]
 
2. Expertiza Documentation [http://wiki.expertiza.ncsu.edu/index.php/Main_Page]
 
3. Pull Request [https://github.com/expertiza/expertiza/pull/1383]
 
4. Github branches [https://github.com/Anusha-Godavarthi/expertiza/branches]

Latest revision as of 03:51, 2 April 2019