Iteration 2 Plan - natekrth/ku-polls Wiki


The Goal of Iteration 2 are to enhance navigation and page layout, add poll's end date, and add better methods in views that can easily query each poll by method instead of testing attributes directly. Implement externalize configuration data for security and portability and Automate running of unit tests.


  1. Poll questions can add specify end date (no end date means poll can be vote anytime).
  2. Able to check each poll question is available to vote and check if poll is published.
  3. Redirect user to index page and show error massage if user go to the detail page when voting is not allowed.
  4. Redirect user from base URL of the website to the polls index page (Prevent Page not found).
  5. User can view poll result without voting.
  6. Enhance navigation between pages.
  7. Only Admin can externalize configuration data.


  1. Each Poll has an end date. No voting allowed after end date.
  2. Application have good navigation between pages.
  3. Application have good layout of poll detail and poll result page.


All tasks are recorded on Project Board for Iteration 2.

  1. Create a task board on Github iteration 2, and create tasks.
  2. Implement Question class.
    • add end_date attribute about ending date for voting.
    • add method is_published.
    • add method can_vote.
  3. Create unit tests for is_published and can_vote.
  4. Implement redirect user to polls index page and show error message when user try to navigates to poll detail page when voting is not allowed.
  5. Implement redirect user from base URL to the polls index page.
  6. Add results links for each question on polls index page.
  7. Improve navigation between pages.
    • Create a link that go back to List of polls on both polls detail page and voting result page.
    • Remove "Vote again".
  8. Improve layout of voting results page.
    • Make votes align in a column and remove the word "votes" after the count.
    • Remove bullets point.
  9. Do the Externalize configuration data.
  10. Run unit test from Iteration 1.
  • All tests must pass.
  • Fail : fix it and test again.

Evaluation Criteria

  1. Pass all tests.
  2. Perfect navigation between pages.
  3. User not allowed to reach voting page after the end date (Redirect and Error massage is shown).
  4. User can view result of each poll at anytime.
  5. Improvement of User Interface can be seen.
  6. Iteration2 branch is deployable.


In this iteration not taking too long. I think the hard part for this iteration is the navigation between pages. I take a lot of time finding and learning how to navigate and redirect user to different pages.