Обновление прикрепленного изображения новости не очищает масштабированное изображение от лака, а только просмотр новости

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

Как я могу сделать plone.app.caching, чтобы также очищать / обновлять не только <mysite>/news/ а также <mysite>/news/news-item/ но и изображения под <mysite>/news/news-item/image_news_scale а также <mysite>/news/news-item/image_even_smaller_news_scale?

Фон: с помощью Plone 4.3.2 я настраиваю свои собственные пользовательские масштабы изображения, например news_scale с помощью <mysite>/@@imaging-controlpanel, Эта шкала используется для отображения прикрепленных изображений в новостях, например, как <mysite>/news/news-item/image_news_scale, Кроме того, у меня также есть другой пользовательский масштаб изображения, как even_smaller_news_scale для использования в списках папок, например как <mysite>/news/news-item/image_even_smaller_news_scale, Я создал эти взгляды через <mysite>/portal_skins/custom и зарегистрировал их как виды по умолчанию под <mysite>/portal_types/ а также select_default_view действие.

PS Я только что видел, потому что я использую https://pypi.python.org/pypi/raptus.multilanguageplone, URL изображений доступны даже под более сложным URL, который зависит от выбранного языка: <mysite>/news/news-item/image___de____news_scale а также <mysite>/news/news-item/image___de____even_smaller_news_scale (de также может быть en в зависимости от языка)

1 ответ

Решение

Если вы уже настроили очистку кэша в plone.app.caching правильно, вы заметите, что newsitem/image_thumb и другие размеры изображений будут очищаться правильно по умолчанию.

plone.app.caching не знает о пользовательских URL для изображений из-за raptus.linguaplone. так что вам придется создать свой собственный адаптер, который реализует IPurgePaths для ваших новостей

что-то вроде этого должно сделать свое дело:

from z3c.caching.interfaces import IPurgePaths


class ItemImagePurgePaths(object):
    """additional paths to purge not covered by 
    plone.app.caching default adapters i.e. ObjectFieldPurgePaths
    """
    implements(IPurgePaths)
    adapts(IYourConentType)

    def __init__(self, context):
        self.context = context

    def getRelativePaths(self):
        prefix = self.context.absolute_url_path()

        return [prefix + '/image____de____news_scale',
                prefix + '/image____de____even_smaller_scale']

    def getAbsolutePaths(self):
        return []    

см. также https://pypi.python.org/pypi/plone.cachepurging

Другие вопросы по тегам