X-Git-Url: https://scm.cri.mines-paristech.fr/git/Portfolio.git/blobdiff_plain/393723570b65dbabd8d845d498d080c3f75272b3..42f8aecd3f2b63a3929bb3a0baf420c6bd47b05f:/skins/selection_view.py diff --git a/skins/selection_view.py b/skins/selection_view.py index aec9043..393e86b 100755 --- a/skins/selection_view.py +++ b/skins/selection_view.py @@ -1,92 +1,96 @@ ##parameters= -from Products.CMFCore.utils import getToolByName -from Products.Plinn.PloneMisc import Batch +from Products.CMFCore.utils import getUtilityByInterfaceName 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) +req = context.REQUEST +utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') portal = utool.getPortalObject() portal_url = utool() -portalDepth = len(portal.getPhysicalPath()) -req = context.REQUEST -toUrl = req.physicalPathToURL + +form = req.form +fg = form.get +sd = context.session_data_manager.getSessionData(create = 1) # check if a lightbox is currently selected -lightboxpath = req.SESSION.get('lightboxpath', None) +lightboxpath = sd.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', []) +if lightboxpath is not None : + try : + lightbox = portal.restrictedTraverse(lightboxpath) + selectionIsLightbox = True + except: + sd['lightboxpath'] = None -start = req.get('b_start', 0) -brains = [uidh.getBrain(uid) for uid in selection] -batch = Batch(brains, context.default_batch_size, start, orphan=1, quantumleap=1)#, b_start_str='pho_start') -cart = req.SESSION.get('cart', None) +# form processing +if fg('delete.x') or form.has_key('delete') : + selection = sd.get('objects_selection', []) + selDict = sd.get('objects_selection_dict', {}) -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() + # get selection from session data or from selected lightbox + if not selectionIsLightbox : + selection = sd.get('objects_selection', []) + else : + try : + lightbox = portal.restrictedTraverse(lightboxpath) + selection = lightbox.getUidList() + except KeyError : + sd['lightboxpath'] = None + selection = sd.get('objects_selection', []) + + # remove items from selection + rmCpt = 0 + for uid in [int(uid) for uid in fg('uids', [])] : + if selDict.has_key(uid) : + del selDict[uid] + selection.remove(uid) + if selectionIsLightbox : + lightbox.remove(uid) + rmCpt = rmCpt + 1 + sd['objects_selection'] = selection + sd['objects_selection_dict'] = selDict + + # ui feedback message + if rmCpt : + if rmCpt == 1 : + msg = _('Photo deselected.') + else : + msg = _('Deselected photos.') + else : + msg = _('Nothing to deselect.') + + if fg('ajax') : + req.RESPONSE.setHeader('Content-Type', 'text/xml;;charset=utf-8') + return '%s' % msg + else : + context.setStatus(True, msg) # breadcrumbs customization if selectionIsLightbox : - lastBcTitle = '%s (%s)' % (_('My selection'), lightbox.title_or_id()) + lastBcTitle = '%s (%s)' % (_('My selection'), lightbox.title_or_id()) else : - lastBcTitle = _('My selection') + lastBcTitle = _('My selection') + breadcrumbs = [ - { 'id' : 'root' - , 'title' : portal.title - , 'url' : portal_url}, - - {'id' : 'selection_view' - ,'title' : lastBcTitle - , 'url' : '%s/selection_view' % portal_url} - ] + { 'id' : 'root' + , 'title' : portal.title + , 'url' : portal_url}, + + {'id' : 'selection_view' + ,'title' : lastBcTitle + , 'url' : '%s/selection_view' % portal_url} + ] options = {} -options['infos'] = infos -options['batch'] = batch -options['features'] = features - +options.update(context.getSelectionPhotosInfos()) options['container_type'] = 'selection' options['selectionIsLightbox'] = selectionIsLightbox options['breadcrumbs'] = breadcrumbs if selectionIsLightbox : - options['lightbox'] = lightbox + options['lightbox'] = lightbox else : - options['selectionName'] = 'not saved yet' + options['selectionName'] = 'not saved yet' return context.selection_view_template(**options)