Почему getSite () возвращает объект FormlibValidation - PullRequest
4 голосов
/ 19 сентября 2011

Я установил коллектив.quickupload на пустом сайте Plone 4.1, и заметил, что когда вы добавляете портлет быстрой загрузки, kss вызывает проверку поля (plone.app.form.kss), функция getSite возвращает объект FormlibValidation, что приводит к сбою словарей быстрой загрузки.

Обратный отсчет здесь: http://pastebin.com/nvwChpZd

Мой вопрос:

  • Это (функция getSite возвращает объект FormlibValidation) ошибка или предполагаемое поведение?

  • Решение, чтобы исправить / обойти / заставить коллективный. Quickupload работать?

1 Ответ

4 голосов
/ 19 сентября 2011

getSite () возвращает ближайший компонентный сайт (где могут храниться локальные утилиты), что на самом деле означает то, что в последний раз было установлено с помощью setSite (), что обычно происходит при обходе.

Большую часть времени,единственный метод обхода, который вызывает setSite (), - это тот, который срабатывает, когда вы пересекаете сайт Plone.Но я думаю, что старый механизм проверки встроенных форм KSS использовал (использует?) Хак, который создает сайт локального компонента на лету (в представлении) и устанавливает его как локальный сайт в течение оставшейся части запроса, чтобы он мог переопределить определенныевещи.

Вы можете отключить проверку (например, отключить соответствующий файл KSS в portal_kss) или исправить c.quickupload, чтобы проверить, является ли результат getSite () ISiteRoot.Если это не так, он должен быть заключен в приобретение, поэтому вы можете сделать aq_parent (site) (или возможно site. parent ), чтобы получить родительский элемент в цикле, пока не найдете ISiteRoot.

...