[Erp5-report] r20763 - /erp5/trunk/products/ERP5/Document/Image.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 23 11:46:43 CEST 2008
Author: nicolas
Date: Wed Apr 23 11:46:42 2008
New Revision: 20763
URL: http://svn.erp5.org?rev=20763&view=rev
Log:
Get Images Sizes from portal_preferences
Modified:
erp5/trunk/products/ERP5/Document/Image.py
Modified: erp5/trunk/products/ERP5/Document/Image.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Image.py?rev=20763&r1=20762&r2=20763&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Image.py (original)
+++ erp5/trunk/products/ERP5/Document/Image.py Wed Apr 23 11:46:42 2008
@@ -41,6 +41,7 @@
from DocumentTemplate.DT_Util import html_quote
from Products.CMFCore.utils import _setCacheHeaders, _ViewEmulator
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
+from Products.ERP5Type.Cache import CachingMethod
from Products.ERP5.Document.File import File
from Products.ERP5.Document.Document import ConversionError
@@ -50,23 +51,10 @@
from zLOG import LOG
-# XXX This should be move to preferences
-defaultdisplays = {'nano' : (25,25),
- 'micro' : (64,64),
- 'thumbnail' : (128,128),
- 'xsmall' : (200,200),
- 'small' : (320,320),
- 'medium' : (480,480),
- 'large' : (768,768),
- 'xlarge' : (1024,1024)
- }
-
-def getSizeFromImageDisplay(image_display):
- """Retuns the size for this image display, or None if this image display name
- is not known.
- """
- return defaultdisplays.get(image_display)
-
+
+default_displays_id_list = ('nano', 'micro', 'thumbnail',
+ 'xsmall', 'small', 'medium',
+ 'large', 'large', 'xlarge',)
default_formats = ['jpg', 'jpeg', 'png', 'gif', 'pnm', 'ppm']
@@ -206,7 +194,7 @@
# display may be set from a cookie.
if (display is not None or resolution is not None or quality!=75 or format != ''\
- or frame is not None) and defaultdisplays.has_key(display):
+ or frame is not None) and self.getSizeFromImageDisplay(display):
if not self.hasConversion(display=display, format=format,
quality=quality, resolution=resolution,
frame=frame):
@@ -262,15 +250,15 @@
security.declareProtected('Access contents information', 'displayIds')
def displayIds(self, exclude=('thumbnail',)):
"""Return list of display Ids."""
- ids = defaultdisplays.keys()
+ id_list = list(default_displays_id_list)
# Exclude specified displays
if exclude:
- for id in exclude:
- if id in ids:
- ids.remove(id)
+ for id in exclude:
+ if id in id_list:
+ id_list.remove(id)
# Sort by desired photo surface area
- ids.sort(lambda x,y,d=defaultdisplays: cmp(d[x][0]*d[x][1], d[y][0]*d[y][1]))
- return ids
+ id_list.sort(lambda x,y,d=self.getSizeFromImageDisplay: cmp(d(x)[0]*d(x)[1], d(y)[0]*d(y)[1]))
+ return id_list
security.declareProtected('Access contents information', 'displayLinks')
def displayLinks(self, exclude=('thumbnail',)):
@@ -293,8 +281,8 @@
else:
(photo_width, photo_height, bytes, age) = (None, None, None, None)
displays.append({'id': id,
- 'width': defaultdisplays[id][0],
- 'height': defaultdisplays[id][1],
+ 'width': self.getSizeFromImageDisplay(id)[0],
+ 'height': self.getSizeFromImageDisplay(id)[1],
'photo_width': photo_width,
'photo_height': photo_height,
'bytes': bytes,
@@ -312,7 +300,7 @@
if format in ('text', 'txt', 'html', 'base_html', 'stripped-html'):
return None, None
if (display is not None or resolution is not None or quality != 75 or format != ''\
- or frame is not None) and defaultdisplays.has_key(display):
+ or frame is not None) and self.getSizeFromImageDisplay(display):
if not self.hasConversion(display=display, format=format,
quality=quality, resolution=resolution,
frame=frame):
@@ -338,7 +326,7 @@
# display may be set from a cookie (?)
if (display is not None or resolution is not None or quality != 75 or format != ''\
- or frame is not None) and defaultdisplays.has_key(display):
+ or frame is not None) and self.getSizeFromImageDisplay(display):
if not self.hasConversion(display=display, format=format,
quality=quality, resolution=resolution,
frame=frame):
@@ -421,7 +409,7 @@
if display is None:
(width, height) = (self.getWidth(), self.getHeight())
else:
- (width, height) = defaultdisplays[display]
+ (width, height) = self.getSizeFromImageDisplay(display)
if width == 0 and height == 0:
width = self.getWidth()
height = self.getHeight()
@@ -467,6 +455,26 @@
"""At least see if it *might* be valid."""
return self.getWidth() and self.getHeight() and self.getData() and self.getContentType()
+ security.declareProtected('View', 'getSizeFromImageDisplay')
+ def getSizeFromImageDisplay(self, image_display):
+ """Retuns the size for this image display, or None if this image display name
+ is not known.
+ """
+ def getDefaultDisplayAsDict():
+ preference_tool = self.getPortalObject().portal_preferences
+ defaultdisplays = dict()
+ for id in default_displays_id_list:
+ height_preference = 'preferred_%s_image_height' % (id)
+ width_preferece = 'preferred_%s_image_width' % (id)
+ size_list = (preference_tool.getPreference(height_preference),
+ preference_tool.getPreference(width_preferece))
+ defaultdisplays.setdefault(id, size_list)
+ return defaultdisplays
+ Cached_getDefaultDisplayAsDict = CachingMethod(getDefaultDisplayAsDict,
+ id='Image_getDefaultDisplayAsDict',
+ cache_factory='erp5_ui_long')
+ defaultdisplays = Cached_getDefaultDisplayAsDict()
+ return defaultdisplays.get(image_display)
#
# FTP/WebDAV support
More information about the Erp5-report
mailing list