Skip to main content

Scarry on Line

Project description

.. -*- coding: utf-8 -*-

======================
Scarry On Lin{e|ux}³
======================

-------------------------------------------------------------
Powerful and complete solution to manage Carrom championships
-------------------------------------------------------------

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 http://sol.metapensiero.it/lit/.

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
http://sol.metapensiero.it/.

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

__ Goals_

.. _Carrom: http://en.wikipedia.org/wiki/Carrom
.. _Pyramid: http://http://www.pylonsproject.org/
.. _ExtJS: http://www.extjs.com/


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.

.. _free software: http://en.wikipedia.org/wiki/Free_software


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 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

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

b. 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

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

d. possibly show a clock, to alert the end of the game

e. insert the score of each table

f. compute the ranking

g. print the current ranking

h. possibly offer a way to retire some competitors, or to add a new competitor

i. compute the next turn

j. repeat steps c. thru i. usually up to seven turns

k. possibly offer a way to go back, delete last turn, correct a score and repeat

l. 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
======================

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

$ apt-get install python3.3

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

__ http://www.python.org/downloads/windows/

.. [#] As of this writing I'm using version 3.3.4, but 3.3.5 should come out very
soon.

Version 3.4 is currently in beta, and should not be used because some third parties
components needs tiny adjustments.

.. [#] In fact it may even be already installed!


Easiest way, SoLista
--------------------

The easiest way is using SoLista_, a buildout_ configuration that will perform most of the
needed steps with a few clicks: this is particularly indicated if you are *not* fluent with the
command line interface of your operating system.

1. Download `current version of SoLista`__

2. Extract the content of the ZIP archive on your hard disk: it contains a single directory
with a strange name like ``lele-solista-3ec12c59927f`` and I suggest to rename it to
something more reasonable, like ``Sol3`` for example.

3. Follow the instruction within the file `README.rst`__

.. _SoLista: https://bitbucket.org/lele/solista/
.. _buildout: http://www.buildout.org/en/latest/
__ https://bitbucket.org/lele/solista/get/master.zip
__ https://bitbucket.org/lele/solista/src/master/README.rst


The manual 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

__ https://pypi.python.org/pypi/SoL

2. Install ExtJS_ 4.2.1::

python3.3 -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. 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
===========

The complete sources are available on Bitbucket__ and can be downloaded with the following
command::

git clone https://bitbucket.org/lele/sol

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 test suite with::

python3.3 setup.py nosetests

__ https://bitbucket.org/lele/sol


I18N / L10N
-----------

Currently SoL is translated in english and italian. If you know other languages and want to
contribute, the easiest way to create a new translation is to create an account on the
Weblate__ site and follow its `translators guide`__.

__ https://hosted.weblate.org/projects/sol/
__ http://docs.weblate.org/en/latest/user/index.html


Changes
-------

3.0a1 (2014-03-03)
~~~~~~~~~~~~~~~~~~

* Let's try the release process!


Version 3
~~~~~~~~~

* Ported to Python 3.3 and to ExtJS 4.2

* Built on `metapensiero.extjs.desktop`__ and
`metapensiero.sqlalchemy.proxy`__

__ https://pypi.python.org/pypi/metapensiero.extjs.desktop
__ https://pypi.python.org/pypi/metapensiero.sqlalchemy.proxy

* Version control moved from darcs__ to git__ (darcs is beautiful, but git is more powerful and
many more people use it)

* It tooks almost one year and more than 760 changesets (still counting!)...


Highlights
++++++++++

* Glicko2__ ratings, with graphical charts

__ http://en.wikipedia.org/wiki/Glicko_rating_system

* Old `championships` are gone, old `seasons` has been renamed to `championships`

People got confused by the overlapping functionality, old championships were an attempt to
compute national-wide rankings: the new Glicko2-based ratings are much better at that

* Augmented players information to fit international tourneys requirements, clubs may be marked
as `federations`

* Easier interfaces to insert and modify

* Easier way to upload players portraits and clubs logos

* Hopefully easier installation

* Better infrastructure to accomodate database migrations

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-3.0a1.tar.gz (6.2 MB view hashes)

Uploaded Source

Built Distribution

SoL-3.0a1-py3.3.egg (3.4 MB view hashes)

Uploaded Source

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