Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions src/lando/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)

Expand Down
11 changes: 11 additions & 0 deletions src/lando/main/models/landing_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)
Expand Down Expand Up @@ -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"
)
4 changes: 4 additions & 0 deletions src/lando/static_src/legacy/css/pages/StackPage.scss
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,10 @@ ul.StackPage-blockers {
background-color: #FFFFFF;
}
}
p {
margin-top: 0;
margin-bottom: 0;
}
}

%error-message {
Expand Down
2 changes: 1 addition & 1 deletion src/lando/ui/jinja2/partials/job.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
</p>
{% endif %}
{% endif %}
{% if job.revisions %}
{% if job.revisions and not job.is_pull_request_job %}
<p><strong>Revisions:</strong>
{% for i in job.serialized_landing_path -%}
{{- "" if loop.first else " ← " -}}
Expand Down
42 changes: 17 additions & 25 deletions src/lando/ui/jinja2/stack/pull_request.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,30 @@

{% block main %}
<main class="StackPage container fullhd">
<h1><a href="{{ pull_request.html_url }}">{{ pull_request.title }}</a></h1>
<h1><a href="{{ pull_request.html_url }}">{{ pull_request.title }}</a> #{{ pull_request.number }} ({{ target_repo.name }}@{{ target_repo.default_branch }})</h1>
<p>
<button
class="button is-large is-loading post-landing-job"
disabled
data-pull-number="{{ pull_request.number }}"
data-head-sha="{{ pull_request.head_sha }}"
data-repo-name="{{ target_repo.name }}"
data-csrf-token="{{ csrf_token }}">
Loading</button>
</p>
<div class="StackPage-stack">
<table>
<tr>
<th>Actions</th>
<td>
<button
class="button is-loading post-landing-job"
disabled
data-pull-number="{{ pull_request.number }}"
data-head-sha="{{ pull_request.head_sha }}"
data-repo-name="{{ target_repo.name }}"
data-csrf-token="{{ csrf_token }}">
Loading</button>
</td>
<th>Branches</th>
<td>{{ pull_request.head_ref }} -&gt; {{ pull_request.base_ref }}</td>
</tr>
<tr>
<th>Pull request</th>
<td>{{ pull_request.number }}</td>
</tr>
<tr>
<th>Target Lando Repo</th>
<td>{{ target_repo }} ({{ pull_request.head_repo_git_url }})</td>
<th>Repo</th>
<td>{{ target_repo}} ({{ pull_request.head_repo_git_url }})</td>
</tr>
<tr>
<th>Author</th>
<td>{{ pull_request.user_login }}</td>
</tr>
<th>Working branch</th>
<td>{{ pull_request.head_ref }} ({{ pull_request.head_sha }})</td>
</tr>
<tr>
<th>Target branch</th>
<td>{{ pull_request.base_ref }} ({{ pull_request.base_sha }})</td>
</tr>
<tr>
<th>State</th>
Expand All @@ -52,5 +42,7 @@ <h1><a href="{{ pull_request.html_url }}">{{ pull_request.title }}</a></h1>
</tr>
</table>
</div>
<h1>Landings</h1>
{% include "stack/partials/timeline.html" %}
</main>
{% endblock %}
3 changes: 3 additions & 0 deletions src/lando/ui/pull_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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(
Expand Down