# http://creativecommons.org/licenses/by-nc/2.0/ #
############################################################
""" CMFAware Image
-$Id: photo.py 1202 2009-07-15 08:48:42Z pin $
-$URL: http://svn.luxia.fr/svn/labo/projects/zope/Portfolio/trunk/photo.py $
"""
from Globals import InitializeClass
from permissions import ViewRawImage
from zope.component.factory import Factory
from zope.interface import implements
-from webdav.WriteLockInterface import WriteLockInterface as z2IWriteLock
+from webdav.interfaces import IWriteLock
from Products.CMFCore.interfaces import IContentish
-from Products.CMFCore.interfaces.Contentish import Contentish as z2IContentish
+from Products.CMFCore.interfaces import IDynamicType
from Products.CMFCore.DynamicType import DynamicType
from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
from Products.Photo.Photo import Photo as BasePhoto
from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
-from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.utils import getToolByName, getUtilityByInterfaceName
from Products.Photo.cache import memoizedmethod
from Products.DCWorkflow.utils import modifyRolesForPermission
from interfaces import IPhoto
class Photo(DynamicType, CMFCatalogAware, BasePhoto, DefaultDublinCoreImpl) :
""" Photo CMF aware """
- implements(IPhoto, IContentish)
- __implements__ = (z2IContentish, z2IWriteLock, DynamicType.__implements__)
+ implements(IPhoto, IContentish, IWriteLock, IDynamicType)
meta_type = BasePhoto.meta_type
manage_options = BasePhoto.manage_options
security.declareProtected(ViewRawImage, 'getJpegImage')
def __init__(self, id, title='', file='', content_type='', precondition='', **kw) :
+ DefaultDublinCoreImpl.__init__(self, title=title)
BasePhoto.__init__(self, id, title, file, content_type=content_type, precondition=precondition, **kw)
self.id = id
self.title = title
def update_data(self, data, content_type=None) :
BasePhoto.update_data(self, data, content_type=content_type)
- self.reindexObject()
+ # update_data can be invoked during construction
+ # in this case, reindexObject put a parasite catalag entry.
+ if self.getParentNode() :
+ self.reindexObject()
def _getAfterResizingHooks(self) :
return getattr(self, '_hiddenForAnon', False)
-# security.declareProtected(AccessContentsInformation, 'position')
-# def position(self):
-# " returns position of self in parent container "
-# parent = self.getParentNode()
-# position = parent.getObjectPosition(self.getId())
-# return position
-
-
#
# SimpleItem interface
#
InitializeClass(Photo)
-PhotoFactory = Factory(Photo)
\ No newline at end of file
+class _PhotoFactory(Factory) :
+ def __call__(self, *args, **kw):
+ if not kw.has_key('thumb_height') or not kw.has_key('thumb_width') :
+ utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+ portal = utool.getPortalObject()
+ size = portal.getProperty('thumb_size')
+ kw.update({'thumb_height' : size, 'thumb_width' : size })
+ return self._callable(*args, **kw)
+
+
+PhotoFactory = _PhotoFactory(Photo)
\ No newline at end of file