feat(P-11): enhance media asset handling with legal hold attributes and update version to 0.8.85
All checks were successful
Deploy Development / deploy (push) Successful in 39s
Test Suite / pytest-backend (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 10s
Test Suite / playwright-tests (push) Successful in 54s
All checks were successful
Deploy Development / deploy (push) Successful in 39s
Test Suite / pytest-backend (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 10s
Test Suite / playwright-tests (push) Successful in 54s
This commit is contained in:
parent
fb8837574e
commit
f79f83e8f9
|
|
@ -1145,7 +1145,10 @@ def list_media_assets(
|
||||||
cur.execute(
|
cur.execute(
|
||||||
f"""SELECT ma.id, ma.mime_type, ma.byte_size, ma.original_filename, ma.visibility, ma.club_id,
|
f"""SELECT ma.id, ma.mime_type, ma.byte_size, ma.original_filename, ma.visibility, ma.club_id,
|
||||||
ma.uploaded_by_profile_id, ma.lifecycle_state, ma.created_at, ma.sha256,
|
ma.uploaded_by_profile_id, ma.lifecycle_state, ma.created_at, ma.sha256,
|
||||||
ma.copyright_notice, ma.storage_key, {tags_select}
|
ma.copyright_notice, ma.storage_key, ma.rights_status,
|
||||||
|
ma.legal_hold_active, ma.legal_hold_reason_code, ma.legal_hold_reason_note,
|
||||||
|
ma.legal_hold_set_at, ma.legal_hold_set_by_profile_id,
|
||||||
|
{tags_select}
|
||||||
pr.name AS uploader_name,
|
pr.name AS uploader_name,
|
||||||
pr.email AS uploader_email,
|
pr.email AS uploader_email,
|
||||||
cl.name AS club_name
|
cl.name AS club_name
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Shinkan Jinkendo Version Information
|
# Shinkan Jinkendo Version Information
|
||||||
|
|
||||||
APP_VERSION = "0.8.84"
|
APP_VERSION = "0.8.85"
|
||||||
BUILD_DATE = "2026-05-11"
|
BUILD_DATE = "2026-05-11"
|
||||||
DB_SCHEMA_VERSION = "20260511051"
|
DB_SCHEMA_VERSION = "20260511051"
|
||||||
|
|
||||||
|
|
@ -33,6 +33,16 @@ MODULE_VERSIONS = {
|
||||||
}
|
}
|
||||||
|
|
||||||
CHANGELOG = [
|
CHANGELOG = [
|
||||||
|
{
|
||||||
|
"version": "0.8.85",
|
||||||
|
"date": "2026-05-11",
|
||||||
|
"changes": [
|
||||||
|
"Fix P-11: Listquery fehlte legal_hold_active/reason_code/reason_note/set_at — Badge und 'Sperre aufheben' im Modal waren nie sichtbar.",
|
||||||
|
"Fix P-11: submitLegalHold rief loadMedia() statt loadItems() auf ('loadMedia is not a function').",
|
||||||
|
"Fix P-11: Journal-Renderpfad verwendete nw.legal_hold_reason_code/note statt nw.reason_code/note (Keys aus dem Audit-Log).",
|
||||||
|
"Fix P-11: Archiv-Picker (ExerciseFormPage, ExerciseInlineFileMediaModal) filtert Legal-Hold-Assets auch fuer Superadmins heraus.",
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "0.8.84",
|
"version": "0.8.84",
|
||||||
"date": "2026-05-11",
|
"date": "2026-05-11",
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ export default function ExerciseInlineFileMediaModal({
|
||||||
limit: 48,
|
limit: 48,
|
||||||
lifecycle: 'active',
|
lifecycle: 'active',
|
||||||
})
|
})
|
||||||
setItems(Array.isArray(res.items) ? res.items : [])
|
setItems(Array.isArray(res.items) ? res.items.filter(a => !a.legal_hold_active) : [])
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
setErr(e.message || String(e))
|
setErr(e.message || String(e))
|
||||||
setItems([])
|
setItems([])
|
||||||
|
|
|
||||||
|
|
@ -434,7 +434,7 @@ function ExerciseFormPage() {
|
||||||
q: archiveQ.trim() || undefined,
|
q: archiveQ.trim() || undefined,
|
||||||
limit: 40,
|
limit: 40,
|
||||||
})
|
})
|
||||||
if (!cancelled) setArchiveItems(res.items || [])
|
if (!cancelled) setArchiveItems((res.items || []).filter(a => !a.legal_hold_active))
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (!cancelled) setArchiveError(e.message || String(e))
|
if (!cancelled) setArchiveError(e.message || String(e))
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
||||||
|
|
@ -508,7 +508,7 @@ export default function MediaLibraryPage() {
|
||||||
setLegalHoldDialog(null)
|
setLegalHoldDialog(null)
|
||||||
setModal(null)
|
setModal(null)
|
||||||
setModalDraft(null)
|
setModalDraft(null)
|
||||||
await loadMedia()
|
await loadItems()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
alert(e.message || String(e))
|
alert(e.message || String(e))
|
||||||
} finally {
|
} finally {
|
||||||
|
|
@ -1634,21 +1634,21 @@ export default function MediaLibraryPage() {
|
||||||
<>
|
<>
|
||||||
<div className="media-library__journal-audit-row">
|
<div className="media-library__journal-audit-row">
|
||||||
<span className="media-library__journal-audit-label">Grund:</span>
|
<span className="media-library__journal-audit-label">Grund:</span>
|
||||||
<span>{LEGAL_HOLD_REASON_LABELS[nw.legal_hold_reason_code] || nw.legal_hold_reason_code || '—'}</span>
|
<span>{LEGAL_HOLD_REASON_LABELS[nw.reason_code] || nw.reason_code || '—'}</span>
|
||||||
</div>
|
</div>
|
||||||
{nw.legal_hold_reason_note ? (
|
{nw.reason_note ? (
|
||||||
<div className="media-library__journal-audit-row">
|
<div className="media-library__journal-audit-row">
|
||||||
<span className="media-library__journal-audit-label">Begründung:</span>
|
<span className="media-library__journal-audit-label">Begründung:</span>
|
||||||
<span>{nw.legal_hold_reason_note}</span>
|
<span>{nw.reason_note}</span>
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
</>
|
</>
|
||||||
) : evt.event_type === 'legal_hold_released' ? (
|
) : evt.event_type === 'legal_hold_released' ? (
|
||||||
<>
|
<>
|
||||||
{nw.legal_hold_release_note ? (
|
{nw.release_note ? (
|
||||||
<div className="media-library__journal-audit-row">
|
<div className="media-library__journal-audit-row">
|
||||||
<span className="media-library__journal-audit-label">Freigabegrund:</span>
|
<span className="media-library__journal-audit-label">Freigabegrund:</span>
|
||||||
<span>{nw.legal_hold_release_note}</span>
|
<span>{nw.release_note}</span>
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
<div className="media-library__journal-audit-row">
|
<div className="media-library__journal-audit-row">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Shinkan Jinkendo Frontend Version
|
// Shinkan Jinkendo Frontend Version
|
||||||
|
|
||||||
export const APP_VERSION = "0.8.84"
|
export const APP_VERSION = "0.8.85"
|
||||||
export const BUILD_DATE = "2026-05-11"
|
export const BUILD_DATE = "2026-05-11"
|
||||||
|
|
||||||
export const PAGE_VERSIONS = {
|
export const PAGE_VERSIONS = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user