diff --git a/src/lando/api/views.py b/src/lando/api/views.py index 534952b93..3e9bb58a5 100644 --- a/src/lando/api/views.py +++ b/src/lando/api/views.py @@ -19,6 +19,7 @@ Revision, add_revisions_to_job, ) +from lando.main.models.landing_job import get_jobs_for_pull from lando.main.models.revision import DiffWarning, DiffWarningStatus from lando.main.scm import ( SCM_TYPE_GIT, @@ -175,15 +176,8 @@ def get( """Return the status of a pull request based on landing job counts.""" target_repo = Repo.objects.get(name=repo_name) + landing_jobs = get_jobs_for_pull(target_repo, pull_number) landing_jobs_by_status = defaultdict(list) - - revisions = Revision.objects.filter( - landing_jobs__target_repo=target_repo, pull_number=pull_number - ) - landing_jobs = LandingJob.objects.filter( - unsorted_revisions__in=revisions - ).order_by("-created_at") - for landing_job in landing_jobs: landing_jobs_by_status[landing_job.status].append(landing_job.id) diff --git a/src/lando/main/models/landing_job.py b/src/lando/main/models/landing_job.py index 2ae4be170..70e6dd244 100644 --- a/src/lando/main/models/landing_job.py +++ b/src/lando/main/models/landing_job.py @@ -13,6 +13,7 @@ from mots.directory import Directory from lando.main.models.jobs import BaseJob +from lando.main.models.repo import Repo from lando.main.models.revision import Revision, RevisionLandingJob logger = logging.getLogger(__name__) @@ -270,3 +271,13 @@ def add_revisions_to_job(revisions: list[Revision], job: LandingJob): """Given an existing job, add and sort provided revisions.""" job.add_revisions(revisions) job.sort_revisions(revisions) + + +def get_jobs_for_pull(target_repo: Repo, pull_number: int) -> QuerySet[LandingJob]: + """Given a target repo and a pull number, return all landing jobs.""" + revisions = Revision.objects.filter( + landing_jobs__target_repo=target_repo, pull_number=pull_number + ) + return LandingJob.objects.filter(unsorted_revisions__in=revisions).order_by( + "-created_at" + ) diff --git a/src/lando/static_src/legacy/css/pages/StackPage.scss b/src/lando/static_src/legacy/css/pages/StackPage.scss index 6e2b3fa32..9e154d123 100644 --- a/src/lando/static_src/legacy/css/pages/StackPage.scss +++ b/src/lando/static_src/legacy/css/pages/StackPage.scss @@ -327,6 +327,10 @@ ul.StackPage-blockers { background-color: #FFFFFF; } } + p { + margin-top: 0; + margin-bottom: 0; + } } %error-message { diff --git a/src/lando/ui/jinja2/partials/job.html b/src/lando/ui/jinja2/partials/job.html index 0829eda14..34a78de51 100644 --- a/src/lando/ui/jinja2/partials/job.html +++ b/src/lando/ui/jinja2/partials/job.html @@ -19,7 +19,7 @@

{% endif %} {% endif %} - {% if job.revisions %} + {% if job.revisions and not job.is_pull_request_job %}

Revisions: {% for i in job.serialized_landing_path -%} {{- "" if loop.first else " ← " -}} diff --git a/src/lando/ui/jinja2/stack/pull_request.html b/src/lando/ui/jinja2/stack/pull_request.html index 5b6fb370a..796116626 100644 --- a/src/lando/ui/jinja2/stack/pull_request.html +++ b/src/lando/ui/jinja2/stack/pull_request.html @@ -3,40 +3,30 @@ {% block main %}

-

{{ pull_request.title }}

+

{{ pull_request.title }} #{{ pull_request.number }} ({{ target_repo.name }}@{{ target_repo.default_branch }})

+

+ +

- - + + - - - - - - + + - - - - - - - @@ -52,5 +42,7 @@

{{ pull_request.title }}

Actions - - Branches{{ pull_request.head_ref }} -> {{ pull_request.base_ref }}
Pull request{{ pull_request.number }}
Target Lando Repo{{ target_repo }} ({{ pull_request.head_repo_git_url }})Repo{{ target_repo}} ({{ pull_request.head_repo_git_url }})
Author {{ pull_request.user_login }}
Working branch{{ pull_request.head_ref }} ({{ pull_request.head_sha }})
Target branch{{ pull_request.base_ref }} ({{ pull_request.base_sha }})
State
+

Landings

+ {% include "stack/partials/timeline.html" %}
{% endblock %} diff --git a/src/lando/ui/pull_requests.py b/src/lando/ui/pull_requests.py index 60f31e8d4..928fe5e33 100644 --- a/src/lando/ui/pull_requests.py +++ b/src/lando/ui/pull_requests.py @@ -4,6 +4,7 @@ from django.template.response import TemplateResponse from lando.main.models import Repo +from lando.main.models.landing_job import get_jobs_for_pull from lando.ui.views import LandoView from lando.utils.github import GitHubAPIClient, PullRequest @@ -20,10 +21,12 @@ def get( target_repo = Repo.objects.get(name=repo_name) client = GitHubAPIClient(target_repo) pull_request = PullRequest(client.get_pull_request(number)) + landing_jobs = get_jobs_for_pull(target_repo, number) context = { "target_repo": target_repo, "pull_request": pull_request, + "landing_jobs": landing_jobs, } return TemplateResponse(