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.mdstore import destinations
from saml2.profile import paos, ecp from saml2.profile import paos, ecp
from saml2.saml import NAMEID_FORMAT_TRANSIENT 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 NameIDMappingRequest
from saml2.samlp import AttributeQuery from saml2.samlp import AttributeQuery
from saml2.samlp import AuthzDecisionQuery from saml2.samlp import AuthzDecisionQuery
@@ -252,6 +252,26 @@ class Base(Entity):
else: else:
args["provider_name"] = self._my_name() 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: try:
args["name_id_policy"] = kwargs["name_id_policy"] args["name_id_policy"] = kwargs["name_id_policy"]
del kwargs["name_id_policy"] del kwargs["name_id_policy"]