Support for more arguments

This commit is contained in:
Roland Hedberg
2014-12-01 22:35:06 +01:00
parent 52205feb20
commit a941f1c3f0

View File

@@ -14,7 +14,7 @@ from saml2.entity import Entity
from saml2.mdstore import destinations
from saml2.profile import paos, ecp
from saml2.saml import NAMEID_FORMAT_TRANSIENT
from saml2.samlp import AuthnQuery
from saml2.samlp import AuthnQuery, RequestedAuthnContext
from saml2.samlp import NameIDMappingRequest
from saml2.samlp import AttributeQuery
from saml2.samlp import AuthzDecisionQuery
@@ -252,6 +252,26 @@ class Base(Entity):
else:
args["provider_name"] = self._my_name()
# Allow argument values either as class instances or as dictionaries
_msg = AuthnRequest()
for param in ["scoping", "requested_authn_context", "conditions",
"subject", "scoping"]:
try:
_item = kwargs[param]
except KeyError:
pass
else:
del kwargs[param]
# either class instance or argument dictionary
if isinstance(_item, _msg.child_class(param)):
args[param] = _item
elif isinstance(_item, dict):
args[param] = RequestedAuthnContext(**_item)
else:
raise ValueError("%s or wrong type expected %s" % (_item,
param))
try:
args["name_id_policy"] = kwargs["name_id_policy"]
del kwargs["name_id_policy"]