def index(reponame): ''' List all groups ''' conf = glconfig.GLConfig(reponame) if not conf.exists(): raise HTTPNotFound('Repo %s not found.' % reponame) conf.load() group_list = [group.get_id() for group in conf.group_list] return group_list
def show(reponame, rule_id): ''' Show a specific rule ''' refex_list, member_list = glrule.GLRule.parse_id(rule_id) conf = glconfig.GLConfig(reponame) conf.load() rule = conf.find_rule(refex_list, member_list) if rule: return rule.to_dict() if (len(refex_list) == 1 and len(member_list) == 1): rule = conf.match_rule(refex_list[0], member_list[0]) if rule: return rule.to_dict() raise HTTPNotFound
def show(repo_id, name): ''' Show a specific group ''' if not name.startswith('@'): raise HTTPBadRequest('Repo name should starts with "@".') group_id = '@%s_%s' % (repo_id, name[1:]) conf = glconfig.GLConfig(repo_id) if not conf.exists(): raise HTTPNotFound('Repo %s not found.' % repo_id) conf.load() group = conf.find_group(group_id) if not group: raise HTTPNotFound('Group %s not found.' % group_id) return group.member_list
def create(reponame, permission, refex_list, member_list): ''' Create a new rule ''' conf = glconfig.GLConfig(reponame) def bind(): ''' operations binded for create ''' conf.load() rule = glrule.GLRule(permission, refex_list, member_list) if conf.find_rule(refex_list, member_list): raise HTTPConflict('Rule already exists.') conf.rule_list.append(rule) conf.save() return rule.get_id() return _transaction(gllock.OP_CREATE, 'Create Rule: %s' % reponame, conf, bind)
def delete(reponame, rule_id): ''' Delete an existing rule ''' refex_list, member_list = glrule.GLRule.parse_id(rule_id) conf = glconfig.GLConfig(reponame) def bind(): ''' operations binded for delete ''' conf.load() rule = conf.find_rule(refex_list, member_list) if not rule: raise HTTPNotFound('Rule %s %s not found.' % (refex_list, member_list)) result = rule.delete() conf.save() return result return _transaction(gllock.OP_DELETE, 'Delete Rule: %s' % rule_id, conf, bind)
def update(reponame, rule_id, new_member_list): ''' Update an existing rule ''' refex_list, member_list = glrule.GLRule.parse_id(rule_id) conf = glconfig.GLConfig(reponame) def bind(): ''' operations binded for update ''' conf.load() rule = conf.find_rule(refex_list, member_list) if not rule: raise HTTPNotFound('Rule %s %s not found.' % (refex_list, member_list)) rule.member_list = new_member_list conf.save() return True return _transaction(gllock.OP_UPDATE, 'Update Rule: %s' % rule_id, conf, bind)
def delete(repo_id, name): ''' Delete an existing group ''' if not name.startswith('@'): raise HTTPBadRequest('Repo name should starts with "@".') group_id = '@%s_%s' % (repo_id, name[1:]) conf = glconfig.GLConfig(repo_id) def bind(): ''' operations binded for delete ''' conf.load() group = conf.find_group(group_id) if not group: raise HTTPNotFound result = group.delete() conf.save() return result return _transaction(gllock.OP_DELETE, 'Delete Group: %s' % group_id, conf, bind)
def create(repo_id, name, member_list): ''' Create a new group ''' if not name.startswith('@'): raise HTTPBadRequest('Repo name should starts with "@".') group_id = '@%s_%s' % (repo_id, name[1:]) conf = glconfig.GLConfig(repo_id) def bind(): ''' operations binded for create ''' conf.load() if any(group.get_id() == name for group in conf.group_list): raise HTTPConflict('Group %s already exists.' % name) group = glgroup.GLGroup(group_id, member_list) conf.group_list.append(group) conf.save() return group.get_id() return _transaction(gllock.OP_CREATE, 'Create Group: %s' % group_id, conf, bind)
def update(repo_id, name, new_member_list): ''' Update an existing group ''' if not name.startswith('@'): raise HTTPBadRequest('Repo name should starts with "@".') group_id = '@%s_%s' % (repo_id, name[1:]) conf = glconfig.GLConfig(repo_id) if not conf: raise HTTPNotFound('Repo %s not found.' % repo_id) def bind(): ''' operations binded for update ''' conf.load() if not any(group.get_id() == name for group in conf.group_list): raise HTTPNotFound('Group %s not found.' % name) group = conf.find_group(group_id) group.member_list = new_member_list conf.save() return True return _transaction(gllock.OP_UPDATE, 'Update Group: %s' % group_id, conf, bind)
def index(reponame): ''' List all rules ''' conf = glconfig.GLConfig(reponame) conf.load() rule_list = [rule.get_id() for rule in conf.rule_list] return rule_list
def delete(name): ''' Delete an existing repo ''' conf = glconfig.GLConfig(name) return _transaction(gllock.OP_DELETE, 'Delete Repo: %s' % name, conf, conf.delete)
def create(name): ''' Create a new repo ''' conf = glconfig.GLConfig(name) if _transaction(gllock.OP_CREATE, 'Create Repo: %s' % name, conf, conf.create): return name