Example #1
0
def grant_permission(session: Session,
                     group_id: int,
                     permission_id: int,
                     argument: str = "") -> None:
    """Grant a permission to this group.

    This will fail if the (permission, argument) has already been granted to this group.

    Args:
        session: Database session
        group_id: ID of group to which to grant the permission
        permission_id: ID of permission to grant
        argument: Must match constants.ARGUMENT_VALIDATION

    Throws:
        AssertError if argument does not match ARGUMENT_VALIDATION regex
    """
    assert re.match(ARGUMENT_VALIDATION + r"$",
                    argument), "Invalid permission argument"

    mapping = PermissionMap(permission_id=permission_id,
                            group_id=group_id,
                            argument=argument)
    mapping.add(session)

    Counter.incr(session, "updates")

    session.commit()
Example #2
0
 def grant_permission_to_group(self, permission, argument, group):
     # type: (str, str, str) -> None
     self.create_group(group)
     self.create_permission(permission)
     permission_obj = Permission.get(self.session, name=permission)
     assert permission_obj
     group_obj = Group.get(self.session, name=group)
     assert group_obj
     grant = PermissionMap(permission_id=permission_obj.id,
                           group_id=group_obj.id,
                           argument=argument)
     grant.add(self.session)
Example #3
0
    def grant_permission_to_group(self, permission, argument, group):
        # type: (str, str, str) -> None
        sql_group = Group.get(self.session, name=group)
        if not sql_group:
            raise GroupNotFoundException(group)
        sql_permission = Permission.get(self.session, name=permission)
        if not sql_permission:
            raise PermissionNotFoundException(permission)

        mapping = PermissionMap(
            permission_id=sql_permission.id, group_id=sql_group.id, argument=argument
        )
        mapping.add(self.session)
Example #4
0
def grant_permission(session, group_id, permission_id, argument=''):
    """
    Grant a permission to this group. This will fail if the (permission, argument) has already
    been granted to this group.

    Args:
        session(models.base.session.Session): database session
        permission(Permission): a Permission object being granted
        argument(str): must match constants.ARGUMENT_VALIDATION

    Throws:
        AssertError if argument does not match ARGUMENT_VALIDATION regex
    """
    assert re.match(ARGUMENT_VALIDATION, argument), 'Permission argument does not match regex.'

    mapping = PermissionMap(permission_id=permission_id, group_id=group_id, argument=argument)
    mapping.add(session)

    Counter.incr(session, "updates")

    session.commit()