Improve artifact availability UX
This commit is contained in:
@@ -166,7 +166,7 @@ class CatalogPlugin:
|
||||
)
|
||||
|
||||
def select_release(self, netbox_version: str, requested_version: str = "") -> Release:
|
||||
compatible = [release for release in self.releases if release.supports(netbox_version, self)]
|
||||
compatible = list(self.installable_releases(netbox_version))
|
||||
if requested_version:
|
||||
compatible = [release for release in compatible if release.version == requested_version]
|
||||
elif self.latest_version:
|
||||
@@ -177,6 +177,26 @@ class CatalogPlugin:
|
||||
raise StoreClientError("No compatible release is available for this NetBox version.")
|
||||
return max(compatible, key=lambda release: Version(release.version))
|
||||
|
||||
def installable_releases(
|
||||
self,
|
||||
netbox_version: str,
|
||||
*,
|
||||
require_approval_marker: bool = False,
|
||||
) -> tuple[Release, ...]:
|
||||
return tuple(
|
||||
release
|
||||
for release in self.releases
|
||||
if (
|
||||
release.supports(netbox_version, self)
|
||||
and release.approved
|
||||
and release.immutable
|
||||
and bool(release.download_url)
|
||||
and bool(release.sha256)
|
||||
and release.artifact_kind in {"wheel", "source_archive"}
|
||||
and (not require_approval_marker or bool(release.approved_payload_sha256))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class StoreClient:
|
||||
API_LIMIT = 5 * 1024 * 1024
|
||||
|
||||
Reference in New Issue
Block a user