DataTable column level permissions

Registered by Romain Hardouin

This blueprint has been superseded. See the newer blueprint "DataTable column level policy checks" for updated plans.

Summary
=======
Add Column-level permissions to DataTable.

Motivation
==========

The need arose when implementing blueprint trove-list-datastores-and-versions.
The table which displays datastores versions must include columns for admins.
Regular users must see only "name" and "ID" whereas an admin will sees
"name", "ID", "active", "packages" and "image ID".

Description
===========

Be able to filter DataTable's columns depending user permissions.
Thus we can easily display admin only columns.

This is *not only* about hiding columns.

For instance, some data are not available to regular users in API responses.
So when a user does not have the permissions we must ignore the columns as if
they were not defined.

basic example
-------------

class MyTable(tables.DataTable):

    column = tables.Column(...)
    admin_only_column = tables.Column(...,
                                      permissions=['openstack.roles.admin'])

Only a admin would see the second column.
Regular users would see only the first.

concrete example
----------------

See the following files in https://review.openstack.org/#/c/163196/:

 * DataTable patch: horizon/tables/base.py
 * Usage: database_datastores/tables.py

UX
==

None

Testing
=======

When a DataTable is rendered to a user who has not the permissions to view a
column, we must ensure that:

 * The column is not showed
 * The column data is not processed

Outside Dependencies
====================

None

Requirements Update Required
============================

None

Doc Impact
==========

Document how to filter DataTable columns thanks to the new argument:
``permissions``.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Romain Hardouin
Direction:
Needs approval
Assignee:
Romain Hardouin
Definition:
Superseded
Series goal:
None
Implementation:
Needs Code Review
Milestone target:
None
Started by
Romain Hardouin
Completed by
Romain Hardouin

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.