|
|
Line 1: |
Line 1: |
| =='''Introduction'''==
| | #REDIRECT [[CSC/ECE 517 Spring 2019 - Project E1907 Refactor response controller]] |
| 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.
| |
| | |
| =='''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]
| |