summaryrefslogtreecommitdiffstats
path: root/ipalib/plugins/permission.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/plugins/permission.py')
-rw-r--r--ipalib/plugins/permission.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py
index 64deb99e..670e3f1c 100644
--- a/ipalib/plugins/permission.py
+++ b/ipalib/plugins/permission.py
@@ -342,13 +342,16 @@ class permission(baseldap.LDAPObject):
rights = entry.get('attributelevelrights')
if rights:
- rights['memberof'] = rights['ipapermtargetfilter']
- rights['targetgroup'] = rights['ipapermtarget']
-
- type_rights = set(rights['ipapermtargetfilter'])
- type_rights.intersection_update(rights['ipapermlocation'])
- rights['type'] = ''.join(sorted(
- type_rights, key=rights['ipapermtargetfilter'].index))
+ if 'ipapermtarget' in rights:
+ rights['targetgroup'] = rights['ipapermtarget']
+ if 'ipapermtargetfilter' in rights:
+ rights['memberof'] = rights['ipapermtargetfilter']
+
+ type_rights = set(rights['ipapermtargetfilter'])
+ location_rights = set(rights.get('ipapermlocation', ''))
+ type_rights.intersection_update(location_rights)
+ rights['type'] = ''.join(sorted(
+ type_rights, key=rights['ipapermtargetfilter'].index))
if 'ipapermincludedattr' in rights:
rights['attrs'] = ''.join(sorted(