From 51e6b120327d5cb8e255fc78f95df2b17f0131de Mon Sep 17 00:00:00 2001 From: hplattner Date: Thu, 11 Oct 2012 10:26:30 +0200 Subject: [PATCH 1/3] add pydevproject files to gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 3bec50f..8263b7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ *.pyc ajax/dojo/* +.project +.pydevproject +.settings + From 9e8ba764613d422a10db86f62462f2528bf1c907 Mon Sep 17 00:00:00 2001 From: hplattner Date: Mon, 14 Jan 2013 12:05:29 +0100 Subject: [PATCH 2/3] fix: browserView getData setting for boolean field --- composer/schema/field.py | 2 +- composer/schema/instance.py | 2 +- util/date.py | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/composer/schema/field.py b/composer/schema/field.py index e000e02..cc9dd58 100644 --- a/composer/schema/field.py +++ b/composer/schema/field.py @@ -334,7 +334,7 @@ class EmailFieldInstance(FieldInstance): class BooleanFieldInstance(FieldInstance): def marshall(self, value): - return value + return bool(value) def display(self, value): #return value and _(u'Yes') or _(u'No') diff --git a/composer/schema/instance.py b/composer/schema/instance.py index 1c5ffbf..125fffa 100644 --- a/composer/schema/instance.py +++ b/composer/schema/instance.py @@ -55,7 +55,7 @@ class Instance(BaseInstance): fi = f.getFieldInstance(self, context=kw.get('context'), request=kw.get('request')) name = f.name - value = getattr(self.context, name) or fi.default + value = getattr(self.context, name, fi.default) if mode in ('view', 'preview'): value = fi.display(value) else: diff --git a/util/date.py b/util/date.py index 0d112a7..74012a1 100644 --- a/util/date.py +++ b/util/date.py @@ -65,3 +65,14 @@ def year(d=None): if d is None: d = datetime.today() return d.year + +def month(d=None): + if d is None: + d = datetime.today() + return d.month + +def day(d=None): + if d is None: + d = datetime.today() + return d.day + From e5a09ed436d311e6b4f598c133a2e1967719cef0 Mon Sep 17 00:00:00 2001 From: hplattner Date: Tue, 29 Sep 2015 11:42:42 +0200 Subject: [PATCH 3/3] add fill option to media asset resize function --- media/asset.py | 13 +++++++------ media/piltransform.py | 12 ++++++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/media/asset.py b/media/asset.py index ed3e3db..5af5514 100644 --- a/media/asset.py +++ b/media/asset.py @@ -29,11 +29,9 @@ from logging import getLogger import mimetypes import os, re, sys -from zope import component from zope.interface import implements -from cybertools.media.interfaces import IMediaAsset, IFileTransform +from cybertools.media.interfaces import IMediaAsset from cybertools.media.piltransform import PILTransform -from cybertools.storage.filesystem import FileSystemStorage TRANSFORM_STATEMENT = re.compile(r"\s*(\+?)([\w]+[\w\d]*)\(([^\)]*)\)\s*") @@ -41,13 +39,16 @@ DEFAULT_FORMATS = { "image": "image/jpeg" } + def parseTransformStatements(txStr): """ Parse statements in transform chain strings.""" statements = TRANSFORM_STATEMENT.findall(txStr) return statements + def getMimeBasetype(mimetype): - return mimetype.split("/",1)[0] + return mimetype.split("/", 1)[0] + def getMimetypeExt(mimetype): exts = mimetypes.guess_all_extensions(mimetype) @@ -74,9 +75,9 @@ class MediaAssetFile(object): getLogger('cybertools.media.asset.MediaAssetFile').warn( 'Media asset directory %r not found.' % path) self.transform() - #return self.getOriginalData() + # return self.getOriginalData() f = open(path, 'rb') - data =f.read() + data = f.read() f.close() return data diff --git a/media/piltransform.py b/media/piltransform.py index a040103..fa0dd40 100644 --- a/media/piltransform.py +++ b/media/piltransform.py @@ -93,7 +93,7 @@ class PILTransform(object): box = (left, upper, right, lower) self.im = self.im.crop(box) - def resize(self, width, height=None): + def resize(self, width, height=None, fill=False): if self.im is None: return if not height: @@ -101,7 +101,15 @@ class PILTransform(object): ratio = float(ow) / float(oh) height = int(round(float(width) / ratio)) dims = (width, height) - self.im.thumbnail(dims, Image.ANTIALIAS) + if fill: + image = self.im + image.thumbnail(dims, Image.ANTIALIAS) + new = Image.new('RGBA', dims, (255, 255, 255, 0)) #with alpha + new.paste(image,((dims[0] - image.size[0]) / 2, + (dims[1] - image.size[1]) / 2)) + self.im = new + return new + return self.im.thumbnail(dims, Image.ANTIALIAS) def save(self, path, mimetype): if self.im is None: