repository metadata editing in the UI

This commit is contained in:
2026-04-26 02:32:41 +02:00
parent 9ed98c7058
commit 9a6b8ea6bf
2 changed files with 40 additions and 1 deletions

View File

@@ -292,6 +292,13 @@ def repository_detail(
{render_repository_facts(languages, frameworks)}
<div class="grid">
<section class="panel">
<h2>Repository Metadata</h2>
<form class="stack" method="post" action="/ui/repos/{repository_id}/edit">
<label>Name <input name="name" value="{escape(repository.name)}" required></label>
<label>Description <textarea name="description" rows="2">{escape(repository.description or '')}</textarea></label>
<label>Branch <input name="branch" value="{escape(repository.branch)}" required></label>
<button class="secondary" type="submit">Save Repository</button>
</form>
<h2>Run Analysis</h2>
<form class="stack" method="post" action="/ui/repos/{repository_id}/analysis-runs">
<label>Override source path <input name="source_path" placeholder="Optional local path"></label>
@@ -355,6 +362,23 @@ def repository_detail(
return page(repository.name, body)
@router.post("/ui/repos/{repository_id}/edit")
def edit_repository_from_form(
repository_id: int,
name: str = Form(...),
description: str = Form(""),
branch: str = Form("main"),
service: RegistryService = Depends(get_service),
) -> RedirectResponse:
service.update_repository(
repository_id,
name=name,
description=description,
branch=branch or "main",
)
return RedirectResponse(f"/ui/repos/{repository_id}", status_code=303)
@router.post("/ui/repos/{repository_id}/abilities")
def create_ability_from_form(
repository_id: int,

View File

@@ -365,6 +365,21 @@ def test_ui_register_analyze_and_approve_loop(tmp_path):
detail_response = client.get(repository_path)
assert detail_response.status_code == 200
assert "Run Analysis" in detail_response.text
assert "Repository Metadata" in detail_response.text
edit_repository_response = client.post(
f"{repository_path}/edit",
data={
"name": "UI Repo Edited",
"description": "Edited in the UI.",
"branch": "develop",
},
follow_redirects=False,
)
assert edit_repository_response.status_code == 303
detail_response = client.get(repository_path)
assert "UI Repo Edited" in detail_response.text
assert "develop" in detail_response.text
run_response = client.post(
f"{repository_path}/analysis-runs",
@@ -389,7 +404,7 @@ def test_ui_register_analyze_and_approve_loop(tmp_path):
approved_detail = client.get(approve_response.headers["location"])
assert approved_detail.status_code == 200
assert "Approved Ability Map" in approved_detail.text
assert "Review UI Repo Repository Usefulness" in approved_detail.text
assert "Review UI Repo Edited Repository Usefulness" in approved_detail.text
assert "Language: Python" in approved_detail.text
assert "Framework: FastAPI" in approved_detail.text
assert "interface:app.py:3" in approved_detail.text