2013-02-08 4 views
1

Часть этого вопроса уже разрешена с помощью another stackoverflow question, но кажется, что он не очищает все.Как очистить plone.app.imaging масштабированные капли в сервере BLOBSTORAGE ZEO?

Шаги:

  • создать документ с полем изображения
  • увидеть, что blobstorage имеет один файл
  • открыть вид с масштабируется версии этого образа
  • см что у blobstorage теперь есть два файла, изображение и масштабированное изображение
  • do, как предложено на th е другой вопрос, мы zeopack с 0 дней
  • видеть, что есть еще одна капля на blobstorage, масштабированное изображение

Таким образом, вопрос: как можно удалить также это масштабируемые изображения с blobstorage ?

Я попытался запустить zeopack дважды без успеха, масштабированный кадр все еще вокруг.

UPDATE:, как vangheem отметил, что не бывает для Архетипы Image типов контента. Тем не менее этот вопрос остается в силе, как и для типов контента на основе Ловкости, которые имеют поле изображения.

Весы удаляются только в том случае, если вы удаляете документ, который не является моим прецедентом, я просто хочу удалить изображение (срок действия изображений истек, и изображение больше не может быть показано).

+0

Почему вы хотели бы? Масштабированные изображения используются по всему спектру и будут просто генерироваться повторно. – vangheem

+0

vangheem: дело в том, что на нашем веб-сайте мы используем изображения с определенной датой истечения срока их действия (они покупаются по getty или около того). Итак, ** после ** этой даты истечения срока действия они должны быть удалены, и, очевидно, масштабированные изображения больше не нужны и не будут отображаться нигде. – gforcada

+0

Martijn: Я просто удалил поле изображения документа. Может быть, это не правильный способ удаления поля изображения? Что касается шагов, они точно так же, как я сказал на вопрос: создайте, добавьте изображение, убедитесь, что есть два блоба, а затем удалите изображение. После всего этого (документ все еще там) я делаю упаковку – gforcada

ответ

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

Удаление элемента контента также должно удалить его масштабы.

Я просто тестирую в плане 4.2.4. Вот мои шаги:

  1. удалить существующий blobstorage и filestorage
  2. запуска Plone
  3. создать новый сайт
  4. добавить изображение, видеть, что 2 blobstorage файлы создаются. Один оригинал, другая одна шкала, которая была создана до сих пор
  5. удалить изображение, как файлы все еще в blobstorage для поддержки отмен
  6. пакет базы данных до 0 дней, оба файла теперь удалены из blobstorage

Итак, все работает правильно.

В своем сообщении вы упоминаете, что вы создаете документ. Если вы имеете в виду News Item, эти изображения не сохраняются в blobstorage.

Теперь, если у вас есть собственный тип контента, в котором у вас есть поле изображения, и вы просто пытаетесь удалить поле изображения и масштабы, сгенерированные из этого поля, но не удалять весь тип, вам нужно будет удалите весы вручную.Я думаю, что это будет примерно так:

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

Это тип содержимого пользовательской ловкости, у которого есть NamedBlobImage, который исходит из поведения. Но выполнение '' hasattr (article, blobScalesAttr) '' терпит неудачу. Я вижу шкалы в аннотации, хотя '' IAnnotations (статья) ['plone.scale'] ''. Это потому, что это тип контента, основанный на dexerity? – gforcada

+0

Кажется, что этот '' __blob_scales'' существует только для типов контента Archetypes, но не для Ловкости (для создания и типа содержимого '' Image'', но тип контента TTW Dexterity с полем изображения не имеет) – gforcada

 Смежные вопросы

  • Нет связанных вопросов^_^