Allowing for more complex combinations of permissions.  Will check for logical AND of all top level permissions.  Will use logical OR for all first level tuples (check that use has one permissions in the tuple)
Allowing for more complex combinations of permissions.  Will check for
logical AND of all top level permissions.  Will use logical OR for all
first level tuples (check that use has one permissions in the tuple)

Allows users with different roles to access a panel, while a user with
a third role won't be allowed to access the same panel.

Examples:
    Checks for all required permissions
    ('openstack.roles.admin', 'openstack.roles.L3-support')

    Checks for admin AND (L2 or L3)
    ('openstack.roles.admin', ('openstack.roles.L3-support',
                               'openstack.roles.L2-support'),)

promptworks/django_openstack_auth,gabrielhurley/django_openstack_auth,redhat-openstack/django_openstack_auth,onsoku/codereview,ging/django_openstack_auth,dan1/django_openstack_auth_proto,promptworks/django_openstack_auth,jamielennox/django_openstack_auth,onsoku/codereview,dan1/django_openstack_auth_proto,gabrielhurley/django_openstack_auth,redhat-openstack/django_openstack_auth,ging/django_openstack_auth,ashokkumarprajapati/openstack_auth_remote