X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/fb8a270fa22abc217efc471d860c76d5a2352c61..700615d15881697c10a77ca65c84a84a5dd1e4d6:/philo/contrib/sobol/utils.py diff --git a/philo/contrib/sobol/utils.py b/philo/contrib/sobol/utils.py index 3c5e537..50d2113 100644 --- a/philo/contrib/sobol/utils.py +++ b/philo/contrib/sobol/utils.py @@ -1,8 +1,9 @@ +from hashlib import sha1 + from django.conf import settings from django.http import QueryDict from django.utils.encoding import smart_str from django.utils.http import urlquote_plus, urlquote -from hashlib import sha1 SEARCH_ARG_GET_KEY = 'q' @@ -29,4 +30,25 @@ def make_tracking_querydict(search_arg, url): SEARCH_ARG_GET_KEY, urlquote_plus(search_arg), URL_REDIRECT_GET_KEY, urlquote(url), HASH_REDIRECT_GET_KEY, make_redirect_hash(search_arg, url)) - ) \ No newline at end of file + ) + + +class RegistryIterator(object): + def __init__(self, registry, iterattr='__iter__', transform=lambda x:x): + if not hasattr(registry, iterattr): + raise AttributeError("Registry has no attribute %s" % iterattr) + self.registry = registry + self.iterattr = iterattr + self.transform = transform + + def __iter__(self): + return self + + def next(self): + if not hasattr(self, '_iter'): + self._iter = getattr(self.registry, self.iterattr)() + + return self.transform(self._iter.next()) + + def copy(self): + return self.__class__(self.registry, self.iterattr, self.transform) \ No newline at end of file