ACLs via External Python API#

The External Python API provided by the Python interpreter included in the CEI/Ansys distributions can now be used to manipulate items and item categories as a part of ACLs.

core.report_objects.ItemCategoryREST object#

This object is a Python representation of an Ansys Dynamic Reporting item category. When this object is created, a GUID will automatically be generated for the object and the date is set to the current time/date with the current timezone.

Data members#

The following attributes are available on an ItemCategoryREST object:

  • guid - string GUID. The default is str(uuid.uuid1()).

  • date - The time & date of the creation of this category. The default is: datetime.datetime.now(pytz.utc).

  • name - The name of the category, a string.

  • owners - a Python set()of group names that have the 'own' permission on the item category.

  • viewers - a Python set()of group names that have the 'view' permission on the item category.

  • changers - a Python set()of group names that have the 'change' permission on the item category.

  • deleters - a Python set()of group names that have the 'delete' permission on the item category.

  • perms_and_groups - a Python dict()of permissions on the category and user groups that are assigned these permissions. This property is read-only.

Methods#

category.add_owner(group_name)

Add a user group to the owners set attribute. group_name must be a valid group name string.

category.add_viewer(group_name)

Add a user group to the viewers set attribute. group_name must be a valid group name string.

category.add_changer(group_name)

Add a user group to the changers set attribute. group_name must a valid group name string.

category.add_deleter(group_name)

Add a user group to the deleters set attribute. group_name must be a valid group name string.

category.remove_owner(group_name)

Remove a user group from the owners set attribute. group_name must be a valid group name string.

category.remove_viewer(group_name)

Remove a user group from the viewers set attribute. group_name must be a valid group name string.

category.remove_changer(group_name)

Remove a user group from the changers set attribute. group_name must be a valid group name string.

category.remove_deleter(group_name)

Remove a user group from the deleters set attribute. group_name must be a valid group name string.

Query fields#

Note, all fields may be used only for ItemCategory object type queries, just like in a typical Query Expression.

ItemCategory fields

ic_guid

item category guid

ic_date

item category date

ic_name

item category name

report_objects.ItemREST object#

This document only covers ACLs specific information and use cases of ItemREST. Please visit the original document for detailed information on ItemREST.

Data members#

ACLs is available through the following additional attributes on an ItemREST object:

  • categories - a Python set()of item categories to assign to the item. Can be a set of either string names or ItemCategoryREST objects.

Methods#

item.add_category(category)

Add an item category to the categories set attribute. The value passed can either be a category name string or an ItemCategoryREST object.

item.remove_category(category)

Remove an item category from the categories set attribute. The value passed can either be a category name string or an ItemCategoryREST object.

Examples#

A simple example of how this API might be used:

from ansys.dynamicreporting.core.utils import report_remote_server, report_objects
server = report_remote_server.Server(url="http://localhost:8000",
                                    username="nexus", password="cei")
### Creating categories
ic = server.create_item_category('bumper')
ic.add_owner('nexus')
ic1 = server.create_item_category('bumper1')
ic1.add_owner('cei')
ic1.add_changer('nexus')
ic2 = server.create_item_category('bumper2')
ic2.add_owner('cei')
ic2.add_viewer('nexus')
ic2.add_deleter('nexus')
categs = [ic, ic1, ic2]

# upload
error = server.put_objects(categs)

### Fetching categories with queries using :ref:`Query Expressions <Queryfields>`. For example: created after 2020-02-17
categs = server.get_objects(objtype=report_objects.ItemCategoryREST,
                            query='A|ic_date|gt|2020-02-17T05%3A59%3A00.000Z;')

### Creating items and setting categories
item = server.create_item(name="Simple header",
                        source="My Python script")
item.set_payload_html("<h1>An Example Header</h1>")

# set categories
item.categories = categs

# removing
item.remove_category(ic2)
item.remove_category(ic)

# adding back
item.add_category(ic)

# upload
error = server.put_objects([item])