summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Sklikas <nsklikas@admin.grnet.gr>2020-05-28 12:55:40 +0300
committerNikos Sklikas <nsklikas@admin.grnet.gr>2020-05-28 13:00:06 +0300
commitbb01758480be04f8a8083310dca0f7d2bf8b5547 (patch)
tree0ef76e1f1b748b6209f2a7ac839254a6f1b78a0e
parent531f6bd1eac3488987be0e153d847ff59f5bbfbf (diff)
downloadpysaml2-bb01758480be04f8a8083310dca0f7d2bf8b5547.tar.gz
Requested fixes
-rw-r--r--src/saml2/client_base.py104
1 files changed, 51 insertions, 53 deletions
diff --git a/src/saml2/client_base.py b/src/saml2/client_base.py
index a6a2c871..15786dae 100644
--- a/src/saml2/client_base.py
+++ b/src/saml2/client_base.py
@@ -381,60 +381,58 @@ class Base(Entity):
item = sp_type.SPType(text=conf_sp_type)
extensions.add_extension_element(item)
- if requested_attributes:
- requested_attributes += \
- self.config.getattr('requested_attributes', 'sp')
- else:
- requested_attributes = \
- self.config.getattr('requested_attributes', 'sp')
-
- if requested_attributes:
- if not extensions:
- extensions = Extensions()
+ requested_attrs = (
+ requested_attributes
+ or self.config.getattr('requested_attributes', 'sp')
+ or []
+ )
+
+ if not extensions:
+ extensions = Extensions()
+
+ items = []
+ for attr in requested_attrs:
+ friendly_name = attr.get('friendly_name')
+ name = attr.get('name')
+ name_format = attr.get('name_format')
+ is_required = str(attr.get('required', False)).lower()
+
+ if not name and not friendly_name:
+ raise ValueError(
+ "Missing required attribute: '{}' or '{}'".format(
+ 'name', 'friendly_name'))
+
+ if not name:
+ for converter in self.config.attribute_converters:
+ try:
+ name = converter._to[friendly_name.lower()]
+ except KeyError:
+ continue
+ else:
+ if not name_format:
+ name_format = converter.name_format
+ break
- items = []
- for attr in requested_attributes:
- friendly_name = attr.get('friendly_name')
- name = attr.get('name')
- name_format = attr.get('name_format')
- is_required = str(attr.get('required', False)).lower()
-
- if not name and not friendly_name:
- raise ValueError(
- "Missing required attribute: '{}' or '{}'".format(
- 'name', 'friendly_name'))
-
- if not name:
- for converter in self.config.attribute_converters:
- try:
- name = converter._to[friendly_name.lower()]
- except KeyError:
- continue
- else:
- if not name_format:
- name_format = converter.name_format
- break
-
- if not friendly_name:
- for converter in self.config.attribute_converters:
- try:
- friendly_name = converter._fro[name.lower()]
- except KeyError:
- continue
- else:
- if not name_format:
- name_format = converter.name_format
- break
-
- items.append(RequestedAttribute(
- is_required=is_required,
- name_format=name_format,
- friendly_name=friendly_name,
- name=name))
-
- item = RequestedAttributes(
- extension_elements=items)
- extensions.add_extension_element(item)
+ if not friendly_name:
+ for converter in self.config.attribute_converters:
+ try:
+ friendly_name = converter._fro[name.lower()]
+ except KeyError:
+ continue
+ else:
+ if not name_format:
+ name_format = converter.name_format
+ break
+
+ items.append(RequestedAttribute(
+ is_required=is_required,
+ name_format=name_format,
+ friendly_name=friendly_name,
+ name=name))
+
+ item = RequestedAttributes(
+ extension_elements=items)
+ extensions.add_extension_element(item)
force_authn = str(
kwargs.pop("force_authn", None)