Move spec registry

This commit is contained in:
Matthew Tretter 2012-10-04 22:02:29 -04:00
parent 116b0bc0c5
commit 99ba61d605
2 changed files with 27 additions and 29 deletions

View file

@ -2,7 +2,7 @@ from django.conf import settings
from hashlib import md5
import os
import pickle
from .exceptions import UnknownExtensionError
from .exceptions import UnknownExtensionError, AlreadyRegistered, NotRegistered
from .imagecache.backends import get_default_image_cache_backend
from .imagecache.strategies import StrategyWrapper
from .lib import StringIO
@ -11,6 +11,31 @@ from .utils import (open_image, extension_to_format, IKContentFile, img_to_fobj,
suggest_extension)
class SpecRegistry(object):
def __init__(self):
self._specs = {}
def register(self, id, spec):
if id in self._specs:
raise AlreadyRegistered('The spec with id %s is already registered' % id)
self._specs[id] = spec
def unregister(self, id, spec):
try:
del self._specs[id]
except KeyError:
raise NotRegistered('The spec with id %s is not registered' % id)
def get_spec(self, id):
try:
return self._specs[id]
except KeyError:
raise NotRegistered('The spec with id %s is not registered' % id)
spec_registry = SpecRegistry()
class BaseImageSpec(object):
processors = None
format = None

View file

@ -1,39 +1,12 @@
import os
from django import template
from django.utils.safestring import mark_safe
from ..exceptions import AlreadyRegistered, NotRegistered
from ..files import ImageSpecFile
from ..specs import spec_registry
register = template.Library()
class SpecRegistry(object):
def __init__(self):
self._specs = {}
def register(self, id, spec):
if id in self._specs:
raise AlreadyRegistered('The spec with id %s is already registered' % id)
self._specs[id] = spec
def unregister(self, id, spec):
try:
del self._specs[id]
except KeyError:
raise NotRegistered('The spec with id %s is not registered' % id)
def get_spec(self, id):
try:
return self._specs[id]
except KeyError:
raise NotRegistered('The spec with id %s is not registered' % id)
spec_registry = SpecRegistry()
class ImageSpecFileHtmlWrapper(object):
def __init__(self, image_spec_file):
self._image_spec_file = image_spec_file