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:

Responsibilities included in 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:

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