+++ /dev/null
-# -*- coding: utf-8 -*-
-############################################################
-# Copyright © 2008 Benoît PIN <benoit.pin@ensmp.fr> #
-# Plinn - http://plinn.org #
-# #
-# This program is free software; you can redistribute it #
-# and/or modify it under the terms of the Creative Commons #
-# "Attribution-Noncommercial 2.0 Generic" #
-# http://creativecommons.org/licenses/by-nc/2.0/ #
-############################################################
-"""
-Global utilities
-
-
-
-"""
-
-from AccessControl import ModuleSecurityInfo
-from zope.i18n import translate as i18ntranslate
-from zope.i18nmessageid import MessageFactory
-from zope.globalrequest import getRequest
-from Products.CMFCore.utils import getUtilityByInterfaceName
-from Products.Plinn.utils import _sudo
-import transaction
-
-
-security = ModuleSecurityInfo('Products.photoprint.utils')
-
-security.declarePublic('translate')
-def translate(msgid, mapping=None, default=None) :
- """ traduction dans le domaine photoprint """
- return i18ntranslate(msgid, domain='photoprint', mapping=mapping, context=getRequest(), default=default)
-
-security.declarePublic('Message')
-Message = _ = MessageFactory('photoprint')
-
-security.declarePublic('grantAccess')
-def grantAccess(collectionId, password, confirm, memberId) :
- utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
- mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
- portal = utool.getPortalObject()
-
- data = portal.private_collections.data
- lines = filter(None, [l.strip() for l in data.split('\n')])
- assert len(lines) % 3 == 0
- collecInfos = {}
- for i in xrange(0, len(lines), 3) :
- collecInfos[lines[i]] = {'pw' : lines[i+1],
- 'path' : lines[i+2]}
-
- if not collecInfos.has_key(collectionId) :
- transaction.abort()
- return _('Wrong private collection identifier.')
- elif password != confirm :
- transaction.abort()
- return _("Collection's password does not match confirmation.")
- else :
- if collecInfos[collectionId]['pw'] != password :
- transaction.abort()
- return _("Wrong collection's password.")
- else :
- collec = portal.unrestrictedTraverse(collecInfos[collectionId]['path'])
- def do() :
- mtool.setLocalRoles(collec, [memberId], 'Reader')
-
- _sudo(do)