2016-12-03 13 views
1

После применения Plone security patch 20161129 наша форма PloneFormGen больше не работает, поскольку содержит Umlauts (ä, ö, ß или €). Мы используем PloneFormGen 1.7.20, который является рекомендуемой версией для Plone 4.3.9. Вот StackTrace:UnicodeDecodeError в PloneFormGen после Plone Security patch 20161129

Module zope.tales.tales, line 696, in evaluate 
    - URL: file:/var/plone/buildout-cache/eggs/Products.PloneFormGen-1.7.20-py2.7.egg/Products/PloneFormGen/skins/PloneFormGen/widget_fieldset_start.pt 
    - Line 25, Column 10 
    - Expression: <PythonExpr widget.Description(here)> 
    - Names: 
     {'container': <PloneSite at /mysite>, 
     'context': <FormFolder at /mysite/mitglied-werden>, 
     'desitelt': <object object at 0x7fe244f734b0>, 
     'here': <FormFolder at /mysite/mitglied-werden>, 
     'loop': {u'field': <Products.PageTemplates.Expressions.PathIterator object at 0x16fe5350>}, 
     'nothing': None, 
     'options': {'args':(), 
        'state': <Products.CMFFormController.ControllerState.ControllerState object at 0x7fe22c676610>}, 
     'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x1d61fc00>, 
     'request': <HTTPRequest, URL=https://www.example.org/mitglied-werden/fg_base_view_p3>, 
     'root': <Application at >, 
     'template': <FSControllerPageTemplate at /mysite/fg_base_view_p3 used for /mysite/mitglied-werden>, 
     'traverse_subpath': [], 
     'user': <PloneUser 'siteb390'>} 
    Module Products.PageTemplates.ZRPythonExpr, line 48, in __call__ 
    - __traceback_info__: widget.Description(here) 
    Module PythonExpr, line 1, in <expression> 
    Module Products.PloneFormGen.content.field_utils, line 27, in wDescription 
    Module zope.i18n, line 107, in translate 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 20: ordinal not in range(128) 

После удаления умляуты это работает снова, но теперь форма выглядит немного непрофессионально.

После поиска в Интернете в течение часа для этой ошибки у меня нет особой идеи, какое расширение вызывает это (PloneFormGen?) Вызывает это и как его исправить: - Даже не знаю, в каком направлении смотреть дальше. ..

+1

Запишите отчет об ошибке на странице https://github.com/smcmahon/Products.PloneFormGen/issues. Убедитесь, что вы указали полное описание того, где вы использовали символы, отличные от ASCII. – SteveM

+1

Глядя на журнал изменений 1.7.20, мое чувство кишки говорит, что он выглядит как ошибка при обработке https://github.com/smcmahon/Products.PloneFormGen/issues/178 и, возможно, не имеет отношения к исправлению безопасности. (Нельзя сказать, что «патч безопасности разрывается на данных в Юникоде» будет новым и неожиданным.) Кроме того, я не смог воспроизвести с установкой 1.7.19 и исправлением. –

ответ

3

Начиная с 1.7.20, все поля описания PFG проталкиваются через механизм перевода. (Пожалуйста, не спрашивайте меня, почему они делают это с полями, предоставленными пользователем, потому что поле описания не является, в первую очередь, нечувствительным к языку.) Ths налагает дополнительные ограничения на то, какие буквы вы можете использовать в описании, как вы нашли ,

Не утверждая, что это исправляет ошибки, но в моем быстром процессе, изменяя buildout-cache/eggs/Products.PloneFormGen-1.7.20-py2.7.egg/Products/PloneFormGen/content/field_utils.py линию 27 из

 if value: 
     value = translate(value, context=instance.REQUEST) 
     return cgi.escape(value) 

в

if value: 
     value = translate(value.decode('utf-8'), context=instance.REQUEST) 
     return cgi.escape(value) 

сделал проблему уйти.

+0

, похоже, исправлено: https://github.com/smcmahon/Products.PloneFormGen/issues/182 – nachtigall

+4

Филипп сделал запрос на тяну этого, который я объединил. Исправлено в 1.7.21 и 1.8.3. – maurits

+1

Спасибо за исправление, Филипп, и релиз, Мауриц! – SteveM