Skip to content

Commit 4815d51

Browse files
committed
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 <[email protected]>
1 parent e8d7414 commit 4815d51

File tree

2 files changed

+14
-45
lines changed

2 files changed

+14
-45
lines changed

src/saml2/__init__.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -785,14 +785,12 @@ def loadd(self, ava, base64encode=False):
785785
"""
786786

787787
for prop, _typ, _req in self.c_attributes.values():
788-
# print("# %s" % (prop))
789788
if prop in ava:
790-
if isinstance(ava[prop], bool):
791-
setattr(self, prop, "%s" % ava[prop])
792-
elif isinstance(ava[prop], int):
793-
setattr(self, prop, "%d" % ava[prop])
789+
value = ava[prop]
790+
if isinstance(value, (bool, int)):
791+
setattr(self, prop, str(value))
794792
else:
795-
setattr(self, prop, ava[prop])
793+
setattr(self, prop, value)
796794

797795
if "text" in ava:
798796
self.set_text(ava["text"], base64encode)

src/saml2/metadata.py

Lines changed: 10 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -152,46 +152,17 @@ def do_organization_info(ava):
152152
return org
153153

154154

155-
def do_contact_person_info(lava):
156-
""" Creates a ContactPerson instance from configuration information"""
155+
def do_contact_person_info(ava):
156+
"""Create a ContactPerson instance from configuration information."""
157+
cper = md.ContactPerson()
158+
cper.loadd(ava)
159+
if not cper.contact_type:
160+
cper.contact_type = "technical"
161+
return cper
157162

158-
cps = []
159-
if lava is None:
160-
return cps
161-
162-
contact_person = md.ContactPerson
163-
for ava in lava:
164-
cper = md.ContactPerson()
165-
for (key, classpec) in contact_person.c_children.values():
166-
try:
167-
value = ava[key]
168-
data = []
169-
if isinstance(classpec, list):
170-
# What if value is not a list ?
171-
if isinstance(value, six.string_types):
172-
data = [classpec[0](text=value)]
173-
else:
174-
for val in value:
175-
data.append(classpec[0](text=val))
176-
else:
177-
data = classpec(text=value)
178-
setattr(cper, key, data)
179-
except KeyError:
180-
pass
181-
for (prop, classpec, _) in contact_person.c_attributes.values():
182-
try:
183-
# should do a check for valid value
184-
setattr(cper, prop, ava[prop])
185-
except KeyError:
186-
pass
187-
188-
# ContactType must have a value
189-
typ = getattr(cper, "contact_type")
190-
if not typ:
191-
setattr(cper, "contact_type", "technical")
192-
193-
cps.append(cper)
194163

164+
def do_contact_persons_info(lava):
165+
cps = [do_contact_person_info(ava) for ava in lava]
195166
return cps
196167

197168

@@ -719,7 +690,7 @@ def entity_descriptor(confd):
719690
if confd.organization is not None:
720691
entd.organization = do_organization_info(confd.organization)
721692
if confd.contact_person is not None:
722-
entd.contact_person = do_contact_person_info(confd.contact_person)
693+
entd.contact_person = do_contact_persons_info(confd.contact_person)
723694

724695
if confd.entity_category:
725696
if not entd.extensions:

0 commit comments

Comments
 (0)