summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kanakarakis <ivan.kanak@gmail.com>2018-11-26 19:40:25 +0200
committerIvan Kanakarakis <ivan.kanak@gmail.com>2018-11-26 19:40:27 +0200
commit4815d512fb6ada9678ac0c0e0cfb543f6171ff80 (patch)
tree89a2a4e1427883550d321eef666c625b6f6bd092
parente8d741436203d79dd73da09db594d46310732b3f (diff)
downloadpysaml2-4815d512fb6ada9678ac0c0e0cfb543f6171ff80.tar.gz
Use SamlBase::loadd to do_contact_person_info
metadata.do_contact_person_info does not need to reimplement loading of the data given, as this is already implemented and more complete through SamlBase::loadd Signed-off-by: Ivan Kanakarakis <ivan.kanak@gmail.com>
-rw-r--r--src/saml2/__init__.py10
-rw-r--r--src/saml2/metadata.py49
2 files changed, 14 insertions, 45 deletions
diff --git a/src/saml2/__init__.py b/src/saml2/__init__.py
index cc3c06f7..292513da 100644
--- a/src/saml2/__init__.py
+++ b/src/saml2/__init__.py
@@ -785,14 +785,12 @@ class SamlBase(ExtensionContainer):
"""
for prop, _typ, _req in self.c_attributes.values():
- # print("# %s" % (prop))
if prop in ava:
- if isinstance(ava[prop], bool):
- setattr(self, prop, "%s" % ava[prop])
- elif isinstance(ava[prop], int):
- setattr(self, prop, "%d" % ava[prop])
+ value = ava[prop]
+ if isinstance(value, (bool, int)):
+ setattr(self, prop, str(value))
else:
- setattr(self, prop, ava[prop])
+ setattr(self, prop, value)
if "text" in ava:
self.set_text(ava["text"], base64encode)
diff --git a/src/saml2/metadata.py b/src/saml2/metadata.py
index e445b07e..a5c35c9e 100644
--- a/src/saml2/metadata.py
+++ b/src/saml2/metadata.py
@@ -152,46 +152,17 @@ def do_organization_info(ava):
return org
-def do_contact_person_info(lava):
- """ Creates a ContactPerson instance from configuration information"""
+def do_contact_person_info(ava):
+ """Create a ContactPerson instance from configuration information."""
+ cper = md.ContactPerson()
+ cper.loadd(ava)
+ if not cper.contact_type:
+ cper.contact_type = "technical"
+ return cper
- cps = []
- if lava is None:
- return cps
-
- contact_person = md.ContactPerson
- for ava in lava:
- cper = md.ContactPerson()
- for (key, classpec) in contact_person.c_children.values():
- try:
- value = ava[key]
- data = []
- if isinstance(classpec, list):
- # What if value is not a list ?
- if isinstance(value, six.string_types):
- data = [classpec[0](text=value)]
- else:
- for val in value:
- data.append(classpec[0](text=val))
- else:
- data = classpec(text=value)
- setattr(cper, key, data)
- except KeyError:
- pass
- for (prop, classpec, _) in contact_person.c_attributes.values():
- try:
- # should do a check for valid value
- setattr(cper, prop, ava[prop])
- except KeyError:
- pass
-
- # ContactType must have a value
- typ = getattr(cper, "contact_type")
- if not typ:
- setattr(cper, "contact_type", "technical")
-
- cps.append(cper)
+def do_contact_persons_info(lava):
+ cps = [do_contact_person_info(ava) for ava in lava]
return cps
@@ -719,7 +690,7 @@ def entity_descriptor(confd):
if confd.organization is not None:
entd.organization = do_organization_info(confd.organization)
if confd.contact_person is not None:
- entd.contact_person = do_contact_person_info(confd.contact_person)
+ entd.contact_person = do_contact_persons_info(confd.contact_person)
if confd.entity_category:
if not entd.extensions: