django-orchestra/orchestra/core/__init__.py

52 lines
1.6 KiB
Python
Raw Normal View History

from django.utils.translation import string_concat
2014-11-14 15:51:18 +00:00
from ..utils.python import AttrDict
class Register(object):
def __init__(self, verbose_name=None):
self._registry = {}
self.verbose_name = verbose_name
2014-05-08 16:59:35 +00:00
2014-07-17 16:09:24 +00:00
def __contains__(self, key):
return key in self._registry
2014-11-14 15:51:18 +00:00
def __getitem__(self, key):
return self._registry[key]
2015-10-07 22:05:00 +00:00
def __iter__(self):
return iter(self._registry.values())
2014-05-08 16:59:35 +00:00
def register(self, model, **kwargs):
if model in self._registry:
raise KeyError("%s already registered" % model)
if 'verbose_name' not in kwargs:
kwargs['verbose_name'] = model._meta.verbose_name
if 'verbose_name_plural' not in kwargs:
kwargs['verbose_name_plural'] = model._meta.verbose_name_plural
2015-05-18 15:21:42 +00:00
defaults = {
'menu': True,
2015-10-07 22:05:00 +00:00
'search': True,
'model': model,
2015-05-18 15:21:42 +00:00
}
defaults.update(kwargs)
self._registry[model] = AttrDict(**defaults)
def register_view(self, view_name, **kwargs):
if 'verbose_name' not in kwargs:
raise KeyError("%s verbose_name is required for views" % view_name)
if 'verbose_name_plural' not in kwargs:
kwargs['verbose_name_plural'] = string_concat(kwargs['verbose_name'], 's')
2015-05-18 15:21:42 +00:00
self.register(view_name, **kwargs)
2014-05-08 16:59:35 +00:00
2014-11-14 15:51:18 +00:00
def get(self, *args):
if args:
2015-04-04 17:44:07 +00:00
return self._registry[args[0]]
2014-05-08 16:59:35 +00:00
return self._registry
services = Register(verbose_name='Services')
# TODO rename to something else
accounts = Register(verbose_name='Accounts')
administration = Register(verbose_name='Administration')