Example #1
0
def delete_package_version(
        platform: str,
        filename: str,
        channel_name: str,
        package_name: str,
        dao: Dao = Depends(get_dao),
        db=Depends(get_db),
        auth: authorization.Rules = Depends(get_rules),
):

    version = dao.get_package_version_by_filename(channel_name, package_name,
                                                  filename, platform)

    auth.assert_package_delete(version.package)

    if not version:
        raise HTTPException(
            status_code=status.HTTP_404_NOT_FOUND,
            detail=f"package version {platform}/{filename} not found",
        )

    db.delete(version)
    db.commit()

    path = os.path.join(platform, filename)
    pkgstore.delete_file(channel_name, path)

    dao.update_channel_size(channel_name)
Example #2
0
def delete_package(
    package: db_models.Package = Depends(get_package_or_fail),
    db=Depends(get_db),
    auth: authorization.Rules = Depends(get_rules),
):

    auth.assert_package_delete(package)

    filenames = [
        os.path.join(version.platform, version.filename)
        for version in package.package_versions  # type: ignore
    ]
    channel_name = package.channel_name

    db.delete(package)
    db.commit()

    for filename in filenames:
        pkgstore.delete_file(channel_name, filename)