[Erp5-report] r37212 ivan - in /erp5/trunk/products/ERP5/Document: Document.py Image.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 21 09:55:17 CEST 2010


Author: ivan
Date: Wed Jul 21 09:55:09 2010
New Revision: 37212

URL: http://svn.erp5.org?rev=37212&view=rev
Log:
Unhard code default image quality and make it possible to specify in preferences. Fall back to constant value as before if preference is not specified.

Modified:
    erp5/trunk/products/ERP5/Document/Document.py
    erp5/trunk/products/ERP5/Document/Image.py

Modified: erp5/trunk/products/ERP5/Document/Document.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Document.py?rev=37212&r1=37211&r2=37212&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Document.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Document.py [utf8] Wed Jul 21 09:55:09 2010
@@ -77,8 +77,8 @@ VALID_IMAGE_FORMAT_LIST = ('jpg', 'jpeg'
 DEFAULT_DISPLAY_ID_LIST = ('nano', 'micro', 'thumbnail',
                             'xsmall', 'small', 'medium',
                             'large', 'large', 'xlarge',)
-
-DEFAULT_QUALITY = 75
+# default image quality
+DEFAULT_IMAGE_QUALITY = 75
 
 DEFAULT_CONTENT_TYPE = 'text/html'
 

Modified: erp5/trunk/products/ERP5/Document/Image.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Image.py?rev=37212&r1=37211&r2=37212&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Image.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/Image.py [utf8] Wed Jul 21 09:55:09 2010
@@ -44,7 +44,7 @@ from Products.ERP5Type import Permission
 from Products.ERP5Type.Utils import fill_args_from_request
 from Products.ERP5.Document.File import File
 from Products.ERP5.Document.Document import Document, ConversionError,\
-                     VALID_TEXT_FORMAT_LIST, DEFAULT_DISPLAY_ID_LIST, DEFAULT_QUALITY, _MARKER
+                     VALID_TEXT_FORMAT_LIST, DEFAULT_DISPLAY_ID_LIST, DEFAULT_IMAGE_QUALITY, _MARKER
 from os.path import splitext
 from OFS.Image import Image as OFSImage
 from OFS.Image import getImageInfo
@@ -185,7 +185,7 @@ class Image(TextConvertableMixin, File, 
 
   security.declareProtected(Permissions.View, 'tag')
   def tag(self, display=None, height=None, width=None, cookie=0,
-                alt=None, css_class=None, format=None, quality=DEFAULT_QUALITY,
+                alt=None, css_class=None, format=None, quality=None,
                 resolution=None, frame=None, **kw):
     """Return HTML img tag."""
     self._upradeImage()
@@ -193,7 +193,8 @@ class Image(TextConvertableMixin, File, 
     # Get cookie if display is not specified.
     if display is None:
       display = self.REQUEST.cookies.get('display', None)
-
+    if quality is None:
+      quality = self.getDefaultImageQuality(format)
     # display may be set from a cookie.
     image_size = self.getSizeFromImageDisplay(display)
     convert_kw = dict(format=format, quality=quality, resolution=resolution,
@@ -268,10 +269,12 @@ class Image(TextConvertableMixin, File, 
     return links
 
   security.declareProtected(Permissions.AccessContentsInformation, 'displayMap')
-  def displayMap(self, exclude=None, format=None, quality=DEFAULT_QUALITY,\
+  def displayMap(self, exclude=None, format=None, quality=None,\
                                                               resolution=None):
     """Return list of displays with size info."""
     displays = []
+    if quality is None:
+      quality = self.getDefaultImageQuality(format)
     for id in self.displayIds(exclude):
       if self._isGenerated(id, format=format, quality=quality,\
                                                         resolution=resolution):
@@ -331,7 +334,7 @@ class Image(TextConvertableMixin, File, 
     image_size = self.getSizeFromImageDisplay(kw.get('display'))
     # store all keys usefull to convert or resize an image
     # 'display' parameter can be discarded
-    convert_kw = {'quality': kw.get('quality', DEFAULT_QUALITY),
+    convert_kw = {'quality': kw.get('quality', self.getDefaultImageQuality(format)),
                   'resolution': kw.get('resolution'),
                   'frame': kw.get('frame'),
                   'image_size': image_size,
@@ -406,15 +409,17 @@ class Image(TextConvertableMixin, File, 
     """Return raw photo data for given display."""
     width, height = self._getAspectRatioSize(*image_size)
     if ((width, height) == image_size or (width, height) == (0, 0))\
-       and quality == DEFAULT_QUALITY and resolution is None and frame is None\
+       and quality == self.getDefaultImageQuality(format) and resolution is None and frame is None\
        and not format:
       # No resizing, no conversion, return raw image
       return self.getData()
     return self._resize(quality, width, height, format, resolution, frame)
 
-  def _makeDisplayPhoto(self, format=None, quality=DEFAULT_QUALITY,
+  def _makeDisplayPhoto(self, format=None, quality=None,
                                  resolution=None, frame=None, image_size=None):
     """Create given display."""
+    if quality is None:
+      quality = self.getDefaultImageQuality(format)
     width, height = image_size
     base, ext = splitext(self.id)
     id = '%s_%s_%s.%s'% (base, width, height, ext,)
@@ -470,3 +475,11 @@ class Image(TextConvertableMixin, File, 
     """
     File.PUT(self, REQUEST, RESPONSE)
     self._update_image_info()
+
+  def getDefaultImageQuality(self, format=None):
+    """
+    Get default image quality for a format.
+    """
+    preference_tool = self.getPortalObject().portal_preferences
+    quality = preference_tool.getPreference('preferred_image_quality', DEFAULT_IMAGE_QUALITY)
+    return quality




More information about the Erp5-report mailing list