CSC/ECE 517 Fall 2014/oss E1502 wwj: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 27: Line 27:
! style="width:43%;"|Reason For Change
! style="width:43%;"|Reason For Change
|- style="vertical-align:top;"
|- style="vertical-align:top;"
| Copy
| copy
| Extract the content of this method as copy_questionnaires method and put it in questionnaire.rb  
| Extracted the content of this method as copy_questionnaires method and put it in questionnaire.rb  
| The content of this method is about operations on the database (coping a questionnaire), it is better to put it in the model.
| The content of this method is about operations on the database (coping a questionnaire), it is better to put it in the model
|-
|-
| edit
| valid_quiz
| Deleted the old edit method
| Moved this method to quiz_questionnaire.rb
| The old edit method was not getting called due to ruby rules
| This method is about validation of the quiz, it shouldn't appear in the controller
|-
|-
| new_feedback
| export
| Deleted the old new_feedback method
| Moved this method to questionnaire.rb
| The old new_feedback method was not getting called due to ruby rules
| This method exports the questionnaires as csv file, it should't appear in the controller
|-
|-
| view
| import
| Deleted the old view method
| Moved this method to questionnaire.rb
| The old view method was not getting called due to ruby rules
| This method imports the questionnaires from csv file, it should't appear in the controller
|-
|-
| redirect_when_disallowed
| clone_questionnaire_details
| rowspan="2" | Moved all of the code from redirect_when_disallowed to action_allowed and changed all of the references
| Deleted this method due to the duplication
| rowspan="2" | Authorization to perform actions wasn't being performed correctly, it is supposed to be done through action_allowed?
| Substituted by copy_questionnaires method in questionnaire.rb
|-
|-
| action_allowed?
|}
|}

Revision as of 02:14, 21 March 2015

E1502: Questionnaire Controller Refactoring

Introduction to Expertiza

Project Description

What it does:

Used on the admin side of Expertiza for creating/ editing questionnaires (rubrics, surveys and quizzes). It helps in add/removing questions, options, etc for a questionnaire.

  • Very big controller that handles a lot more than the name suggests. Functionalities need to be moved to appropriate controllers.
  • Quiz methods are should be treated the same as any other type of questionnaire; differences between quiz questionnaires and other questionnaires should be implemented in the model class, quiz_questionnaire
  • Turn the questionnaire into a “form object.” The ..._questions methods: save_new_questions, delete_questions, save_questions should be in a separate class.

    Other classes involved:

  • questionnaire.rb
  • quiz_questionnaire.rb
  • questions_controller.rb

    What needs to be done:

  • Move quiz related functions to quiz_questionnaire.rb.
  • copy, update_quiz, valid_quiz methods, clone_questionnaire_details is too long.
  • Debug output (print statements) should be removed.
  • Understand the functions in the controller and comment them. Ensure that the code is understandable to the next programmer who works on it.

    What We Have Done

    Method Name Changes Made Reason For Change
    copy Extracted the content of this method as copy_questionnaires method and put it in questionnaire.rb The content of this method is about operations on the database (coping a questionnaire), it is better to put it in the model
    valid_quiz Moved this method to quiz_questionnaire.rb This method is about validation of the quiz, it shouldn't appear in the controller
    export Moved this method to questionnaire.rb This method exports the questionnaires as csv file, it should't appear in the controller
    import Moved this method to questionnaire.rb This method imports the questionnaires from csv file, it should't appear in the controller
    clone_questionnaire_details Deleted this method due to the duplication Substituted by copy_questionnaires method in questionnaire.rb