skip to navigation
skip to content

SoL 3.0

Scarry on Line

Latest Version: 3.39

This project contains some tools that make it easier the organization of a championship of Carrom.

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

  1. A very light, HTML only, read only view of the whole database, where you can actually browse thru the tourneys, seasons and players. You can see it in action on the public SoL instance at
  2. A complete ExtJS based desktop-like application, that expose all the functionalities described below in an easy to manage interface, that you can try out visiting


SoL 3 requires Python 3.3 or higher, it does not work with Python 2.

Brief history

Scarry was a Delphi application I wrote years ago, with the equivalent goal. It started as a “quick and dirty” solution to the problem, and Delphi was quite good at that. It has served us with good enough reliability for years, but since programming in that environment really boring nowadays, there’s no way I could be convinced to enhance it further.

SoL is a complete reimplementation, restarting from scratch: it uses exclusively free software components, so that I won’t be embaraced to public the whole source code.


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 makes it very difficult to get foreign contributions

  2. Real database

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

  3. Easy to use

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

  4. Easy to deploy

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

  5. 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 season, 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 turn, made up of matches, each coupling two distinct competitors: this is usually done randomly, but the arbiter must be able to manually change the combinations
    3. print the game sheets, where the player will write the scores
    4. possibly show a clock, to alert the end of the game
    5. insert the score of each table
    6. compute the ranking
    7. print the current ranking
    8. possibly offer a way to retire some competitors, or to add a new competitor
    9. compute the next turn
    10. repeat steps c. thru i. usually up to seven turns
    11. possibly offer a way to go back, delete last turn, correct a score and repeat
    12. recompute the ranking, assigning prizes
  • handle a season of tourneys
    • each tourney is associated to one season
    • print the season championship
  • data exchange, to import/export whole tourneys in a portable way

Installation and Setup

  1. Install SoL using easy_install:


    where X.Y is the version number, “2.0.1” as I’m writing this

  2. Install ExtJS 4.2.0:

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

    soladmin create-config config.ini

    and edit it as appropriate

  4. Setup the database:

    soladmin initialize-db config.ini
  5. Optionally load historic data from another instance:

    soladmin restore config.ini http://localhost:6996/

    You may omit the final address: the following will fetch a complete copy of the current database from

    soladmin restore config.ini

    If you have a backup on the local file system, you may load it specifying its file path:

    soladmin restore config.ini local/file/path/of/the/backup
  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/


More detailed information about the installation and effective usage of SoL may be found in the distribution (see the Manual entry in the main menu, that basically points to a local copy of manual, available in english or italian).


The complete sources are available in a darcs repository:

darcs get

You can run the test suite with:

python nosetests

I18N / L10N

Once you install Babel you can update the message catalog (src/sol/locale/sol.pot) with:

python extract_messages

and update the localized messages with:

python update_catalog

You can start a new language with:

python init_catalog -l xx

where xx is a two-character code of the language.

Whenever the localized messages get updated, you need to compile them with:

python compile_catalog

See also



File Type Py Version Uploaded on Size
SoL-3.0-py3.3.egg (md5) Python Egg 3.3 2014-08-31 3MB
SoL-3.0.tar.gz (md5) Source 2014-08-31 4MB