In meta data make ACI attributes lower-case, sorted. Add possible attributes.

The metadata contains a list of possible attributes that an ACI for that
object might need. Add a new variable to hold possible objectclasses for
optional elements (like posixGroup for groups).

To make the list easier to handle sort it and make it all lower-case.

Fix a couple of missed camel-case attributes in the default ACI list.

ticket 641
This commit is contained in:
Rob Crittenden
2010-12-20 23:28:33 -05:00
parent 1a7f5e0cc4
commit 4d6cd89258
4 changed files with 11 additions and 4 deletions

View File

@@ -233,6 +233,9 @@ class LDAPObject(Object):
object_name_plural = 'entries'
object_class = []
object_class_config = None
# If an objectclass is possible but not default in an entry. Needed for
# collecting attributes for ACI UI.
possible_objectclasses = []
search_attributes = []
search_attributes_config = None
default_attributes = []
@@ -356,17 +359,19 @@ class LDAPObject(Object):
objectclasses = config.get(
self.object_class_config, objectclasses
)
objectclasses += self.possible_objectclasses
# Get list of available attributes for this object for use
# in the ACI UI.
attrs = self.api.Backend.ldap2.schema.attribute_types(objectclasses)
attrlist = []
# Go through the MUST first
for (oid, attr) in attrs[0].iteritems():
attrlist.append(attr.names[0])
attrlist.append(attr.names[0].lower())
# And now the MAY
for (oid, attr) in attrs[1].iteritems():
attrlist.append(attr.names[0])
attrlist.append(attr.names[0].lower())
json_dict['aciattrs'] = attrlist
attrlist.sort()
json_dict['methods'] = [m for m in self.methods]
return json_dict