From 06b409b7ea81dd346d893df1e68af4f90fbd90e4 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Fri, 3 Mar 2023 13:52:37 +0100 Subject: [PATCH] MT#56231 gerrit: fixes gerrit URL needs a/ as prefix for authenticate access https: //gerrit-review.googlesource.com/Documentation/rest-api.html#authentication remove info from db that is not in gerrit Change-Id: Icb49e4244fb058db0bb87ff27e7c8d8fe55c94d7 --- gerrit/management/commands/gerrit.py | 17 +++++++++++------ gerrit/utils.py | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/gerrit/management/commands/gerrit.py b/gerrit/management/commands/gerrit.py index d05bc1d..32b5e06 100644 --- a/gerrit/management/commands/gerrit.py +++ b/gerrit/management/commands/gerrit.py @@ -15,6 +15,7 @@ from datetime import date from django.core.management.base import BaseCommand +from requests.exceptions import HTTPError from gerrit.utils import get_change_info from gerrit.utils import get_datetime @@ -30,12 +31,16 @@ class Command(BaseCommand): def refresh(self, *args, **options): qs = GerritRepoInfo.objects.filter(created__date=date(1977, 1, 1)) for gri in qs.iterator(): - info = get_change_info(gri.gerrit_change) - gri.created = get_datetime(info["created"]) - gri.modified = get_datetime(info["updated"]) - # don't update modified field on save - gri.update_modified = False - gri.save() + try: + info = get_change_info(gri.gerrit_change) + gri.created = get_datetime(info["created"]) + gri.modified = get_datetime(info["updated"]) + # don't update modified field on save + gri.update_modified = False + gri.save() + except HTTPError: + self.stderr.write(f"{gri} not found, remove it from db") + gri.delete() def handle(self, *args, **options): action = getattr(self, options["action"]) diff --git a/gerrit/utils.py b/gerrit/utils.py index 7a056e3..6367984 100644 --- a/gerrit/utils.py +++ b/gerrit/utils.py @@ -64,12 +64,12 @@ def get_gerrit_branches(project: str, regex=None): def get_gerrit_change(id: str) -> str: - url = gerrit_settings.URL.format(f"changes/{id}/") + url = gerrit_settings.URL.format(f"a/changes/{id}") return get_gerrit_info(url) def get_change_info(id: str): - return get_filtered_json(get_gerrit_info(id)) + return get_filtered_json(get_gerrit_change(id)) def get_datetime(val: str) -> datetime.datetime: