X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/a702df34f63291c9aa76a202824455d64fdd8bf9..fa21c2cc4d92e1f723a3b38daa2f033dbb4889e5:/forum/models/utils.py diff --git a/forum/models/utils.py b/forum/models/utils.py index e7841a5..5a1912c 100644 --- a/forum/models/utils.py +++ b/forum/models/utils.py @@ -17,7 +17,7 @@ from base import BaseModel MAX_MARKABLE_STRING_LENGTH = 100 -class PickledObject(str): +class PickledObject(unicode): pass def dbsafe_encode(value, compress_object=True): @@ -48,7 +48,7 @@ class PickledObjectField(models.Field): super(PickledObjectField, self).__init__(*args, **kwargs) def generate_type_marked_value(self, value): - return PickledObject("T[%s]%s" % (type(value).__name__, value)) + return PickledObject(u"T[%s]%s" % (type(value).__name__, value)) def read_marked_value(self, value): m = self.marker_re.match(value) @@ -81,12 +81,13 @@ class PickledObjectField(models.Field): raise return value - def get_db_prep_value(self, value): + def get_db_prep_value(self, value, connection, prepared=False): if value is not None and not isinstance(value, PickledObject): - if type(value).__name__ in self.markable_types and not (isinstance(value, basestring) and len(value) > MAX_MARKABLE_STRING_LENGTH): - value = force_unicode(self.generate_type_marked_value(value)) + if type(value).__name__ in self.markable_types and not (isinstance(value, basestring) and len(value + ) > MAX_MARKABLE_STRING_LENGTH): + value = unicode(self.generate_type_marked_value(value)) else: - value = force_unicode(dbsafe_encode(value, self.compress)) + value = unicode(dbsafe_encode(value, self.compress)) return value def value_to_string(self, obj): @@ -115,9 +116,13 @@ class KeyValue(BaseModel): @classmethod def infer_cache_key(cls, querydict): try: - key = [v for (k,v) in querydict.items() if k in ('key', 'key__exact')][0] + key = [v for (k, v) in querydict.items() if k in ('key', 'key__exact')][0] return cls._generate_cache_key(key) except: return None + @classmethod + def value_to_list_on_cache_query(cls): + return 'key' +