X-Git-Url: https://scm.cri.ensmp.fr/git/Portfolio.git/blobdiff_plain/ce41148a886372e66942d71778d9e184eebc7fc0..393723570b65dbabd8d845d498d080c3f75272b3:/skins/getSelectionPhotosInfos.py 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