And I also do not have access to hidden variables (it was the primary
reason I used this expression) until I call form.xml().
Anyway, thank you for correcting this bug. I will try to avoid
TAG(form.xml()) if I can.
Le vendredi 25 mai 2012 17:38:45 UTC+2, Massimo Di Pierro a écrit :
>
> 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 ?
>>>>>>>
>>>>>>