in backend/code_review_backend/issues/management/commands/load_issues.py [0:0]
def build_revision_and_diff(self, data, task_id):
"""Build or retrieve a revision and diff in current repo from report's data"""
try:
head_repository = self.get_or_create_repository(data["repository"])
except ValueError:
return None, None
try:
base_repository = self.get_or_create_repository(data["target_repository"])
except ValueError:
return None, None
revision, _ = head_repository.head_revisions.get_or_create(
phabricator_id=data["id"],
defaults={
"phabricator_phid": data["phid"],
"title": data["title"],
"bugzilla_id": int(data["bugzilla_id"])
if data["bugzilla_id"]
else None,
"base_repository": base_repository,
},
)
diff, _ = revision.diffs.get_or_create(
id=data["diff_id"],
defaults={
"repository": head_repository,
"phid": data["diff_phid"],
"review_task_id": task_id,
"mercurial_hash": data["mercurial_revision"],
},
)
return revision, diff