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