Interesting. You do not need
realform = TAG(form.xml())
because it is supposed to be equivalent to
realform = form
except that the former will include a DOM representation of error messages
injected during serialization.
Anyway, you may be right that handle_charref contains a bug. Actually more
then the one you report. It is now fixed in trunk. No need to submit a
ticket.
On Friday, 25 May 2012 09:40:33 UTC-5, Cédric Mayer wrote:
>
> I think I found something !
> " ' " can be replaced by HTML entity ' (in decimal, 39), and the
> strange character is  (in hexadecimal, 1B),... 27, the same, strange,
> isn't it ?
>
> Then somewhere in my code, the SQLFORM
> form
> is treated with
> realform = TAG(form.xml())
> in order to have the whole DOM tree in the server to do some research on
> it and replacements.
> This TAG function calls HTMLParser, and for this character call back
> web2pyHTMLParser.handle_charref which treats the character as decimal 27...
>
> The problem is then on module html.py, line 2192,
> if name[1].lower()=='x':
>
> should be
> if name[0].lower()=='x':
> as given name is "x27".
>
> Little bug :-) What is the procedure to open an issue ?
>
> And in the mean time I will be obliged to replace manually this strange
> character back into " ' ", hopping the people that will write HTML code
> using my application will not use unicode characters
>
>
>>>>> On Friday, May 25, 2012 4:35:30 AM UTC-4, Cédric Mayer wrote:
>>>>>>
>>>>>> Hello !
>>>>>> I have a table with "text" fields:
>>>>>> Field('f_comments', type='text',
>>>>>> label=T('Comment')),
>>>>>> or even:
>>>>>> Field('f_form', type='text',
>>>>>> label=T('Form'), comment=T('Please write HTML here')),
>>>>>> Using appadmin interface, if I use an apostrophe " ' " inside the
>>>>>> textarea fields and submit the record form, the apostrophe saved, and if
>>>>>> I
>>>>>> display the appadmin form for the same record again, they are displayed
>>>>>> inside the textarea fields.
>>>>>>
>>>>>> But creating my own form:
>>>>>> form = SQLFORM(db.t_question, record, deletable=True)
>>>>>> apostrophes " ' " do not appear anymore.
>>>>>>
>>>>>> I did some copy-paste of what was inside my own textarea to an
>>>>>> hexadecimal editor, and the apostrophe are replaced with the # 27 (hexa
>>>>>> 1B)
>>>>>> character in the case of my own form.
>>>>>>
>>>>>> If I save the form as-is, this 1B character is saved too, and so the
>>>>>> apostrophe disappears also if I look to the record from the appadmin
>>>>>> interface.
>>>>>>
>>>>>> It is really anoying as I use the content of the fields as pure HTML
>>>>>> afterwards : not having apostrophes leads to errors if I try to have
>>>>>> some
>>>>>> Javascript in those fields.
>>>>>>
>>>>>> 1) What is the difference between the form generated in appadmin, and
>>>>>> the one generated by SQLFORM ?
>>>>>> 2) Is there a way not to escape " ' " in text fields ?
>>>>>>
>>>>>