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.number }} ({{ target_repo.name }}@{{ target_repo.default_branch }})
+
+
+
- | 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 |
@@ -52,5 +42,7 @@
+ 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(