Film Rating Dialog Responsibilities - maar35/film-festival-planner GitHub Wiki
Responsibilities of the Film Rating Dialog
The Film Rating Dialog presents the user the complete list of films screened in the festival. The lists contains among others duration, ratings and a short description of each film. The list can be filtered by subsection (if the current festival supports them).
The functionality of this dialog is being moved to a Django version. At the moment of this writing, the user can then enter ratings for his- or herself in the Django version.
Responsibilities
Responsibilities independent of version
The Film Rating Dialog responsibilities are:
- Display all films
- Allow rating management
- Save ratings
- Redirect to film web site
- Redirect to film info
- Allow sorting and filtering
- Support finding by typing
- Provide tooltips on controls that may need explanation
- Display the full film info as stored in the app
- Combine titles that refer to the same film
- Undo combining of titles
Responsibilities moved to Django
Of the general responsibilities above, the following are included in the Django version.
Responsibilities only in Django
New responsibilities, only included in the Django version:
- Keep all data needed to rate films in a database
- Require that users login in order to rate films
- A regular fan can only rate films for that fan
- An admin fan can rate for all fans
- Support loading films and ratings from the festival data directories
- User is able to rate films when no screenings are available
- Keep films and ratings for multiple festivals
Temporary responsibilities in the C# version
- Load ratings without restarting the application
Display all films
Films are displayed with title, duration, number of screenings, subsection, ratings and description.
Allow rating management
- Allows entering and changing ratings of all registered film fans
- Ratings are checked to be correct when ending editing
- In the Django version, ratings are picked in a dropdown widget and saved immediately
Save ratings
When a rating is changed, the title of the Done
button changes to Save
.
The save
button saves ratings and writes RatingsSheet.csv
.
Also, a user notification is generated.
Redirect to film website
Provide a link to the selected film's website
Redirect to film info
Display all Film Info that is stored by the loader. This done by activating the Film Info Dialog
Allow sorting and filtering
- All columns can be sorted except Description
- Films without screenings can be filtered out
- Films with the same subsection can be selected by clicking on the subsection label. When filtering is on, clicking the subsection label will make all films visible again.
Support finding by typing
Type match is supported by two methods:
- The entire film title is matched by typing a few keys
- Words in the film titles are matched by typing a fes keys
A checkbox allows switching between the two methods.
Provide tooltips on controls that may need explanation
For the time being, only the Visit Website button has it, plus the Subsection Labels
Combine titles that refer to the same film
- Different titles that refer to the same film can be combined into one film, e.g. "Riders of Justice" and "Opening Night: Riders of Justice"
- This guarantees that the combined films get the same ratings
- Combined films can be uncombined
Keep data in a database
All data that is handled with Django code should be in a database. In the process, also C# code should use that database.
An admin fan can rate for all fans
- Each user is associated with one film fan
- If that film fan is marked as admin, the user can switch to any other fan and rate films on behalf of that fan
- Rating films is still only possible for one fan, the current fan