Commit e66debf0 authored by Serge S. Koval's avatar Serge S. Koval

Fixed 733 - Properly escape text PKs

parent 2c6af613
...@@ -4,7 +4,7 @@ from sqlalchemy.exc import DBAPIError ...@@ -4,7 +4,7 @@ from sqlalchemy.exc import DBAPIError
from ast import literal_eval from ast import literal_eval
from flask.ext.admin._compat import filter_list from flask.ext.admin._compat import filter_list
from flask.ext.admin.tools import iterencode, iterdecode from flask.ext.admin.tools import iterencode, iterdecode, escape
def parse_like_term(term): def parse_like_term(term):
......
...@@ -360,7 +360,7 @@ class ModelView(BaseModelView): ...@@ -360,7 +360,7 @@ class ModelView(BaseModelView):
if isinstance(self._primary_key, tuple): if isinstance(self._primary_key, tuple):
return tools.iterencode(getattr(model, attr) for attr in self._primary_key) return tools.iterencode(getattr(model, attr) for attr in self._primary_key)
else: else:
return getattr(model, self._primary_key) return tools.escape(getattr(model, self._primary_key))
def scaffold_list_columns(self): def scaffold_list_columns(self):
""" """
......
...@@ -101,6 +101,15 @@ def get_dict_attr(obj, attr, default=None): ...@@ -101,6 +101,15 @@ def get_dict_attr(obj, attr, default=None):
return default return default
def escape(value):
print value
return (as_unicode(value)
.replace(CHAR_ESCAPE, CHAR_ESCAPE + CHAR_ESCAPE)
.replace(CHAR_SEPARATOR, CHAR_ESCAPE + CHAR_SEPARATOR))
def iterencode(iter): def iterencode(iter):
""" """
Encode enumerable as compact string representation. Encode enumerable as compact string representation.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment