From: Stephen Burrows Date: Thu, 21 Jul 2011 20:39:28 +0000 (-0400) Subject: Lazy-eval the values of AttributeValues instead of loading them all during AttributeM... X-Git-Tag: philo-0.9.1^2~3^2~1^2~1 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/156ac8bc47f9ff52ff92610ae05c589b31d609e0 Lazy-eval the values of AttributeValues instead of loading them all during AttributeMapper._fill_cache. --- diff --git a/philo/utils/entities.py b/philo/utils/entities.py index 754a5dc..c7b14b7 100644 --- a/philo/utils/entities.py +++ b/philo/utils/entities.py @@ -1,8 +1,11 @@ +from functools import partial from UserDict import DictMixin from django.db import models from django.contrib.contenttypes.models import ContentType +from philo.utils.lazycompat import SimpleLazyObject + ### AttributeMappers @@ -91,7 +94,11 @@ class AttributeMapper(object, DictMixin): for ct_pk, pks in value_lookups.items(): values_bulk[ct_pk] = ContentType.objects.get_for_id(ct_pk).model_class().objects.in_bulk(pks) - self._cache.update(dict([(a.key, getattr(values_bulk[a.value_content_type_id].get(a.value_object_id), 'value', None)) for a in attributes])) + self._cache.update(dict([ + ( + a.key, + SimpleLazyObject(partial(getattr, values_bulk[a.value_content_type_id].get(a.value_object_id), 'value', None)) + ) for a in attributes])) self._cache_filled = True def clear_cache(self):