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).
Migration
The functionality of this dialog is being moved to a Django version. At the moment of this writing, the user can only enter ratings 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 included in Django
Of the general responsibilities above, the following are included in the Django version.
- Display all films
- Allow rating management
- Save ratings
- Redirect to film web site
- Filtering is complete, these filters are implemented.
- Support finding titles
- Combine titles that refer to the same film
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
- C# allowed entering and changing ratings of all registered film fans
- Ratings were checked to be correct when ending editing
- In the Django version, ratings are picked in a dropdown widget and saved immediately
- Ratings can de dumped, as to be read by the C# app
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
C# situation
- 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.
Django situation
These filters are implemented:
- Shorts can be hidden
- For each fan, films can be hidden that this fan has already rated
- All films of a subsection can be selected by clicking the Subsection link in the Subsection dropdown.
- All films of a section can be selected by clicking the Section link in the Subsection dropdown.
Support finding by typing
C# situation
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.
Django situation
Currently realized:
- A text form allows to enter a search string
- All titles containing the search string are displayed as links in the log section
- Found titles are sorted by position of the search text (titles starting with the search text are displayed first), then by sort title In order to realize type matching, someone in the team should learn (e.g.`) JavaScript.
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
The C# and Django situations are equivalent here.
- 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
- When uncombined, the original ratings are restored
Extra in the Django app
- Only an Admin user can manage alternative titles
- Alternative Titles Management view to link and unlink films to the main film
- A list of alternative titles (including the main film) if applicable in the Film Details view, with links to the titles
- Link to the Alternative Titles Management view in the Film Details view
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