summaryrefslogtreecommitdiff
path: root/src/saml2/assertion.py
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2013-11-18 12:52:03 +0100
committerRoland Hedberg <roland.hedberg@adm.umu.se>2013-11-18 12:52:03 +0100
commite9f34b70dba6bfa8f8ee913314b0f3ebd0114b2c (patch)
tree3723414584a791140ba68c2398f96499b9ab80b8 /src/saml2/assertion.py
parent2d5ec644d7abebce85529705da98f61f6eaa57a9 (diff)
downloadpysaml2-e9f34b70dba6bfa8f8ee913314b0f3ebd0114b2c.tar.gz
Made SWAMIDs 2-dimensional entity category model work.
Diffstat (limited to 'src/saml2/assertion.py')
-rw-r--r--src/saml2/assertion.py40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/saml2/assertion.py b/src/saml2/assertion.py
index 813cff69..60535c55 100644
--- a/src/saml2/assertion.py
+++ b/src/saml2/assertion.py
@@ -439,31 +439,33 @@ class Policy(object):
pass
if ec_maps:
- # always released
- for ec_map in ec_maps:
- try:
- attrs = ec_map[""]
- except KeyError:
- pass
- else:
- for attr in attrs:
- restrictions[attr] = None
-
if mds:
try:
ecs = mds.entity_categories(sp_entity_id)
except KeyError:
- pass
+ for ec_map in ec_maps:
+ for attr in ec_map[""]:
+ restrictions[attr] = None
else:
- for ec in ecs:
- for ec_map in ec_maps:
- try:
- attrs = ec_map[ec]
- except KeyError:
- pass
+ for ec_map in ec_maps:
+ for key, val in ec_map.items():
+ if key == "": # always released
+ attrs = val
+ elif isinstance(key, tuple):
+ attrs = val
+ for _key in key:
+ try:
+ assert _key in ecs
+ except AssertionError:
+ attrs = []
+ break
+ elif key in ecs:
+ attrs = val
else:
- for attr in attrs:
- restrictions[attr] = None
+ attrs = []
+
+ for attr in attrs:
+ restrictions[attr] = None
return restrictions