X-Git-Url: https://scm.cri.mines-paristech.fr/git/Plinn.git/blobdiff_plain/543e3e73e8c99ad643adca3522146ae36a7a24a8..f12db319e996bb1c96e2282cc9a51191a631333a:/utils.py diff --git a/utils.py b/utils.py index 6261982..de68f22 100755 --- a/utils.py +++ b/utils.py @@ -230,7 +230,7 @@ def getPreferredLanguages(context): security.declarePublic('getBestTranslationLanguage') def getBestTranslationLanguage(langs, context): """ returns best translation language according - availables languages (param langs) + to available languages (param langs) and user preferences (retrieves by context) """ request = getattr(context, 'REQUEST', None) @@ -261,10 +261,12 @@ def getAdapterByInterface(ob, dotted_name, default=_marker) : else : return default +security.declarePublic('encodeQuopriEmail') def encodeQuopriEmail(name, email) : qpName = encodestring(name).replace('=\n', '') return '''"=?utf-8?q?%s?=" <%s>''' % (qpName, email) +security.declarePublic('encodeMailHeader') def encodeMailHeader(content) : s = encodestring(content).replace('=\n', '') s = s.replace('_', '=5F') @@ -317,4 +319,20 @@ def _sudo(func, userid=None) : raise e return ret - \ No newline at end of file + +security.declarePublic('searchContentsWithLocalRolesForAuthenticatedUser') +def searchContentsWithLocalRolesForAuthenticatedUser(**kw): + mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') + ctool = getUtilityByInterfaceName('Products.CMFCore.interfaces.ICatalogTool') + member = mtool.getAuthenticatedMember() + userid = member.getId() + userAndGroups = ['user:%s' % userid] + + getGroups = getattr(member, 'getGroups', None) + if getGroups is not None : + for group in getGroups(): + userAndGroups.append('user:'+group) + + kw[ 'allowedRolesAndUsers' ] = userAndGroups + + return ctool.unrestrictedSearchResults(**kw)