diff options
author | Nikos Sklikas <nsklikas@admin.grnet.gr> | 2020-05-28 12:55:40 +0300 |
---|---|---|
committer | Nikos Sklikas <nsklikas@admin.grnet.gr> | 2020-05-28 13:00:06 +0300 |
commit | bb01758480be04f8a8083310dca0f7d2bf8b5547 (patch) | |
tree | 0ef76e1f1b748b6209f2a7ac839254a6f1b78a0e | |
parent | 531f6bd1eac3488987be0e153d847ff59f5bbfbf (diff) | |
download | pysaml2-bb01758480be04f8a8083310dca0f7d2bf8b5547.tar.gz |
Requested fixes
-rw-r--r-- | src/saml2/client_base.py | 104 |
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) |