From 9c609e66d41301327711ae224ed5bb4b65d35d6f Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 5 Jan 2023 19:24:05 +0100 Subject: [PATCH] queue: don't use the srcpkg to display information Instead just use the srcinfo and the packages. In case a package moves between bases it would look up the old srcpkg and display outdated names. This is a leftover from when we had no srcinfo data. --- app/appstate.py | 40 +++++++++++++++++++++++++++------------- app/templates/queue.html | 18 +++++++----------- app/web.py | 14 ++++++-------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/app/appstate.py b/app/appstate.py index 4079e69..f13a897 100644 --- a/app/appstate.py +++ b/app/appstate.py @@ -359,6 +359,29 @@ class Package: return state.sourceinfos[self.name].build_version return "" + @property + def repo_url(self) -> str: + if self.name in state.sourceinfos: + return state.sourceinfos[self.name].repo_url + for repo in get_repositories(): + if repo.name == self.repo: + return repo.src_url + return "" + + @property + def repo_path(self) -> str: + if self.name in state.sourceinfos: + return state.sourceinfos[self.name].repo_path + return self.base + + @property + def history_url(self) -> str: + return self.repo_url + ("/commits/master/" + quote(self.repo_path)) + + @property + def source_url(self) -> str: + return self.repo_url + ("/tree/master/" + quote(self.repo_path)) + @property def key(self) -> PackageKey: return (self.repo, self.repo_variant, @@ -499,28 +522,19 @@ class Source: @property def repo_url(self) -> str: - for p in self.packages.values(): - if p.name in state.sourceinfos: - return state.sourceinfos[p.name].repo_url - for repo in get_repositories(): - if repo.name == p.repo: - return repo.src_url - return "" + return self._package.repo_url @property def repo_path(self) -> str: - for p in self.packages.values(): - if p.name in state.sourceinfos: - return state.sourceinfos[p.name].repo_path - return self.name + return self._package.repo_path @property def source_url(self) -> str: - return self.repo_url + ("/tree/master/" + quote(self.repo_path)) + return self._package.source_url @property def history_url(self) -> str: - return self.repo_url + ("/commits/master/" + quote(self.repo_path)) + return self._package.history_url @property def filebug_url(self) -> str: diff --git a/app/templates/queue.html b/app/templates/queue.html index 7b24439..4318db0 100644 --- a/app/templates/queue.html +++ b/app/templates/queue.html @@ -65,26 +65,22 @@ - {% for (srcpkg, s, p, status) in updates %} + {% for (srcinfo, p, status) in updates %} - {{ srcpkg.date.split()[0] }} + {{ srcinfo.date.split()[0] }} - {% if s %} - {{ s.name }} - {% else %} - {{ srcpkg.pkgbase }} - {% endif %} + {{ srcinfo.pkgbase }} {% if p %} {{ p.version }} {% else %} - {% endif %} → - {{ srcpkg.build_version }} + {{ srcinfo.build_version }} {{ status[0].status }} {% for s in status %} @@ -147,10 +143,10 @@ SigLevel = Never - {% for s, p, note in removals %} + {% for p, note in removals %} - {{ (p.builddate|timestamp).split()[0] }} + {{ (p.builddate|timestamp).split()[0] }} diff --git a/app/web.py b/app/web.py index f73a135..d68bbe7 100644 --- a/app/web.py +++ b/app/web.py @@ -585,7 +585,7 @@ def get_build_status(srcinfo: SrcInfoPackage, repo_list: Set[str] = set()) -> Li async def queue(request: Request, response: Response, repo: str = "") -> Response: # Create entries for all packages where the version doesn't match - UpdateEntry = Tuple[SrcInfoPackage, Optional[Source], Optional[Package], List[PackageBuildStatus]] + UpdateEntry = Tuple[SrcInfoPackage, Optional[Package], List[PackageBuildStatus]] repo_filter = repo or None repos = get_repositories() @@ -602,7 +602,7 @@ async def queue(request: Request, response: Response, repo: str = "") -> Respons if version_is_newer_than(srcinfo.build_version, p.version): srcinfo_repos.setdefault(srcinfo.pkgbase, set()).add(srcinfo.repo) repo_list = srcinfo_repos[srcinfo.pkgbase] if not repo_filter else set([repo_filter]) - grouped[srcinfo.pkgbase] = (srcinfo, s, p, get_build_status(srcinfo, repo_list)) + grouped[srcinfo.pkgbase] = (srcinfo, p, get_build_status(srcinfo, repo_list)) # new packages available: Dict[str, List[SrcInfoPackage]] = {} @@ -619,12 +619,10 @@ async def queue(request: Request, response: Response, repo: str = "") -> Respons for srcinfo in srcinfos: srcinfo_repos.setdefault(srcinfo.pkgbase, set()).add(srcinfo.repo) repo_list = srcinfo_repos[srcinfo.pkgbase] if not repo_filter else set([repo_filter]) - src, pkg = None, None + pkg = None if srcinfo.pkgbase in grouped: - src, pkg = grouped[srcinfo.pkgbase][1:3] - elif srcinfo.pkgbase in state.sources: - src = state.sources[srcinfo.pkgbase] - grouped[srcinfo.pkgbase] = (srcinfo, src, pkg, get_build_status(srcinfo, repo_list)) + pkg = grouped[srcinfo.pkgbase][1] + grouped[srcinfo.pkgbase] = (srcinfo, pkg, get_build_status(srcinfo, repo_list)) updates: List[UpdateEntry] = [] updates = list(grouped.values()) @@ -641,7 +639,7 @@ async def queue(request: Request, response: Response, repo: str = "") -> Respons if p.name not in state.sourceinfos: # FIXME: can also break things if it's the only provides and removed, # and also is ok to remove if there is a replacement - removals.append((s, p, ", ".join([d.name for d in p.rdepends]))) + removals.append((p, ", ".join([d.name for d in p.rdepends]))) return templates.TemplateResponse("queue.html", { "request": request,