diff options
-rw-r--r-- | src/saml2/client_base.py | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/src/saml2/client_base.py b/src/saml2/client_base.py index 15e3b0ec..f90c4378 100644 --- a/src/saml2/client_base.py +++ b/src/saml2/client_base.py @@ -913,28 +913,21 @@ class Base(Entity): :return: A URL """ - args = {"entityID": entity_id} - for key in ["policy", "returnIDParam"]: - try: - args[key] = kwargs[key] - except KeyError: - pass - - try: - args["return"] = kwargs["return_url"] - except KeyError: - try: - args["return"] = kwargs["return"] - except KeyError: - pass - - if "isPassive" in kwargs: - if kwargs["isPassive"]: - args["isPassive"] = "true" - else: - args["isPassive"] = "false" + args = { + "entityID": entity_id, + "policy": kwargs.get("policy"), + "returnIDParam": kwargs.get("returnIDParam"), + "return": kwargs.get("return_url") or kwargs.get("return"), + "isPassive": ( + None + if "isPassive" not in kwargs.keys() + else "true" + if kwargs.get("isPassive") + else "false" + ), + } - params = urlencode(args) + params = urlencode({k: v for k, v in args.items() if v}) return "%s?%s" % (url, params) @staticmethod |