Skip to content

Commit 5c10582

Browse files
authored
Merge pull request #23 from nexB/17-check-new-packages
Improve the stability of the "Check for new Package versions" #17
2 parents 05a3a25 + 16011ef commit 5c10582

File tree

5 files changed

+24
-15
lines changed

5 files changed

+24
-15
lines changed

CHANGELOG.rst

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
Release notes
22
=============
33

4+
### Version 5.0.1-dev
5+
6+
- Improve the stability of the "Check for new Package versions" feature.
7+
https://github.com/nexB/dejacode/issues/17
8+
49
### Version 5.0.0
510

611
Initial release.

dejacode/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from dejacode.celery import app as celery_app
1313

14-
VERSION = "5.0.0"
14+
VERSION = "5.0.1-dev"
1515
__version__ = VERSION
1616
__all__ = ["celery_app"]
1717

dejacode_toolkit/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def request_get(self, url, **kwargs):
120120
response.raise_for_status()
121121
return response.json()
122122
except (requests.RequestException, ValueError, TypeError) as exception:
123-
logger.debug(f"{self.label} [Exception] {exception}")
123+
logger.error(f"{self.label} [Exception] {exception}")
124124

125125
def request_post(self, url, **kwargs):
126126
"""
@@ -135,4 +135,4 @@ def request_post(self, url, **kwargs):
135135
response.raise_for_status()
136136
return response.json()
137137
except (requests.RequestException, ValueError, TypeError) as exception:
138-
logger.debug(f"{self.label} [Exception] {exception}")
138+
logger.error(f"{self.label} [Exception] {exception}")

product_portfolio/views.py

+15-11
Original file line numberDiff line numberDiff line change
@@ -1737,29 +1737,33 @@ def check_package_version_ajax_view(request, dataspace, name, version=""):
17371737
max_purls_per_request = 50
17381738
results = []
17391739
for purl_batch in chunked(purls, chunk_size=max_purls_per_request):
1740-
payload = {"purl": purl_batch, "page_size": len(purl_batch)}
1741-
response = purldb.request_get(payload)
1742-
results.extend(response["results"])
1740+
response = purldb.get_package_list(
1741+
page_size=max_purls_per_request,
1742+
extra_payload={"purl": purl_batch},
1743+
)
1744+
if response and response.get("results"):
1745+
results.extend(response["results"])
17431746

17441747
def get_latest_version_entry(current_uuid):
17451748
latest_version_entry = request.session.get(current_uuid)
17461749
if latest_version_entry:
17471750
return latest_version_entry
17481751

17491752
latest_version_entry = purldb.get_package(f"{current_uuid}/latest_version")
1750-
request.session[current_uuid] = latest_version_entry
1751-
return latest_version_entry
1753+
if latest_version_entry:
1754+
request.session[current_uuid] = latest_version_entry
1755+
return latest_version_entry
17521756

17531757
upgrade_available = []
17541758
for purldb_entry in results:
17551759
current_uuid = purldb_entry.get("uuid")
17561760
current_version = purldb_entry.get("version")
1757-
latest_version_entry = get_latest_version_entry(current_uuid)
1758-
latest_version = latest_version_entry.get("version")
1759-
if current_version != latest_version:
1760-
purldb_entry["latest_version"] = latest_version
1761-
purldb_entry["latest_version_uuid"] = latest_version_entry.get("uuid")
1762-
upgrade_available.append(purldb_entry)
1761+
if latest_version_entry := get_latest_version_entry(current_uuid):
1762+
latest_version = latest_version_entry.get("version")
1763+
if current_version != latest_version:
1764+
purldb_entry["latest_version"] = latest_version
1765+
purldb_entry["latest_version_uuid"] = latest_version_entry.get("uuid")
1766+
upgrade_available.append(purldb_entry)
17631767

17641768
return JsonResponse({"success": "success", "upgrade_available": upgrade_available})
17651769

setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = dejacode
3-
version = 5.0.0
3+
version = 5.0.1-dev
44
license = AGPL-3.0-only
55
description = Automate open source license compliance and ensure supply chain integrity
66
long_description = file:README.rst

0 commit comments

Comments
 (0)