It's important to focus on more things that Django is good at... that may not be immediately obvious as projects that make good websites. When working on any project of reasonable size, bug reports and feature requests are going to come in faster than you can work on them (or keep them in your head). Eventually, you'll start forgetting them unless you have a place to write them down... and why not make that a little more full-featured while you go?
Write a bug tracker application that:
- requires logging in, but people who aren't logged in cannot create accounts (don't want any random person to see bugs in your application!)
- use a custom user model to replace the built-in one (you may want to reference 👨🔬 Under the Microscope: Custom Users)
- has a homepage that shows all tickets, arranged in separate sections according to current ticket status (i.e. New, In Progress, Done, Invalid)
- allows filing/creating tickets
- has a ticket detail page
- allows assigning a ticket to the currently logged in user
- allows marking a ticket as invalid
- allows marking a ticket as complete
- allows editing tickets (we will limit this to Title and Description, do not include other any of the other fields)
- has a user detail page where you can see:
- the current tickets assigned to a user
- which tickets that user has filed
- which tickets that user completed
Your Ticket model should have the following fields:
- Title: str
- Time / Date filed: datetime
- Description: str
- User who filed ticket: FK (Foreign Key)
- Status of ticket: str
- Possible statuses
- New
- In Progress
- Done
- Invalid
- hint: https://docs.djangoproject.com/en/3.0/ref/models/fields/#choices
- Possible statuses
- User assigned to ticket: FK
- User who completed the ticket: FK
When a ticket is filed/created, it should have the following settings:
- Status: New
- User Assigned: None
- User who Completed: None
- User who filed: Person who's logged in
When a ticket is assigned, these change as follows:
- Status: In Progress
- User Assigned: person the ticket now belongs to
- User who Completed: None
When a ticket is Done, these change as follows:
- Status: Done
- User Assigned: None
- User who Completed: person who the ticket used to belong to
When a ticket is marked as Invalid, these change as follows:
- Status: Invalid
- User Assigned: None
- User who Completed: None