From: Benoît Pin Date: Thu, 28 Aug 2014 12:33:48 +0000 (+0200) Subject: Ajout des vignettes après coup pour la sélection courante. X-Git-Url: https://scm.cri.ensmp.fr/git/Portfolio.git/commitdiff_plain/393723570b65dbabd8d845d498d080c3f75272b3?ds=sidebyside;hp=--cc Ajout des vignettes après coup pour la sélection courante. --- 393723570b65dbabd8d845d498d080c3f75272b3 diff --git a/skins/getSelectionPhotosInfos.py b/skins/getSelectionPhotosInfos.py new file mode 100644 index 0000000..80c52f9 --- /dev/null +++ b/skins/getSelectionPhotosInfos.py @@ -0,0 +1,65 @@ +##parameters=pho_start=None, batch_size=None +from Products.CMFCore.utils import getToolByName +from Products.Plinn.PloneMisc import Batch +from Products.Portfolio.utils import translate +def _(message) : return translate(message, context).encode('utf-8') + +uidh = getToolByName(context, 'portal_uidhandler') +utool = getToolByName(context, 'portal_url') +pptool = getToolByName(context, 'portal_photo_print', None) +portal = utool.getPortalObject() +portal_url = utool() +portalDepth = len(portal.getPhysicalPath()) +req = context.REQUEST +toUrl = req.physicalPathToURL + +# check if a lightbox is currently selected +lightboxpath = req.SESSION.get('lightboxpath', None) +selectionIsLightbox = False +if lightboxpath is None : + selection = req.SESSION.get('objects_selection', []) +else : + try : + lightbox = portal.restrictedTraverse(lightboxpath) + selection = lightbox.getUidList() + selectionIsLightbox = True + except: + req.SESSION.set('lightboxpath', None) + selection = req.SESSION.get('objects_selection', []) + + +start = pho_start if pho_start is not None else 0 +brains = [uidh.getBrain(uid) for uid in selection] +batch = Batch(brains, batch_size, start, quantumleap=1) +cart = req.SESSION.get('cart', None) + +infos = [] +for index, b in enumerate(batch) : + path = b.getPath().split('/') + path.insert(portalDepth, 'selectioncontext') + p = b.getObject() + if pptool : + buyable = bool(pptool.getPrintingOptionsFor(p)) + if cart and cart.locked : + buyable = False + else : + buyable = False + + d = {'href': toUrl('/'.join(path)) + ,'thumbUrl' : '%s/getThumbnail' % b.getURL() + ,'thumbSize' : b.getThumbnailSize + ,'title' : ('%s - %s' % (b.Title, b.Description)).strip(' -') + ,'cmf_uid':b.cmf_uid + ,'className':'' + ,'buyable' : buyable + ,'o':b + } + infos.append(d) + +features = {} +features['del'] = lambda b : '%s/remove_to_selection' % b.getURL() +features['cart'] = lambda b : '%s/get_slide_buyable_items' % b.getURL() + +return {'infos' : infos, + 'batch' : batch, + 'features' : features} \ No newline at end of file diff --git a/skins/portfolio_thumbnails_tail.py b/skins/portfolio_thumbnails_tail.py index 9765629..8e77386 100644 --- a/skins/portfolio_thumbnails_tail.py +++ b/skins/portfolio_thumbnails_tail.py @@ -8,4 +8,7 @@ elif container_type == 'lightbox' : options.update(context.getLightboxPhotosInfos(context, pho_start=start, batch_size=size)) +elif container_type == 'selection' : + options.update(context.getSelectionPhotosInfos(pho_start=start, + batch_size=size)) return context.portfolio_thumbnails_tail_template(**options) \ No newline at end of file diff --git a/skins/selection_view.py b/skins/selection_view.py index ecde5d9..aec9043 100755 --- a/skins/selection_view.py +++ b/skins/selection_view.py @@ -79,6 +79,8 @@ options = {} options['infos'] = infos options['batch'] = batch options['features'] = features + +options['container_type'] = 'selection' options['selectionIsLightbox'] = selectionIsLightbox options['breadcrumbs'] = breadcrumbs