===================== Scarry On Lin{e|ux} ===================== This project contains some tools that make it easier the organization of a championship of Carrom_. The main component is a Pylons_ 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.arstecnica.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.arstecnica.it/. __ Goals_ .. _Carrom: http://en.wikipedia.org/wiki/Carrom .. _Pylons: http://http://pylonshq.com/ .. _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. __ 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 ====================== 1. Install ``SoL`` using easy_install:: easy_install http://darcs.arstecnica.it/our/sol/dist/SoL-X.Y-py2.6.egg where ``X.Y`` is the version number, "2.0.1" as I'm writing this 2. Install ExtJS_ 2.3.0:: python -m sol.websetup 3. Create a standard config file:: paster make-config SoL config.ini and edit it as appropriate 4. Setup the application:: paster setup-app config.ini 5. Optionally load historic data from another instance:: paster --plugin=SoL restore config.ini http://localhost:6996/ You may omit the final address: the following will fetch a complete copy of the current database from ``http://sol.arstecnica.it/``:: paster --plugin=SoL restore config.ini 6. Run the application server:: paster serve 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/ Documentation ============= 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__). __ http://darcs.arstecnica.it/our/sol/sol/public/manual/en/index.html __ http://darcs.arstecnica.it/our/sol/sol/public/manual/it/index.html Development =========== The complete sources are available in a darcs__ repository:: darcs get http://darcs.arstecnica.it/our/sol You can run the test suite with:: python setup.py nosetests __ http://darcs.net/ I18N / L10N ----------- Once you install Babel__ you can update the message catalog (``sol/i18n/sol.pot``) with:: python setup.py extract_messages and update the localized messages with:: python setup.py update_catalog You can start a new language with:: python setup.py 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 setup.py compile_catalog See also http://progetti.arstecnica.it/sol/wiki/LocalizationHowto. __ http://babel.edgewall.org/ Makefile -------- Most of the operations usually needed by the development workflow are available also thru ``make``:: $ make help Please use `make ' where is one of catalog[*] to compile the i18n catalog clean[*] remove regenerable contents and backup files dist to prepare for distribution packaging (runs [*] targets) egg to create an EGG packaging (runs [*] targets) install to install the package html[*] to build the HTML documentation messages to extract and update the i18n catalog minimize[*] to minimize JS and CSS test to run the test suites publish push changes, egg and manual to the master site