Skip to content

grahambinns/django-useful-enums

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Useful Enums - a library for creating Enums in a DRY way in Python

Build Status

This library grew out of me getting fed up with having to create Django choices that were lists of tuples. I far preferred nicely contained enums of the form:

class MyEnum:

    VALUE_1 = 1
    VALUE_2 = 2

However, most of the time you don't need to create all of the IDs yourself. You should just be able to define the key names and have the Enum class do the work for you. usefulenums does that.

The syntax is very similar to the Django idiom for creating a tuple of choices:

from usefulenums import Enum

MyEnum = Enum(
    ("MY_FIRST_VALUE", "My First Display Text"),
    ("MY_SECOND_VALUE", "My Second Value"),
)

However, you can now refer to those items by name in a more Pythonic fashion, rather than having to use hard-coded strings:

>>> MyEnum.MY_FIRST_VALUE
0

Note that here, Enum() has given automatic values to the enum items. You can set these values yourself by passing a three-tuple to Enum when you create it:

>>> MyEnum = Enum(
...     ("VALUE_1", "MY_FIRST_VALUE", "My First Value"),
...     ("VALUE_2", "MY_SECOND_VALUE", "My Second Value"),
... )
>>> print(MyEnum.MY_FIRST_VALUE)
VALUE_1

You can also extract the Django-style choices from the Enum so that you use it as you've always used choices:

>>> MyEnum.as_choices()
(('VALUE_1', 'My First value'), ('VALUE_2', 'My Second Value'))

Testing

django-useful-enums comes with unit tests that cover its behaviour. You can run them using nose:

$ pip install nose
$ nosetests

About

Useful Enumerations for Django to make writing choices more Pythonic

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages