From 84710264d5d699eef05fc92ceb61591c90feb296 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 12 Aug 2021 08:21:29 +0200 Subject: [PATCH] Fetch existing resources for sources, trackers This is a generalization of the previous bug fix. --- hubsrht/blueprints/sources.py | 22 ++++++++++++++++------ hubsrht/blueprints/trackers.py | 8 ++++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/hubsrht/blueprints/sources.py b/hubsrht/blueprints/sources.py index 78ee5ba..056800d 100644 --- a/hubsrht/blueprints/sources.py +++ b/hubsrht/blueprints/sources.py @@ -75,10 +75,13 @@ def git_new_POST(owner, project_name): git_repo = git.create_repo(owner, valid, project.visibility) if not valid.ok: repos = git.get_repos(owner) + existing = [r.remote_id for r in (SourceRepo.query + .filter(SourceRepo.project_id == project.id) + .filter(SourceRepo.repo_type == RepoType.git)).all()] return render_template("sources-select.html", view="new-resource", vcs="git", owner=owner, project=project, repos=repos, - existing=[], **valid.kwargs) + existing=existing, **valid.kwargs) else: repo_name = None for field in valid.source: @@ -92,11 +95,13 @@ def git_new_POST(owner, project_name): # TODO: Search properly repos = filter(lambda r: search.lower() in r["name"].lower(), repos) repos = sorted(repos, key=lambda r: r["updated"], reverse=True) - # TODO: Fetch existing repos for this project + existing = [r.remote_id for r in (SourceRepo.query + .filter(SourceRepo.project_id == project.id) + .filter(SourceRepo.repo_type == RepoType.git)).all()] return render_template("sources-select.html", view="new-resource", vcs="git", owner=owner, project=project, repos=repos, - existing=[], search=search) + existing=existing, search=search) git_repo = git.get_repo(owner, repo_name) @@ -135,10 +140,13 @@ def hg_new_POST(owner, project_name): hg_repo = hg.create_repo(owner, valid, project.visibility) if not valid.ok: repos = hg.get_repos(owner) + existing = [r.remote_id for r in (SourceRepo.query + .filter(SourceRepo.project_id == project.id) + .filter(SourceRepo.repo_type == RepoType.hg)).all()] return render_template("sources-select.html", view="new-resource", vcs="hg", owner=owner, project=project, repos=repos, - existing=[], **valid.kwargs) + existing=existing, **valid.kwargs) else: repo_name = None for field in valid.source: @@ -152,11 +160,13 @@ def hg_new_POST(owner, project_name): # TODO: Search properly repos = filter(lambda r: search.lower() in r["name"].lower(), repos) repos = sorted(repos, key=lambda r: r["updated"], reverse=True) - # TODO: Fetch existing repos for this project + existing = [r.remote_id for r in (SourceRepo.query + .filter(SourceRepo.project_id == project.id) + .filter(SourceRepo.repo_type == RepoType.hg)).all()] return render_template("sources-select.html", view="new-resource", vcs="hg", owner=owner, project=project, repos=repos, - existing=[], search=search) + existing=existing, search=search) hg_repo = hg.get_repo(owner, repo_name) diff --git a/hubsrht/blueprints/trackers.py b/hubsrht/blueprints/trackers.py index 0aeed30..0bd51ed 100644 --- a/hubsrht/blueprints/trackers.py +++ b/hubsrht/blueprints/trackers.py @@ -56,9 +56,11 @@ def new_POST(owner, project_name): trackers = todo.get_trackers(owner) trackers = sorted(trackers, key=lambda r: r["updated"], reverse=True) if not valid.ok: + existing = [t.remote_id for t in (Tracker.query + .filter(Tracker.project_id == project.id)).all()] return render_template("tracker-new.html", view="new-resource", owner=owner, project=project, - trackers=trackers, **valid.kwargs) + trackers=trackers, existing=existing, **valid.kwargs) else: tracker_name = None for field in valid.source: @@ -73,9 +75,11 @@ def new_POST(owner, project_name): search.lower() in r["name"].lower() or search.lower() in r["description"].lower(), trackers) trackers = sorted(trackers, key=lambda r: r["updated"], reverse=True) + existing = [t.remote_id for t in (Tracker.query + .filter(Tracker.project_id == project.id)).all()] return render_template("tracker-new.html", view="new-resource", owner=owner, project=project, trackers=trackers, - search=search) + existing=existing, search=search) remote_tracker = todo.get_tracker(owner, tracker_name)