迁移原型新闻项目敏捷的内容类型(Migrating Archetype news items to

2019-08-18 03:56发布

我试图在新闻项目,我写的其他内容类型的内容复制。 在我的剧本我有news项目和project项目。 第二, project ,是使用敏捷定义的内容类型。 这将是美好的,如果我能到图像和正文复制从newsproject在未来的方式。

project.text = news.text
project.image = news.image

当文字和图像的定义project的模式为富文本和NamedBlobImage。 我不知道属性如何在新闻项目。 我只知道我可以在新闻项目使用该方法获得图像getImage()但在渲染项目时,该项目将产生错误分配给它。

所以,我需要一些指引,以解决我的基本问题:

  1. 我怎样才能知道原型的内容类型的属性名称。 例如,在这种情况下,我需要知道的新闻项目的正文文本的属性的名称。

  2. 我怎样才能连接到一条新闻将图像转换为连接到灵巧内容类型的图像。

Answer 1:

  1. 您可以使用字段从原型架构检索值,最好的原始值在这种情况下。 您传递的对象,然后调用无论是.get().getRaw()

     schema = news.Schema() news = schema.getField('text').getRaw(news) imageField = schema.getField('image') image = imageField.getRaw(news) content_type = imageField.getContentType(news) filename = imageField.getFilename(news) 
  2. 在返回的对象ImageField.getRaw()调用基本上是一个OFS.Image实例。 你可以调用str()上,以获得原始图像数据。

    设置图像对象,你真的想从架构得到像场,并使用它的._type属性作为工厂:

     project.image = IProjectInterface.image._type(str(image), contentType=content_type, filename=filename) 

    这里的内容类型是可选的; 在NamedImageNamedBlobImage类型嗅出了内容类型自动过。



文章来源: Migrating Archetype news items to Dexterity content types