Добавление объекта File программно в Plone с использованием PloneFormGen - PullRequest
1 голос
/ 24 мая 2011

Я пишу адаптер настраиваемого действия PloneFormGen, чтобы добавить объект File в папку из поля File в форме.Вот сценарий:

target = context.filefolder   
form = request.form    
uid = str(DateTime().millis())

target.invokeFactory("File", id=uid, file=form['arquivo-do-cv_file'])

obj = target[uid]

"filefolder" - это имя папки внутри родительской папки для PFG FormFolder.Этот сценарий настроен для запуска с ролью прокси-сервера Manager.

Проблема состоит в том, что объекты File, созданные таким образом, не будут отображать ссылку "Нажмите здесь, чтобы загрузить файл" при их просмотре.Файлы могут быть загружены, хотя, если я подавлю часть "/ view" в конце URL.Чего мне не хватает при вызове invokeFactory для создания объекта File?

ОБНОВЛЕНИЕ: Я имел в виду, что я не получаю " имя файла - тип файла , размер в килобайтах ( размер в байтах )"ссылка для документа, ниже подписи автора.Когда я создаю объект File с использованием обычного пользовательского интерфейса Plone, он появляется.

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Я ничего не подозреваю;Я думаю, что это поведение по умолчанию в Plone 4.

Я только что добавил файл, и я не вижу никаких «Нажмите здесь, чтобы загрузить файл».

И при быстром поиске не появляется строка "нажмите здесь, чтобы скачать":

aclark@Alex-Clarks-MacBook-Pro:~/Developer/test-4.1/ > grep -ir "Click here to download" parts/omelette
parts/omelette/plone/app/jquerytools/browser/jquery.tools.plugins.js:                   (root.tagName == 'A' ? "<p>Click here to download latest version</p>" : 
parts/omelette/plone/app/jquerytools/browser/jquery.tools.plugins.min.js:" or greater is required</h2><h3>"+(g[0]>0?"Your version is "+g:"You have no flash plugin installed")+"</h3>"+(a.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+k+"'>here</a></p>");if(a.tagName=="A")a.onclick=function(){location.href=k}}if(b.onFail){var d=b.onFail.call(this);if(typeof d=="string")a.innerHTML=d}}if(i)window[b.id]=document.getElementById(b.id);f(this,{getRoot:function(){return a},getOptions:function(){return b},getConf:function(){return c},
0 голосов
/ 11 ноября 2011

У меня нет экземпляра Plone для его тестирования, но попробуйте вызвать processForm() после invokeFactory.Он будет:

  • снять флажок создания;
  • переименовать объект в соответствии с заголовком;
  • переиндексировать объект;
  • вызвать сценарий after_creation и запуститьсобытие ObjectInitialized.

Эти действия подробно описаны в Жизненный цикл строительства объекта .Возможно, некоторые из этих действий необходимы для создания нужной вам информации в КБ (надеюсь, это индекс).

...