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 import IDynamicType
-#from Products.CMFCore.interfaces.Contentish import Contentish as z2IContentish
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
""" Photo CMF aware """
implements(IPhoto, IContentish, IWriteLock, IDynamicType)
- #__implements__ = (z2IContentish, IWriteLock, DynamicType.__implements__)
meta_type = BasePhoto.meta_type
manage_options = BasePhoto.manage_options
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) :
@memoizedmethod()
def DateTimeOriginal(self) :
""" return DateTimeOriginal exif tag value or created """
- dto = self.getXmpValue('exif:DateTimeOriginal')
+ dto = self.getXmpValue('exif:DateTimeOriginal') or self.getXmpValue('xmp:CreateDate')
if dto :
return DateTime(dto)
else :
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