def package_orphan(namespace, package, full=True): ''' Gives the possibility to orphan or take a package. ''' if not bool(full) or str(full) in ['0', 'False']: full = False try: package_acl = pkgdblib.get_acl_package( SESSION, namespace, package) package = pkgdblib.search_package( SESSION, namespace, package, limit=1)[0] except (NoResultFound, IndexError): SESSION.rollback() flask.flash('No package of this name found.', 'errors') return flask.render_template('msg.html') collections = [ acl.collection.branchname for acl in package_acl if acl.collection.status in ['Active', 'Under Development'] and acl.status == 'Approved' and ( is_pkgdb_admin(flask.g.fas_user) or acl.point_of_contact == flask.g.fas_user.username or ( acl.point_of_contact.startswith('group::') and is_pkg_admin( SESSION, flask.g.fas_user, namespace, package.name) ) ) ] form = pkgdb2.forms.BranchForm(collections=collections) if form.validate_on_submit(): for branch in form.branches.data: try: pkgdblib.update_pkg_poc( session=SESSION, namespace=namespace, pkg_name=package.name, pkg_branch=branch, pkg_poc='orphan', user=flask.g.fas_user ) flask.flash( 'You are no longer point of contact on branch: %s' % branch) except pkgdblib.PkgdbBugzillaException, err: # pragma: no cover APP.logger.exception(err) flask.flash(str(err), 'error') SESSION.rollback() except pkgdblib.PkgdbException, err: # pragma: no cover flask.flash(str(err), 'error') SESSION.rollback()
def package_orphan(namespace, package, full=True): ''' Gives the possibility to orphan or take a package. ''' if not bool(full) or str(full) in ['0', 'False']: full = False try: package_acl = pkgdblib.get_acl_package(SESSION, namespace, package) package = pkgdblib.search_package(SESSION, namespace, package, limit=1)[0] except (NoResultFound, IndexError): SESSION.rollback() flask.flash('No package of this name found.', 'errors') return flask.render_template('msg.html') collections = [ acl.collection.branchname for acl in package_acl if acl.collection.status in ['Active', 'Under Development'] and acl.status == 'Approved' and ( is_pkgdb_admin(flask.g.fas_user) or acl.point_of_contact == flask.g.fas_user.username or (acl.point_of_contact.startswith('group::') and is_pkg_admin( SESSION, flask.g.fas_user, namespace, package.name))) ] form = pkgdb2.forms.BranchForm(collections=collections) if form.validate_on_submit(): for branch in form.branches.data: try: pkgdblib.update_pkg_poc(session=SESSION, namespace=namespace, pkg_name=package.name, pkg_branch=branch, pkg_poc='orphan', user=flask.g.fas_user) flask.flash( 'You are no longer point of contact on branch: %s' % branch) except pkgdblib.PkgdbBugzillaException, err: # pragma: no cover APP.logger.exception(err) flask.flash(str(err), 'error') SESSION.rollback() except pkgdblib.PkgdbException, err: # pragma: no cover flask.flash(str(err), 'error') SESSION.rollback()
def test_is_pkg_admin(self): """ Test the is_pkg_admin function. """ self.assertFalse(pkgdb2.is_pkg_admin(None, None, None, None))
def package_info(package): ''' Display the information about the specified package. ''' packagename = package package = None try: package_acl = pkgdblib.get_acl_package(SESSION, packagename) package = pkgdblib.search_package(SESSION, packagename, limit=1)[0] except (NoResultFound, IndexError): SESSION.rollback() flask.flash('No package of this name found.', 'errors') return flask.render_template('msg.html') package_acls = [] branch_admin = [] is_poc = False for pkg in package_acl: if pkg.collection.status == 'EOL': # pragma: no cover continue tmp = {} tmp['collection'] = '%s %s' % (pkg.collection.name, pkg.collection.version) tmp['branchname'] = pkg.collection.branchname tmp['point_of_contact'] = pkg.point_of_contact tmp['status'] = pkg.status if hasattr(flask.g, 'fas_user') and flask.g.fas_user and \ pkg.point_of_contact == flask.g.fas_user.username: is_poc = True acls = {} for acl in pkg.acls: tmp2 = {'acl': acl.acl, 'status': acl.status} if acl.fas_name in acls: acls[acl.fas_name].append(tmp2) else: acls[acl.fas_name] = [tmp2] ## This list is a little hacky, but we would have to save ACLs ## in their own table otherwise. planned_acls = set(['approveacls', 'commit', 'watchbugzilla', 'watchcommits']) for fas_name in acls: seen_acls = set([acl['acl'] for acl in acls[fas_name]]) for aclname in planned_acls - seen_acls: acls[fas_name].append({'acl': aclname, 'status': ''}) tmp['acls'] = acls package_acls.append(tmp) if is_pkg_admin(SESSION, flask.g.fas_user, package.name, pkg.collection.branchname): branch_admin.append(pkg.collection.branchname) package_acls.reverse() if package_acls: package_acls.insert(0, package_acls.pop()) return flask.render_template( 'package.html', package=package, package_acl=package_acls, branch_admin=branch_admin, is_poc=is_poc, )
def package_info(package): ''' Display the information about the specified package. ''' packagename = package package = None try: package_acl = pkgdblib.get_acl_package(SESSION, packagename) package = pkgdblib.search_package(SESSION, packagename, limit=1)[0] except (NoResultFound, IndexError): SESSION.rollback() flask.flash('No package of this name found.', 'errors') return flask.render_template('msg.html') package_acls = [] branch_admin = [] is_poc = False for pkg in package_acl: if pkg.collection.status == 'EOL': # pragma: no cover continue tmp = {} tmp['collection'] = '%s %s' % (pkg.collection.name, pkg.collection.version) tmp['branchname'] = pkg.collection.branchname tmp['point_of_contact'] = pkg.point_of_contact tmp['status'] = pkg.status if hasattr(flask.g, 'fas_user') and flask.g.fas_user and \ pkg.point_of_contact == flask.g.fas_user.username: is_poc = True acls = {} for acl in pkg.acls: tmp2 = {'acl': acl.acl, 'status': acl.status} if acl.fas_name in acls: acls[acl.fas_name].append(tmp2) else: acls[acl.fas_name] = [tmp2] ## This list is a little hacky, but we would have to save ACLs ## in their own table otherwise. planned_acls = set( ['approveacls', 'commit', 'watchbugzilla', 'watchcommits']) for fas_name in acls: seen_acls = set([acl['acl'] for acl in acls[fas_name]]) for aclname in planned_acls - seen_acls: acls[fas_name].append({'acl': aclname, 'status': ''}) tmp['acls'] = acls package_acls.append(tmp) if is_pkg_admin(SESSION, flask.g.fas_user, package.name, pkg.collection.branchname): branch_admin.append(pkg.collection.branchname) package_acls.reverse() if package_acls: package_acls.insert(0, package_acls.pop()) return flask.render_template( 'package.html', package=package, package_acl=package_acls, branch_admin=branch_admin, is_poc=is_poc, )