Beispiel #1
0
def delete_package(namespace, package):
    ''' Delete the specified package.
    '''
    form = pkgdb2.forms.ConfirmationForm()

    if not form.validate_on_submit():
        flask.flash('Invalid input', 'error')
        return flask.redirect(flask.url_for(
            '.package_info', namespace=namespace, package=package))

    packagename = package
    package = None
    try:
        package = pkgdblib.search_package(
            SESSION, namespace, packagename, limit=1)[0]
    except (NoResultFound, IndexError):
        SESSION.rollback()
        flask.flash('No package of this name found.', 'errors')
        return flask.render_template('msg.html')

    for pkglist in package.listings:
        for acl in pkglist.acls:
            pkgdb2.lib.utils.log(SESSION, None, 'acl.delete', dict(
                agent=flask.g.fas_user.username,
                acl=acl.to_json(),
            ))
            SESSION.delete(acl)
        pkgdb2.lib.utils.log(SESSION, None, 'package.branch.delete', dict(
            agent=flask.g.fas_user.username,
            package_listing=pkglist.to_json(),
        ))
        SESSION.delete(pkglist)

    pkgdb2.lib.utils.log(SESSION, None, 'package.delete', dict(
        agent=flask.g.fas_user.username,
        package=package.to_json(),
    ))
    SESSION.delete(package)

    try:
        SESSION.commit()
        flask.flash('Package %s deleted' % packagename)
    except SQLAlchemyError as err:  # pragma: no cover
        SESSION.rollback()
        flask.flash(
            'An error occured while trying to delete the package %s'
            % packagename, 'error')
        APP.logger.debug('Could not delete package: %s', packagename)
        APP.logger.exception(err)
        return flask.redirect(flask.url_for(
            '.package_info',
            namespace=package.namespace,
            package=package.name)
        )

    return flask.redirect(
        flask.url_for('.list_packages'))
Beispiel #2
0
def delete_package(package):
    ''' Delete the specified package.
    '''
    form = pkgdb2.forms.ConfirmationForm()

    if not form.validate_on_submit():
        flask.flash('Invalid input', 'error')
        return flask.redirect(flask.url_for('.package_info', package=package))

    packagename = package
    package = None
    try:
        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')

    for pkglist in package.listings:
        for acl in pkglist.acls:
            pkgdb2.lib.utils.log(
                SESSION, None, 'acl.delete',
                dict(
                    agent=flask.g.fas_user.username,
                    acl=acl.to_json(),
                ))
            SESSION.delete(acl)
        pkgdb2.lib.utils.log(
            SESSION, None, 'package.branch.delete',
            dict(
                agent=flask.g.fas_user.username,
                package_listing=pkglist.to_json(),
            ))
        SESSION.delete(pkglist)

    pkgdb2.lib.utils.log(
        SESSION, None, 'package.delete',
        dict(
            agent=flask.g.fas_user.username,
            package=package.to_json(),
        ))
    SESSION.delete(package)

    try:
        SESSION.commit()
        flask.flash('Package %s deleted' % packagename)
    except SQLAlchemyError, err:  # pragma: no cover
        SESSION.rollback()
        flask.flash(
            'An error occured while trying to delete the package %s' %
            packagename, 'error')
        APP.logger.debug('Could not delete package: %s', packagename)
        APP.logger.exception(err)
        return flask.redirect(
            flask.url_for('.package_info', package=package.name))