Files
postgres-web/dep/django-selectable/selectable/registry.py
Magnus Hagander 6ffc1d4811 Import newer version of django-selectable
Sync up to the same version we have on the commitfest app, which will
also be required for eventual django 1.11 support.
2018-03-09 16:43:49 -05:00

44 lines
1.3 KiB
Python

from __future__ import unicode_literals
from django.utils.encoding import force_text
from django.utils.module_loading import autodiscover_modules
from selectable.base import LookupBase
from selectable.exceptions import (LookupAlreadyRegistered, LookupNotRegistered,
LookupInvalid)
class LookupRegistry(object):
def __init__(self):
self._registry = {}
def validate(self, lookup):
if not issubclass(lookup, LookupBase):
raise LookupInvalid('Registered lookups must inherit from the LookupBase class')
def register(self, lookup):
self.validate(lookup)
name = force_text(lookup.name())
if name in self._registry:
raise LookupAlreadyRegistered('The name %s is already registered' % name)
self._registry[name] = lookup
def unregister(self, lookup):
self.validate(lookup)
name = force_text(lookup.name())
if name not in self._registry:
raise LookupNotRegistered('The name %s is not registered' % name)
del self._registry[name]
def get(self, key):
return self._registry.get(key, None)
registry = LookupRegistry()
def autodiscover():
# Attempt to import the app's lookups module.
autodiscover_modules('lookups', register_to=registry)