X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/6bbd30b90e9ee0fc1efae94bd66316f394fafef9..84fbf26eed3101008c0c2056a5dc24c4620e36c0:/forum/models/base.py diff --git a/forum/models/base.py b/forum/models/base.py index 2cfe7db..47f71e0 100644 --- a/forum/models/base.py +++ b/forum/models/base.py @@ -8,6 +8,7 @@ from urllib import quote_plus, urlencode from django.db import models, IntegrityError, connection, transaction from django.utils.http import urlquote as django_urlquote from django.utils.html import strip_tags +from django.conf import settings as django_settings from django.core.urlresolvers import reverse from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType @@ -82,7 +83,8 @@ class CachedQuerySet(models.query.QuerySet): obj.cache() else: obj = self.obj_from_datadict(obj) - obj.reset_original_state() + + obj.reset_original_state() return obj @@ -170,9 +172,10 @@ class CachedQuerySet(models.query.QuerySet): if to_return: for row in to_return: if hasattr(row, 'leaf'): - yield row.leaf - else: - yield row + row = row.leaf + + row.reset_original_state() + yield row def _get_query_hash(self): return md5(unicode(self.query).encode("utf-8")).hexdigest() @@ -323,7 +326,12 @@ class BaseModel(models.Model): pk = [v for (k,v) in querydict.items() if k in ('pk', 'pk__exact', 'id', 'id__exact' ) or k.endswith('_ptr__pk') or k.endswith('_ptr__id')][0] - return cls._generate_cache_key(pk) + cache_key = cls._generate_cache_key(pk) + + if len(cache_key) > django_settings.CACHE_MAX_KEY_LENGTH: + cache_key = cache_key[:django_settings.CACHE_MAX_KEY_LENGTH] + + return cache_key except: return None