Add data interface for api-permissions for v2-2
This commit is contained in:
parent
fe6760749a
commit
a68ec6966e
4 changed files with 304 additions and 134 deletions
111
endpoints/api/permission_models_interface.py
Normal file
111
endpoints/api/permission_models_interface.py
Normal file
|
@ -0,0 +1,111 @@
|
|||
import sys
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from collections import namedtuple
|
||||
|
||||
from six import add_metaclass
|
||||
|
||||
|
||||
class SaveException(Exception):
|
||||
def __init__(self, other):
|
||||
self.traceback = sys.exc_info()
|
||||
super(SaveException, self).__init__(other.message)
|
||||
|
||||
class DeleteException(Exception):
|
||||
def __init__(self, other):
|
||||
self.traceback = sys.exc_info()
|
||||
super(DeleteException, self).__init__(other.message)
|
||||
|
||||
|
||||
class Role(namedtuple('Role', ['role_name'])):
|
||||
def to_dict(self):
|
||||
return {
|
||||
'role': self.role_name,
|
||||
}
|
||||
|
||||
class UserPermission(namedtuple('UserPermission', [
|
||||
'role_name',
|
||||
'username',
|
||||
'is_robot',
|
||||
'avatar',
|
||||
'is_org_member',
|
||||
'has_org',
|
||||
])):
|
||||
|
||||
def to_dict(self):
|
||||
perm_dict = {
|
||||
'role': self.role_name,
|
||||
'username': self.username,
|
||||
'is_robot': False,
|
||||
'avatar': self.avatar,
|
||||
}
|
||||
if self.has_org:
|
||||
perm_dict['is_org_member'] = self.is_org_member
|
||||
return perm_dict
|
||||
|
||||
|
||||
class RobotPermission(namedtuple('RobotPermission', [
|
||||
'role_name',
|
||||
'username',
|
||||
'is_robot',
|
||||
'is_org_member',
|
||||
])):
|
||||
|
||||
def to_dict(self, user=None, team=None, org_members=None):
|
||||
return {
|
||||
'role': self.role_name,
|
||||
'username': self.username,
|
||||
'is_robot': True,
|
||||
'is_org_member': self.is_org_member,
|
||||
}
|
||||
|
||||
|
||||
class TeamPermission(namedtuple('TeamPermission', [
|
||||
'role_name',
|
||||
'team_name',
|
||||
'avatar',
|
||||
])):
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'role': self.role_name,
|
||||
'name': self.team_name,
|
||||
'avatar': self.avatar,
|
||||
}
|
||||
|
||||
@add_metaclass(ABCMeta)
|
||||
class PermissionDataInterface(object):
|
||||
@abstractmethod
|
||||
def get_repo_permissions_by_user(self, namespace_name, repository_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_repo_roles(self, username, namespace_name, repository_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_repo_permission_for_user(self, username, namespace_name, repository_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def set_repo_permission_for_user(self, username, namespace_name, repository_name, role_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def delete_repo_permission_for_user(self, username, namespace_name, repository_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_repo_permissions_by_team(self, namespace_name, repository_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_repo_role_for_team(self, team_name, namespace_name, repository_name):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def set_repo_permission_for_team(self, team_name, namespace_name, repository_name, permission):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def delete_repo_permission_for_team(self, team_name, namespace_name, repository_name):
|
||||
pass
|
Reference in a new issue