Skip to main content

Easy scheduling for regular film nights

Project description

Vote4Film

Simplify film selection for regular film nights. Participants can:

  • Add films
  • Vote for films
  • Declare absences
  • See the schedule which takes into account votes and absences

Admins can set the schedule of film nights.

This is a simple WSGI Web Application. The back-end is Django, and the front-end is dynamic HTML served by Django (no JavaScript is used).

Development

  1. poetry install to set-up the virtualenv (one-off)
  2. poetry run ./src/manage.py migrate to set-up the local DB (one-off)
  3. poetry run ./src/manage.py runserver_plus
  4. bin/fix, bin/check and bin/test before committing

Contributing

Pull requests are welcome :)

TODO: Fix dependency on bbfcapi to be bbfcapi[apis] and remove direct dependency on pyhumps.

Publishing

This application is published on PyPi.

  1. Ensure you have configured the PyPi repository with Poetry (one-off)
  2. Add the release notes in this README.md
  3. poetry version minor to bump the major/minor/patch version
  4. Also bump version in vote4film/__init__.py
  5. poetry publish --build to release

To publish to the test repository:

  1. Ensure you have configured the Test PyPi repository with Poetry (one-off)
  2. poetry publish --build -r testpypi to upload to the test repository

Deployment

Unfortunately, I will not provide detailed guidance for production deployment.

Some general tips:

  • Create a virtualenv, e.g. in ~/virtualenv
  • Install with pip install vote4film[postgres]
  • Write the configuration at ~/.config/vote4film/local.env
  • Use Postgres as the database
  • Use Nginx/uWSGI to to serve the site (with HTTPS)
  • Run Django management commands using ./virtualenv/bin/manage

Changelog

Unpublished

...

v1.7.5 - 2022-03-29

  • [SECURITY] Fix security vulnerability in underlying dependencies
  • Update Django dependency to the next long-term support release

v1.7.4 - 2022-03-25

  • Fix film cards where the runtime is unknown
  • Extend the lifetime of logged-in sessions to one year

v1.7.3 - 2021-06-05

  • [SECURITY] Fix security vulnerability in underlying dependencies
  • Fix adding films where rating is missing
  • Lazily load film card images

v1.7.2 - 2021-03-04

  • Fix getting age rating from BBFC
  • Upgrade dependencies

v1.7.1 - 2021-02-20

  • Add colour to system status bar at the top on iOS Safari
  • Fix vote symbols across different web browsers
  • Reduce page loading times

v1.7.0 - 2021-01-26

  • Add share button to tell people about the next event
  • Add login page
  • Fix webmanifest link on mobile web app
  • Increase size of film posters on larger displays
  • Prettify next event date heading

v1.6.0 - 2021-01-24

  • Treat users with unknown presence as being absent for the event
  • Add link to edit films on film cards
  • Add button to refresh film information
  • Fix colours on film cards

v1.5.8 - 2021-01-17

  • [SECURITY] Fix security vulnerability in underlying dependencies
  • Fix linking to films on BBFC's website
  • Fix retrieving age rating from BBFC

v1.5.7 - 2020-11-08

  • [SECURITY] Fix security vulnerability in underlying dependencies
  • Fix vendored YouTube icon being hidden by adblockers
  • Fix missing BBFC age rating symbols
  • Fix failing to log correct error when adding films

v1.5.6 - 2020-09-20

  • Fix parsing omdb film rating when it is missing
  • Add search to the admin page for films
  • Stop content reflow on film cards
  • Stop BBFC icon downloads redirecting
  • Replace external YouTube icon with a local SVG
  • Log more information to Sentry (if enabled)

v1.5.5 - 2020-06-20

  • [SECURITY] Fix security vulnerability in underlying dependencies
  • Add website favicon
  • Fix parsing "PG" age rating

v1.5.4 - 2020-05-29

  • Fix missing icons on upcoming and add film pages (use fontawesome)

v1.5.3 - 2020-05-02

  • Add "update film" link when editing a film
  • Add redirects after editing a film
  • Miscellaneous UI tweaks
  • Add support for "G" age rating on IMDB
  • Fix initial choice on the calender not matching the user's previous choice
  • Add option for Sentry's trace sample rate

