allow control of question group selection in subclass; provide principal/person also if request is not given
This commit is contained in:
parent
dbc91c7e6f
commit
146b1c78aa
2 changed files with 19 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2015 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -46,6 +46,9 @@ class Questionnaire(AdapterBase, Questionnaire):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def questionGroups(self):
|
def questionGroups(self):
|
||||||
|
return self.getQuestionGroups()
|
||||||
|
|
||||||
|
def getQuestionGroups(self):
|
||||||
return [adapted(c) for c in self.context.getChildren()]
|
return [adapted(c) for c in self.context.getChildren()]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -24,6 +24,7 @@ from persistent.mapping import PersistentMapping
|
||||||
from zope import interface, component
|
from zope import interface, component
|
||||||
from zope.app.principalannotation import annotations
|
from zope.app.principalannotation import annotations
|
||||||
from zope.app.security.interfaces import IAuthentication, PrincipalLookupError
|
from zope.app.security.interfaces import IAuthentication, PrincipalLookupError
|
||||||
|
from zope.app.security.interfaces import IUnauthenticatedPrincipal
|
||||||
from zope.component import adapts
|
from zope.component import adapts
|
||||||
from zope.interface import implements
|
from zope.interface import implements
|
||||||
from zope.cachedescriptors.property import Lazy
|
from zope.cachedescriptors.property import Lazy
|
||||||
|
@ -44,6 +45,7 @@ from loops.predicate import RelationAdapter
|
||||||
from loops.predicate import PredicateInterfaceSourceList
|
from loops.predicate import PredicateInterfaceSourceList
|
||||||
from loops.security.common import assignOwner, removeOwner, allowEditingForOwner
|
from loops.security.common import assignOwner, removeOwner, allowEditingForOwner
|
||||||
from loops.security.common import assignPersonRole, removePersonRole
|
from loops.security.common import assignPersonRole, removePersonRole
|
||||||
|
from loops.security.common import getCurrentPrincipal
|
||||||
from loops.security.interfaces import ISecuritySetter
|
from loops.security.interfaces import ISecuritySetter
|
||||||
from loops.type import TypeInterfaceSourceList
|
from loops.type import TypeInterfaceSourceList
|
||||||
from loops import util
|
from loops import util
|
||||||
|
@ -59,7 +61,10 @@ def getPersonForUser(context, request=None, principal=None):
|
||||||
if context is None:
|
if context is None:
|
||||||
return None
|
return None
|
||||||
if principal is None:
|
if principal is None:
|
||||||
|
if request is not None:
|
||||||
principal = getattr(request, 'principal', None)
|
principal = getattr(request, 'principal', None)
|
||||||
|
else:
|
||||||
|
principal = getPrincipal(context)
|
||||||
if principal is None:
|
if principal is None:
|
||||||
return None
|
return None
|
||||||
loops = context.getLoopsRoot()
|
loops = context.getLoopsRoot()
|
||||||
|
@ -74,6 +79,15 @@ def getPersonForUser(context, request=None, principal=None):
|
||||||
return pa.get(util.getUidForObject(loops))
|
return pa.get(util.getUidForObject(loops))
|
||||||
|
|
||||||
|
|
||||||
|
def getPrincipal(context):
|
||||||
|
principal = getCurrentPrincipal()
|
||||||
|
if principal is not None:
|
||||||
|
if IUnauthenticatedPrincipal.providedBy(principal):
|
||||||
|
return None
|
||||||
|
return principal
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class Person(AdapterBase, BasePerson):
|
class Person(AdapterBase, BasePerson):
|
||||||
""" typeInterface adapter for concepts of type 'person'.
|
""" typeInterface adapter for concepts of type 'person'.
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Add table
Reference in a new issue