On Fri, Feb 22, 2008 at 5:17 PM, Robin Becker <[EMAIL PROTECTED]> wrote:

> A colleague has decided to keep his django database string values (which
> are xml
> fragments) in an xml escaped form to avoid having the problem of escaping
> them
> when they are used in templates etc etc.
>
> Unfortunately he found that the normal admin doesn't escape on the way
> through
> so thought of adding a standard mechanism to the save methods. However,
> this
> brings in the possibility of escaping twice ie once in his original
> capture code
> and then in the django save methods.
>

Well -- you escape them in the save() method only when they contain XML
charachters like <, > ? How about that, wouldn't that work?

--Tim


>
> I suggested he could use a subclass of str to represent escaped strings
> and an
> escape function which leaves the subclass instances alone so
>
> class xmlstr(str):
>      pass
>
> from xml.sax.saxutils import escape
> def xmlEscape(s):
>     if isinstance(s,xmlstr): return s
>     return xmlstr(escape(s))
>
> this works up to a point, but anything which modifies the string reverts
> to the
> base class (as it probably should).
>
> type(xmlstr('<') + '') is type(str)
>
> clearly there are a large number of operations which should be overridden
> or
> just hidden to prevent the wrong outcome; has anyone else thought about
> this in
> any detail?
> --
> Robin Becker
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to