Package: django-ticketing
## AboutAn implementation of a Django model that returns tickets, as describedin the [Flickr blog post][flickr]. Currently, requires MySQL and Django 1.6 orhigher.## InstallationI uploaded it to [PyPi][pypi], so you can grab it there if you'd like with```pip install django-ticketing```or install it with pip using the git address:```pip install git+git@github.com:streeter/django-ticketing.git```Then add `ticketing` to your `INSTALLED\_APPS`.## UsageTo use this, you can either use the model interface, or just the shortcutfunction defined in `ticketing.models`. That usage looks like this:```python# Import the functionfrom ticketing.models import get_ticket# Go get yourself a ticketticket = get_ticket()# Boom. That just happened```This assumes you've had the single table that needs to be created in the DB,in other words, you have run `syncdb` or migrated with e.g. [South][south].### Multiple Sequences`django-ticketing` also supports multiple sequences, which allows to havesequences of tickets that are independent. This means you could have a sequencefor users, a sequence for posts and a sequence for widgets. This is configuredthrough your Django settings configuration.Simply define a setting called `TICKETING\_SEQUENCES` with a tuple of sequencenames that have to be valid table names. This defaults to the tuple `('default',)`.In addition, you can define the default sequence from which new tickets aretaken from with the setting `TICKETING_DEFAULT_SEQUENCE`, which defaults to`'default'`.Note that `TICKETING_DEFAULT_SEQUENCE` has to be a sequence name that is definedinside of `TICKETING\_SEQUENCES`, otherwise an exception will be raisedduring setup.So to have sequences for the above example, put the following lines in your`settings.py`:``` pythonTICKETING_DEFAULT_SEQUENCE = 'users'TICKETING_SEQUENCES = ('users', 'posts', 'widgets', )```Then, to get a ticket from a specific sequence, pass in the sequence name to`get_ticket()`:``` python# Get yourself a user ticketuser_ticket = get_ticket('users')# Get yourself another user ticketuser_ticket = get_ticket()# Get yourself a posts ticketpost_ticket = get_ticket('posts')```Notice that the default sequence for `get_ticket()` is the value of the`TICKETING_DEFAULT_SEQUENCE` configuration variable.Also, after you change the value of `TICKETING_SEQUENCES`, be sure to re-run`syncdb` to make sure the new tables are created (or whatever DB table creationyou have in your environment).### Other Configuration Options`TICKETING_APP_LABEL`: This is used to specify the prefix for all the DBtablenames. The default value is `'ticketing'`. Be sure you know what you aredoing when you change this.## TestingThere are some tests included. To run those tests, simply execute `runtests.py`:``` bash[streeter] $ python runtests.py----------------------------------------------------------------------Ran 6 tests in 0.213sOK[streeter] $```The test suite can run on all DB backends supported by Django. By defaultit runs using sqlite3.To run on MySQL, uncomment the marked section in `runtests.py`, create aDB that Django can connect to and give the Django user permissions tocreate a new testing DB, e.g. by running the following commands:``` bashmysql -u root -e "DROP DATABASE ticketing_test";mysql -u root -e "CREATE DATABASE ticketing_test";mysql -u root -e "GRANT ALL ON ticketing_test.* TO 'ticketing_test'@'localhost' IDENTIFIED BY ''"```Of course, you may need to change the host of the DB and user that connects, butyou should get the idea.## LicenseUses the [MIT][mit] license.[flickr]: http://code.flickr.com/blog/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/[pypi]: http://pypi.python.org/pypi/django-ticketing/[south]: http://south.aeracode.org/[mit]: http://opensource.org/licenses/MIT