v1.5.2 - 2020-04-04

  • Fix link to calender when there is no upcoming event

v1.5.1 - 2020-04-04

  • Fix call-to-action flow for the upcoming page

v1.5.0 - 2020-04-04

  • Overhaul user interface
  • Enable additional Sentry features including tracing

v1.4.0 - 2020-03-22

  • Allow users to change their vote
  • Redirect the user to the schedule after registering for the event
  • Hide upcoming film until the user has voted for all films
  • Add actually usable admin interface
  • Add optional Sentry integration

v1.3.0 - 2020-03-22

  • Fix error adding film when age rating on IMDB/OMDB is "N/A"
  • Add BBFC age ratings

v1.2.3 - 2020-02-01

  • Redirect to upcoming schedule after voting for every film
  • Fix HTTP 500 error when on schedule page without registering for the event

v1.2.2 - 2019-12-05

  • Fix HTTP 500 error when adding a film that was already added (again)
  • Highlight calender and vote links when there is a user action to take
  • Pick the oldest added film for upcoming when scores are a draw

v1.2.1 - 2019-11-21

  • Remove "film is not available" from the voting page
  • Remove "vote for this film" from the voting page
  • Fix the upcoming page asking absent users to register on calender

v1.2.0 - 2019-11-21

  • Fix ranking films with zero votes as number one
  • Hide upcoming film until the user has registered for the next event
  • Clarify what will happen when adding a film by giving the user more choices
  • Fix HTTP 500 error when adding a film that was already added
  • Hide a film's votes from the user until they have voted

v1.1.0 - 2019/11/16

  • Show the register of present/absent users for upcoming films
  • Fix not highlighting films that are not available to be watched
  • Fix parsing of "Not Rated" age ratings resulting in an error

v1.0.9 - 2019/11/13

  • Actually let's not be too dumb about packaging

v1.0.8 - 2019/11/13

  • Rename management command from vote4film to manage
  • Stop trying to be smart about packaging

v1.0.7 - 2019/11/13

  • The same fixes as v1.0.6 but for real this time

v1.0.6 - 2019/11/13

  • Fix url patterns for internal apps in installed environment
  • Fix missing template files in PyPi package (so typical!)

v1.0.5 - 2019/11/12

  • Add optional postgres support, e.g. pip install vote4film[postgres]

v1.0.4 - 2019/11/12

  • Fix bug loading config from XDG config home (sigh)
  • Fix django-extensions being missed from dependencies

v1.0.3 - 2019/11/12

  • Fix config sub-directory used in XDG config home

v1.0.2 - 2019/11/12

  • Load configuration from XDG config home

v1.0.1 - 2019/11/10

  • First release of Vote4Film

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vote4film-1.7.5.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

vote4film-1.7.5-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file vote4film-1.7.5.tar.gz.

File metadata

  • Download URL: vote4film-1.7.5.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.3 Linux/5.16.16-zen1-1-zen

File hashes

Hashes for vote4film-1.7.5.tar.gz
Algorithm Hash digest
SHA256 333df4e57e5c04d914e13d96116c75cdf22bc7e7c7d2626719627247a138362a
MD5 9b9702687f412023568628c3c08191cb
BLAKE2b-256 bbe0dce473e45e33dd834d49af538b35778054f4216a14151570f0dcba0cc31c

See more details on using hashes here.

File details

Details for the file vote4film-1.7.5-py3-none-any.whl.

File metadata

  • Download URL: vote4film-1.7.5-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.3 Linux/5.16.16-zen1-1-zen

File hashes

Hashes for vote4film-1.7.5-py3-none-any.whl
Algorithm Hash digest
SHA256 58fb4fe4c049f37fdfa381bf9d12e086320041a9791b09682b3487ffe0e440ad
MD5 3391ade5037af831c3f4d29122a6bbee
BLAKE2b-256 a23ddf156eadc0553a81622571d4970491be81d854ad4f8bb2a60bd42e4d31e5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page