def _sqlChanges(self): from Phoenix.Models import Privilege, Repository, Role Member.createTable(ifNotExists=True) Role.createTable(ifNotExists=True) Repository.createTable(ifNotExists=True) Privilege.createTable(ifNotExists=True) Hook.createTable(ifNotExists=True) Key.createTable(ifNotExists=True)
def hasAccess(self, member=False, branch="master", tag="", action="R"): from Phoenix.Models import Privilege from re import match from sqlobject import AND, OR, IN if not member: privileges = Privilege.selectBy(repository=self, public=True) else: privileges = Privilege.select(AND( Privilege.q.repository == self.id, OR( Privilege.q.member == member.id, IN(Privilege.q.role, member.roles), Privilege.q.public == 1))) print privileges if privileges.count() > 0: for p in privileges: if branch and match(p.branch, branch) and action in p.crud: return True if tag and match(p.tag, tag) and action in p.crud: return True return False
def hasAccess(self, member=False, branch="master", tag="", action="R"): from Phoenix.Models import Privilege from re import match from sqlobject import AND, OR, IN if not member: privileges = Privilege.selectBy(repository=self, public=True) else: privileges = Privilege.select( AND( Privilege.q.repository == self.id, OR(Privilege.q.member == member.id, IN(Privilege.q.role, member.roles), Privilege.q.public == 1))) print privileges if privileges.count() > 0: for p in privileges: if branch and match(p.branch, branch) and action in p.crud: return True if tag and match(p.tag, tag) and action in p.crud: return True return False
def addPrivilege(self, tag, branch, crud, member=None, role=None, public=False): from Phoenix.Models import Privilege privilege = Privilege(repository=self, tag=tag, branch=branch, crud=crud, member=member, role=role, public=public) return privilege
def privilege(cls, id): from Phoenix.Models import Privilege if Privilege.get(id): return True return False