Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SomeArchetypeWithImages(...):
- def __bobo_traverse__(self, REQUEST, name):
- if name in self.image_field_ids:
- field = self.getField(name)
- image = field.getScale(self)
- else:
- # decode request
- parts = name.split('_')
- field_name = '_'.join(parts[:-1])
- scale = len(parts) > 1 and parts[-1] or None
- if field_name in self.image_field_ids:
- field = self.getField(field_name)
- image = field.getScale(self, scale=scale)
- if scale in field.sizes and not image:
- try:
- state = self._p_changed
- except (ConflictError, KeyboardInterrupt):
- raise
- except:
- state = 0
- # as unrestricted user ...
- old = security.loginAsUnrestrictedUser()
- try:
- # recreate (all!) scales
- logging.warn(
- 'Recreating scales for: %s.' % \
- self.absolute_url(1))
- field.removeScales(self)
- field.createScales(self)
- finally:
- security.loginAsUser(old)
- if state is None:
- self._p_deactivate()
- # try again
- image = field.getScale(self, scale=scale)
- else:
- image = None
- if image is not None and not isinstance(image, basestring):
- return image
- return folder.ATFolder.__bobo_traverse__(self, REQUEST, name)
Add Comment
Please, Sign In to add comment