2015-05-07 14:09:37 +00:00
|
|
|
from django.utils.translation import string_concat
|
|
|
|
|
2014-11-14 15:51:18 +00:00
|
|
|
from ..utils.python import AttrDict
|
|
|
|
|
|
|
|
|
2014-07-28 17:28:00 +00:00
|
|
|
class Register(object):
|
2015-05-07 14:09:37 +00:00
|
|
|
def __init__(self, verbose_name=None):
|
2014-07-28 17:28:00 +00:00
|
|
|
self._registry = {}
|
2015-05-07 14:09:37 +00:00
|
|
|
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:
|
2015-05-07 14:09:37 +00:00
|
|
|
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)
|
2015-05-07 14:09:37 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
2015-05-07 14:09:37 +00:00
|
|
|
services = Register(verbose_name='Services')
|
2014-07-28 17:28:00 +00:00
|
|
|
# TODO rename to something else
|
2015-05-07 14:09:37 +00:00
|
|
|
accounts = Register(verbose_name='Accounts')
|
|
|
|
administration = Register(verbose_name='Administration')
|