Skip to content

Commit

Permalink
stacks: add revision data to API response (bug 1835678)
Browse files Browse the repository at this point in the history
- add Lando revision data to API response
- add serialize method to Revision class
  • Loading branch information
zzzeid committed May 29, 2023
1 parent e84e171 commit e53bf92
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 10 deletions.
30 changes: 20 additions & 10 deletions landoapi/api/stacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from flask import current_app
from landoapi.commit_message import format_commit_message
from landoapi.decorators import require_phabricator_api_key
from landoapi.models.revisions import Revision
from landoapi.phabricator import PhabricatorClient
from landoapi.projects import (
get_release_managers,
Expand Down Expand Up @@ -116,19 +117,25 @@ def get(phab: PhabricatorClient, revision_id: str):
}

revisions_response = []
for revision_phid, revision in stack_data.revisions.items():
fields = PhabricatorClient.expect(revision, "fields")
for _phid, phab_revision in stack_data.revisions.items():
lando_revision = Revision.query.filter(
Revision.revision_id == phab_revision["id"]
).one_or_none()
revision_phid = PhabricatorClient.expect(phab_revision, "phid")
fields = PhabricatorClient.expect(phab_revision, "fields")
diff_phid = PhabricatorClient.expect(fields, "diffPHID")
repo_phid = PhabricatorClient.expect(fields, "repositoryPHID")
diff = stack_data.diffs[diff_phid]
human_revision_id = "D{}".format(PhabricatorClient.expect(revision, "id"))
human_revision_id = "D{}".format(PhabricatorClient.expect(phab_revision, "id"))
revision_url = urllib.parse.urljoin(
current_app.config["PHABRICATOR_URL"], human_revision_id
)
secure = revision_is_secure(revision, secure_project_phid)
commit_description = find_title_and_summary_for_display(phab, revision, secure)
bug_id = get_bugzilla_bug(revision)
reviewers = get_collated_reviewers(revision)
secure = revision_is_secure(phab_revision, secure_project_phid)
commit_description = find_title_and_summary_for_display(
phab, phab_revision, secure
)
bug_id = get_bugzilla_bug(phab_revision)
reviewers = get_collated_reviewers(phab_revision)
accepted_reviewers = reviewers_for_commit_message(
reviewers, users, projects, sec_approval_project_phid
)
Expand Down Expand Up @@ -163,16 +170,16 @@ def get(phab: PhabricatorClient, revision_id: str):
{
"id": human_revision_id,
"phid": revision_phid,
"status": serialize_status(revision),
"status": serialize_status(phab_revision),
"blocked_reason": blocked.get(revision_phid, ""),
"bug_id": bug_id,
"title": commit_description.title,
"url": revision_url,
"date_created": PhabricatorClient.to_datetime(
PhabricatorClient.expect(revision, "fields", "dateCreated")
PhabricatorClient.expect(phab_revision, "fields", "dateCreated")
).isoformat(),
"date_modified": PhabricatorClient.to_datetime(
PhabricatorClient.expect(revision, "fields", "dateModified")
PhabricatorClient.expect(phab_revision, "fields", "dateModified")
).isoformat(),
"summary": commit_description.summary,
"commit_message_title": commit_message_title,
Expand All @@ -183,6 +190,9 @@ def get(phab: PhabricatorClient, revision_id: str):
"reviewers": serialize_reviewers(reviewers, users, projects, diff_phid),
"is_secure": secure,
"is_using_secure_commit_message": commit_description.sanitized,
"lando_revision": lando_revision.serialize()
if lando_revision
else None,
}
)

Expand Down
10 changes: 10 additions & 0 deletions landoapi/models/revisions.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,16 @@ def set_patch(self, raw_diff: bytes, patch_data: dict[str, str]):
patch = build_patch_for_revision(raw_diff, **self.patch_data)
self.patch_bytes = patch.encode("utf-8")

def serialize(self):
return {
"id": self.id,
"revision_id": self.revision_id,
"diff_id": self.diff_id,
"landing_jobs": [job.id for job in self.landing_jobs],
"created_at": self.created_at,
"updated_at": self.updated_at,
}


class DiffWarning(Base):
"""Represents a warning message associated with a particular diff and revision."""
Expand Down

0 comments on commit e53bf92

Please sign in to comment.