Skip to content

Iteration 1 Plan

Jon Fatalai edited this page Aug 27, 2023 · 16 revisions

Iteration 1 Plan

Goal

A working web application that displays poll questions, allows a visitor to select a poll and submit a response (a choice). The application correctly counts number of "votes" for each choice to every poll question and displays a summary of them for a selected poll question.

Questions and choices can be added or changed using the admin interface.

Milestone

The application displays a list of poll questions where user can click on question text to see a list of available choices for that poll. User can then submit a choice and it is correctly added to the total "votes" for that choice in the poll. Application displays total "votes" for all choices for a selected poll.

Features and Major Work

  1. Display a page showing a list of current poll questions.
  2. Each poll question has a publication date (starting date) and is not shown before the starting date.
  3. Each poll question is a link to a page displaying the question and a list of choices. A visitor can select a choice and press a button to submit a vote. His vote is recorded when he does this.
  4. After voting, a visitor can see the total votes for each choice on a poll question.
  5. Poll questions and choices are saved to a database.
  6. Poll questions are created using the admin interface (no custom interface yet).

Tasks

You should record tasks on your task board (in Project) instead of in the iteration plan to avoid duplication. Most or all tasks should be converted to Issues in the ku-polls repo. Add any additional tasks you think of.

  1. Create a task board for this iteration and create detailed tasks for work to be done.
  2. Create a Django application and an "app" named polls (Tutorial part 1).
  3. Create model classes for Question and Choice. Create and migrate the database (Tutorial part 2).
  4. Create an admin user (also Tutorial Part 2).
  5. Implement a view for home page (index) showing a list of polls. Start the view for question detail page (Tutorial part 3).
  6. Implement a web form to display poll choices and submit a vote (choice) on a poll, and code to handle the form submission and recording the vote (Tutorial part 4)
  7. Write Unit Tests (Tutorial part 5)
    • test that question is not displayed before starting date (pub_date)
    • test that question is displayed after the pub_date
    • test that index page displays correctly even if no poll questions available
    • test that "votes" are counted correctly - this is not in the tutorial
  8. Add CSS styling (Tutorial part 6)
  9. Add at least 2 interesting questions to the application. Delete the "What's up" question.

Application Design

In a web application, you need to design the pages and navigation between them. In the tutorial you will create:

  • home page (index view) displays a list of poll questions with a link to detail view for each poll question
  • poll detail page shows a poll question and list of choices using an HTML form (detail view)
  • results page to display vote totals for a particular question and navigation links to other pages (results view)

Evaluation Criteria

  1. Application passes all unit tests.
  2. Application runs and displays list of current poll questions.
  3. User can select a poll question, see a list of choices, select a choice, and submit his choice. His selection is added to the "vote" count for his selected choice.
  4. After user submits his choice, application shows vote totals for each answer to a question.
  5. All navigation links work correctly.
  6. Application has some CSS styling and text is easy to read.
  7. Application has at least 2 interesting questions. No trivial questions like "What's up?", "How do you feel?".
  8. All code committed to Github on iteration1 branch and merged into master or main.
Clone this wiki locally