# HG changeset patch # User Marcin Kuzminski # Date 2019-09-30 10:33:54 # Node ID e0de097c32506ddc483634366c7e5672c283c6e3 # Parent 235a26df9cb73794548070ccb3c31d10e68fe465 db: enforce unicode on unicode columns to prevent warnings. diff --git a/rhodecode/lib/jsonalchemy.py b/rhodecode/lib/jsonalchemy.py --- a/rhodecode/lib/jsonalchemy.py +++ b/rhodecode/lib/jsonalchemy.py @@ -25,6 +25,7 @@ from sqlalchemy import UnicodeText from sqlalchemy.ext.mutable import Mutable from rhodecode.lib.ext_json import json +from rhodecode.lib.utils2 import safe_unicode class JsonRaw(unicode): @@ -56,10 +57,12 @@ class JSONEncodedObj(sqlalchemy.types.Ty impl = UnicodeText safe = True + enforce_unicode = True def __init__(self, *args, **kwargs): self.default = kwargs.pop('default', None) self.safe = kwargs.pop('safe_json', self.safe) + self.enforce_unicode = kwargs.pop('enforce_unicode', self.enforce_unicode) self.dialect_map = kwargs.pop('dialect_map', {}) super(JSONEncodedObj, self).__init__(*args, **kwargs) @@ -73,6 +76,8 @@ class JSONEncodedObj(sqlalchemy.types.Ty value = value elif value is not None: value = json.dumps(value) + if self.enforce_unicode: + value = safe_unicode(value) return value def process_result_value(self, value, dialect): diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -3956,7 +3956,7 @@ class _PullRequestBase(BaseModel): @revisions.setter def revisions(self, val): - self._revisions = ':'.join(val) + self._revisions = u':'.join(val) @hybrid_property def last_merge_status(self):