def test_get_acl_user_package(self): """ Test the get_acl_user_package function. """ pending_acls = pkgdblib.get_acl_user_package(self.session, 'pingou', 'guake') self.assertEqual(pending_acls, []) create_package_acl(self.session) pending_acls = pkgdblib.get_acl_user_package(self.session, 'pingou', 'geany') self.assertEqual(len(pending_acls), 0) pending_acls = pkgdblib.get_acl_user_package(self.session, 'pingou', 'guake') self.assertEqual(len(pending_acls), 4) pending_acls = pkgdblib.get_acl_user_package(self.session, 'toshio', 'guake', status='Awaiting Review') self.assertEqual(len(pending_acls), 1) self.assertEqual(pending_acls[0]['package'], 'guake') self.assertEqual(pending_acls[0]['collection'], 'devel') self.assertEqual(pending_acls[0]['acl'], 'commit') self.assertEqual(pending_acls[0]['status'], 'Awaiting Review')
def update_acl(package, user, branch=None): ''' Update the acls for a specific user on a package. ''' pending_acls = pkgdblib.get_acl_user_package(SESSION, user, package, status=None) if branch is not None: pending_acls2 = [] for acls in pending_acls: if acls['collection'] == branch: pending_acls2.append(acls) pending_acls = pending_acls2 collections = set([item['collection'] for item in pending_acls]) status = pkgdb.lib.get_status(SESSION, ['pkg_acl', 'pkg_status']) form = pkgdb.forms.UpdateAclPackageForm( collections=collections, pkg_acl_list=status['pkg_acl'], pkg_status=status['pkg_status'], ) if form.validate_on_submit(): pkg_branchs = form.pkg_branch.data pkg_acls = form.pkg_acl.data acl_status = form.acl_status.data try: branch_out = [] for (collec, acl) in itertools.product(pkg_branchs, pkg_acls): if collec in branch_out: continue if acl_status == 'Awaiting Review' and \ acl in APP.config['AUTO_APPROVE']: acl_status = 'Approved' pkgdblib.set_acl_package( SESSION, pkg_name=package, clt_name=collec, pkg_user=user, acl=acl, status=acl_status, user=flask.g.fas_user, ) flask.flash('ACLs updated') SESSION.commit() return flask.redirect( flask.url_for('.package_info', package=package)) except pkgdblib.PkgdbException, err: SESSION.rollback() flask.flash(err.message, 'errors')
def update_acl(package, user, branch=None): ''' Update the acls for a specific user on a package. ''' pending_acls = pkgdblib.get_acl_user_package( SESSION, user, package, status=None) if branch is not None: pending_acls2 = [] for acls in pending_acls: if acls['collection'] == branch: pending_acls2.append(acls) pending_acls = pending_acls2 collections = set([item['collection'] for item in pending_acls]) status = pkgdb.lib.get_status(SESSION, ['pkg_acl', 'pkg_status']) form = pkgdb.forms.UpdateAclPackageForm( collections=collections, pkg_acl_list=status['pkg_acl'], pkg_status=status['pkg_status'], ) if form.validate_on_submit(): pkg_branchs = form.pkg_branch.data pkg_acls = form.pkg_acl.data acl_status = form.acl_status.data try: branch_out = [] for (collec, acl) in itertools.product(pkg_branchs, pkg_acls): if collec in branch_out: continue if acl_status == 'Awaiting Review' and \ acl in APP.config['AUTO_APPROVE']: acl_status = 'Approved' pkgdblib.set_acl_package( SESSION, pkg_name=package, clt_name=collec, pkg_user=user, acl=acl, status=acl_status, user=flask.g.fas_user, ) flask.flash('ACLs updated') SESSION.commit() return flask.redirect( flask.url_for('.package_info', package=package)) except pkgdblib.PkgdbException, err: SESSION.rollback() flask.flash(err.message, 'errors')
def test_get_acl_user_package(self): """ Test the get_acl_user_package function. """ pending_acls = pkgdblib.get_acl_user_package( self.session, 'pingou', 'guake') self.assertEqual(pending_acls, []) create_package_acl(self.session) pending_acls = pkgdblib.get_acl_user_package( self.session, 'pingou', 'geany') self.assertEqual(len(pending_acls), 0) pending_acls = pkgdblib.get_acl_user_package( self.session, 'pingou', 'guake') self.assertEqual(len(pending_acls), 4) pending_acls = pkgdblib.get_acl_user_package( self.session, 'toshio', 'guake', status='Awaiting Review') self.assertEqual(len(pending_acls), 1) self.assertEqual(pending_acls[0]['package'], 'guake') self.assertEqual(pending_acls[0]['collection'], 'devel') self.assertEqual(pending_acls[0]['acl'], 'commit') self.assertEqual(pending_acls[0]['status'], 'Awaiting Review')