Skip to content

Commit 4acff59

Browse files
committed
feat: more info for imported releases under review
also fix some potential type errors in importing
1 parent 3f988dc commit 4acff59

File tree

4 files changed

+36
-13
lines changed

4 files changed

+36
-13
lines changed

django/library/github_integration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ def __init__(self, remote: CodebaseGitRemote, github_release_id: str | int):
548548
self._reimporting = False
549549

550550
if not self.sync_state.download_url:
551-
return self.log_failure("No zipball found in the github release")
551+
raise ValueError("No zipball found in the github release")
552552

553553
@property
554554
def installation_token(self):

django/library/metadata.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -448,11 +448,19 @@ def _extract_os_from_codemeta(self) -> str:
448448
if not codemeta_os:
449449
return ""
450450
if isinstance(codemeta_os, list):
451-
os_str = codemeta_os[0]
452-
elif isinstance(codemeta_os, str):
453-
os_str = codemeta_os
451+
if not codemeta_os:
452+
return ""
453+
os_value = codemeta_os[0]
454454
else:
455-
return ""
455+
os_value = codemeta_os
456+
457+
if isinstance(os_value, str):
458+
os_str = os_value
459+
else:
460+
# try to extract a name from a structured object (e.g., {"name": "Linux"})
461+
os_name = self._get_field(os_value, "name")
462+
os_str = os_name if isinstance(os_name, str) else ""
463+
456464
if os_str:
457465
normalized = os_str.lower()
458466
# attempt to match the given os string to a known platform

django/library/tasks.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ def import_github_release_task(
7171
remote=remote, github_release_id=str(github_release_id)
7272
).first()
7373
if sync_state:
74-
sync_state.status = ImportedReleaseSyncState.Status.ERROR
75-
sync_state.error_message = str(e)
76-
sync_state.save()
74+
sync_state.log_failure(str(e))
7775
except Exception:
7876
logger.exception("Failed to update sync state after import error")
7977
logger.exception("Failed to import GitHub release asynchronously: %s", e)

frontend/src/components/githubIntegration/LocalReleaseItem.vue

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,31 @@
99
<i class="fas fa-lock"></i> Private
1010
</span>
1111
</h6>
12-
<span v-if="release.status === 'UNDER_REVIEW'" class="badge bg-danger">Under Review</span>
12+
<span v-if="release.status.toLowerCase() === 'under_review'" class="badge bg-danger"
13+
>Under Review</span
14+
>
1315
</div>
1416
<div class="text-muted small">
1517
<span v-if="!release.live">
16-
<span v-if="release.importedReleaseSyncState" class="float-end">
17-
<a :href="editHref"><i class="fas fa-edit"></i> Verify import</a>
18+
<span class="float-end">
19+
<a :href="editHref">
20+
<span v-if="release.reviewStatus?.toLowerCase() === 'awaiting_author_changes'">
21+
<i class="fas fa-bell"></i> Verify import and notify reviewers
22+
</span>
23+
<span v-else-if="release.importedReleaseSyncState"
24+
><i class="fas fa-edit"></i> Verify import</span
25+
>
26+
</a>
1827
<BootstrapTooltip
28+
v-if="release.importedReleaseSyncState"
1929
class="ms-1"
20-
title="Releases imported from GitHub will be unpublished until you verify and correct metadata and file categorization. Afterwards, you can publish OR request peer review."
30+
:title="tooltipTitle"
2131
icon-class="fas fa-question-circle text-muted"
2232
placement="bottom"
2333
>
2434
</BootstrapTooltip>
35+
<span v-else class="small">Only published releases are included in git repos</span>
2536
</span>
26-
<span v-else class="small">Only published releases are included in git repos</span>
2737
</span>
2838
<span v-else>Published {{ release.lastPublishedOn }}</span>
2939
</div>
@@ -51,6 +61,13 @@ const editHref = computed(() =>
5161
editUrl(props.release.codebase.identifier, props.release.versionNumber)
5262
);
5363
64+
const tooltipTitle = computed(() => {
65+
if (props.release.status.toLowerCase() === "under_review") {
66+
return "Releases being reviewed must remain unpublished until complete. If revisions are requested, you will need to update the GitHub release tag (see tutorial for help), reimport, and then notify reviewers.";
67+
}
68+
return "Releases imported from GitHub will be unpublished until you verify and correct metadata and file categorization. Afterwards, you can publish OR request peer review.";
69+
});
70+
5471
const isOriginal = computed(() => !props.release.importedReleaseSyncState);
5572
const itemClass = computed(() => {
5673
return [

0 commit comments

Comments
 (0)