如何在blobstorage ZEO服务器中干净地删除plone.app.imaging缩放的blob?

时间:2013-02-08 18:48:53

标签: plone dexterity blobstorage

这个问题的一部分已经用another stackoverflow question解决了,但它似乎并没有清理所有内容。

步骤如下:

  • 使用图片字段创建文档
  • 看到blobstorage有一个文件
  • 使用该图片的缩放版本打开视图
  • 看到blobstorage现在有两个文件,图像和缩放图像
  • 根据其他问题的建议,zeopack 0天
  • 看到blobstorage上仍有一个blob ,缩放图像

所以问题是:如何从blobstorage中删除这个缩放图像?

我尝试两次运行zeopack但没有成功,缩放的blob仍然存在。

更新:正如vangheem所指出的那样,Archetypes Image内容类型不会发生这种情况。尽管如此,对于具有图像字段的基于敏捷的内容类型,此问题仍然有效。

只有在删除文档时才会删除缩放,这不是我的用例,我只想删除图像(图像信用已过期,图像无法再显示)。

2 个答案:

答案 0 :(得分:2)

删除内容项也应删除其比例。

我只是在plone 4.2.4中测试。这是我的步骤:

  1. 删除现有的blobstorage和filestorage
  2. 启动plone
  3. 创建新网站
  4. 添加图片,查看是否创建了2个blobstorage文件。一个是原始的,另一个是到目前为止创建的一个比例
  5. 删除图像,两个文件仍然在blobstorage中以进行撤消支持
  6. 将数据库打包为0天,现在已从blobstorage中删除这两个文件
  7. 所以一切似乎都正常。

    在您的帖子中,您提到您正在创建文档。如果您的意思是新闻项目,那些图像不会存储在blobstorage中。

    现在,如果你有一个自定义内容类型,你有一个图像字段,而你只是想删除图像字段和从该字段生成的比例,但不删除整个类型,你需要删除手动秤。我想它会是这样的:

    del doc.__blob_scales['image']['preview']
    

答案 1 :(得分:0)

发现它!

要删除实际上必须删除plone.scale注释的比例:

# assume 'document' is a Dexterity-based content type that has a NamedBlobImage field 
from zope.annotation.interfaces import IAnnotations
annotations = IAnnotations(document)
if 'plone.scale' in annotations:
    del annotations['plone.scale']
if getattr(document, 'image', None) is not None and document.image is not None:
    del document.image
    document.reindexObject()