Skip to main content

Carrom tournaments management

Project description

Version:
5
Author:

Lele Gaifax <lele@metapensiero.it>

license:

GPLv3

Status:
CI build status Overall test coverage

This project contains some tools that make it easier the organization of a championship of Carrom tournaments using either a variant of the Swiss system, the Knockout system or even everyone against everyone events.

The main component is a Pyramid application serving two distinct user interfaces:

  1. A very light, read only view of the whole database, where you can actually browse thru the clubs, championships, tourneys, players and ratings. You can see it in action on the public SoL instance at https://sol5.metapensiero.it/lit/.

  2. A complete ExtJS based desktop-like application, that exposes all the functionalities described below in an easy to manage interface.

Goals

These are the key points:

  1. Multilingual application

    Scarry spoke only Italian, because the i18n mechanism in Delphi (and in general under Windows) sucks. Most of the code was written and commented in Italian too, and that made it very difficult to get foreign contributions.

  2. Multiuser

    There is a super user (named “admin” by default) that can do everything, in particular create other normal users, who can then log in and manage her own tournaments, but can’t change information owned by other users.

    SoL 4 also implements an optional self registration procedure.

  3. Real database

    Scarry used Paradox tables, but we are in the third millennium, now: SoL uses a real, even if simple and light, SQL database under its skin.

  4. Easy to use

    The application is usually driven by computer-illiterated guys, so little to no surprises.

  5. Easy to deploy

    Gods know how many hours went in building f*cking installers with BDE goodies!

  6. Bring back the fun

    Programming in Python is just that, since the beginning!

High level description

The application implements the following features:

  • basic tables editing, like adding a new player, opening a new championship, manually tweaking the scores, and so on;

  • handle a single tourney

    1. compose a list of competitors: usually this is just a single player, but there are two people in doubles, or more (teams)

    2. set up the first round, made up of matches, each pairing two distinct competitors: if the tournament is associated with a rating this considers the Glicko2 rate of each player, otherwise uses a random pairing; either way, the tournament secretary is able to manually change the combinations

    3. print the game sheets, where the player will write the scores

    4. possibly show a countdown, to alert the end of the game

    5. insert the score of each match

    6. compute the new ranking

    7. print the current ranking

    8. possibly offer a way to withdraw some competitors, or to add a new competitor

    9. compute the next round

    10. repeat steps c. thru i. usually up to seven rounds

    11. possibly offer a way to go back, delete last round, correct a score and repeat

    12. if required, play up to three final rounds between the first two competitors

    13. recompute the ranking, assigning prizes

    14. update the rating the tournament is associated to

  • handle a championship of tourneys

    • each tourney is associated to one championship

    • print the championship ranking

  • data exchange, to import/export whole tourneys in a portable way

Installation and Setup

The very first requirement to install an instance of SoL on your own machine is getting Python 3.10 or better[1]. This step obviously depends on the operating system you are using: on most GNU/Linux distributions it is already available[2], for example on Debian and derivatives like Ubuntu the following command will do the task:

$ apt-get install python3

If instead you are using M$-Windows, you should select the right installer from the downloads page on https://www.python.org/.

Another recommended, although optional, add-on is the DejaVu fonts set, to support a rather wide range of glyphs when producing the PDFs printouts. As usual, on GNU/Linux it’s a matter of executing the following command

$ apt-get install fonts-dejavu

or equivalent for your distribution, while on M$-Windows you need to download them and extract the archive in the right location which usually is C:\Windows\Fonts.

The good old way

  1. Install SoL using pip:

    pip install SoL

    that will download the latest version of SoL from PyPI and all its dependencies as well

  2. Install ExtJS 4.2.1:

    python3 -m metapensiero.extjs.desktop
  3. Create a standard config file:

    soladmin create-config config.ini

    and edit it as appropriate; you can also directly specify the name and the password of the super user (by default the name is admin and the password will be asked interactively):

    soladmin create-config --admin differentone --password str4nge
  4. Setup the database:

    soladmin initialize-db config.ini
  5. Load official data:

    soladmin restore config.ini
  6. Run the application server:

    pserve config.ini
  7. Enjoy!

    firefox http://localhost:6996/

    or, for poor Window$ users or just because using Python makes you happier:

    python -m webbrowser http://localhost:6996/

Development

Since version 4 the development has been moved to GitLab.

The complete sources can be downloaded with the following command:

git clone https://gitlab.com/metapensiero/SoL.git

I recommend using a virtual environment to keep you isolated from the system packages:

python3 -m venv env
source env/bin/activate

After that, you can setup a development environment by executing the command:

pip install -r requirements/development.txt

You must then install the required ExtJS 4 sources executing:

python -m metapensiero.extjs.desktop --src

If you are a developer, you are encouraged to create your own fork of the software and possibly open a pull request: I will happily merge your changes!

You can run the tests suite with either

make test

or with a more specific

pytest tests/models

Nowadays I tend to prefer NixOS and it’s package manager, and unsurprisingly SoL is quite well integrated in that world. An alternative way to do the above is

nix develop
make test

I18N / L10N

Currently SoL is translated in English[3], French and Italian. If you know other languages and want to contribute, do not hesitate to contact me and I’ll be more than happy to get you going.

Feedback and support

If you run in troubles, or want to suggest something, or simply a desire of saying “Thank you” raises up, feel free to contact me via email as lele at metapensiero dot it.

Consider also joining the dedicated mailing list where you can get in contact with other users of the application. There is also an issues tracker where you can open a new tickets about bugs or enhancements.


Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

sol-5.0.dev1.tar.gz (4.3 MB view hashes)

Uploaded Source

Built Distribution

sol-5.0.dev1-py3-none-any.whl (3.8 MB view hashes)

Uploaded Python 3

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