# # Copyright (c) 2008 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """ View for regenerating all transformed media assets. Authors: Johann Schimpf, Erich Seifert. $Id$ """ from logging import getLogger import traceback from zope import component from zope.security.proxy import removeSecurityProxy from cybertools.media.interfaces import IMediaAsset class RegenerationView(object): def __call__(self): conceptType = self.request.get('type') if not conceptType: return '*** No type given!' tMediaAsset = self.context.getLoopsRoot().getConceptManager()[conceptType] # Remove old transformed versions #storageDir = assetManager.options.get("storage_parameters") # Regenerate all media asset transforations resources = tMediaAsset.getResources() logger = getLogger('Asset Manager') errors = 0 for res in resources: asset = component.queryAdapter(res, IMediaAsset) if asset != None and res.contentType.startswith('image/'): logger.info('*** regenerating: ' + res.__name__) try: asset.transform() except: logger.warn(traceback.format_exc()) errors += 1 if errors: return 'Done - there were %i errors.' % errors return 'Done.' class ChangeSubdirectories(object): search = '/home/Zope3/ctt' replace = '/home/33zope/ctt' def __call__(self): found = changed = 0 context = removeSecurityProxy(self.context) ma = context['concepts']['media_asset'] for obj in ma.getResources(): found += 1 sp = obj._storageParams subdir = sp.get('subdirectory', '') print subdir if self.search in subdir: changed += 1 sp['subdirectory'] = subdir.replace(self.search, self.replace) obj._storageParams = sp return 'Done, %i media asset objects found, %i changed' % (found, changed)