2013-02-08 39 views
1

這個問題的一部分已經與another stackoverflow question解決,但它似乎並沒有清理一切。如何在blobstorage ZEO服務器中乾淨地刪除plone.app.imaging縮放的blob?

的步驟是:

  • 創建一個文檔與一個圖像場
  • 看到blobstorage具有一個文件
  • 打開視圖與該圖像
  • 看到的縮放版本該blobstorage現在有兩個文件,圖像和縮放圖像
  • 做,如第E的其他問題,與0天
  • 一個zeopack看到,仍然有上blobstorage 一個斑點,縮放後的圖像

所以,問題是:一個怎麼也刪除blobstorage這個縮放的圖像?

我試着兩次運行zeopack沒有成功,縮放的blob仍在。

UPDATE: as vangheem指出,對於原型Image內容類型沒有發生。不過,這個問題仍然有效,就像一個基於敏捷的內容類型有一個圖像字段。

如果您刪除文檔,這不是我的用例,我只是想刪除圖像(圖像信用已過期,圖像無法顯示),只能刪除這些尺寸。

+0

你爲什麼要?縮放後的圖像在整個plone中使用,只會重新生成。 – vangheem 2013-02-08 20:50:44

+0

vangheem:事情是,在我們的網站上我們使用的圖像有一定的到期日期(他們在getty左右購買)。所以**在**到期之後**必須被刪除,顯然縮放的圖像不再需要,也不會出現在任何地方 – gforcada 2013-02-09 11:23:03

+0

Martijn:我剛剛刪除了文檔的圖像域。也許這不是刪除圖像字段的正確方法?至於步驟,他們就像我在問題中所說的那樣:創建,添加圖像,確保有兩個斑點,然後刪除圖像。在所有這些(文檔仍然存在)之後,我會進行打包 – gforcada 2013-02-09 11:25:14

回答

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() 
2

刪除內容項目也應刪除其比例。

我只是在plone中測試4.2.4。這裏是我的步驟:

  1. 刪除現有blobstorage和filestorage
  2. 啓動Plone的
  3. 創建新站點
  4. 添加圖片,看到2個blobstorage文件被創建。一個原始的,是對已經創建至今
  5. 刪除圖像的一個規模,這兩個文件仍然在blobstorage用於撤消支持
  6. 包數據庫爲0天,這兩個文件是現在從blobstorage刪除

所以一切似乎都正常工作。

在你的文章中你提到你正在創建一個文檔。如果您的意思是新聞條目,則這些圖像不會存儲在blobstorage中。

現在,如果您有一個自定義內容類型,您有一個圖像字段,並且您只是想要刪除圖像字段以及從該字段生成的縮放比例,但不刪除整個類型,則需要手動刪除比例。我認爲它會是這樣的:

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

這是一種自定義的敏捷內容類型,它具有來自行爲的NamedBlobImage。但是做一個''hasattr(文章,blobScalesAttr)''失敗。我通過''IAnnotations(article)['plone.scale']''看到了一個註解的尺度。那是因爲它是一種基於靈活性的內容類型? – gforcada 2013-02-12 08:55:19

+0

似乎這個''__blob_scales''只存在於Archetypes內容類型中,但不適用于敏捷(創建和''Image''內容類型確實具有它,但TTW敏捷內容類型不包含圖片字段) – gforcada 2013-02-12 10:22:20

相關問題