generated from coulomb/repo-seed
repository metadata editing in the UI
This commit is contained in:
@@ -292,6 +292,13 @@ def repository_detail(
|
|||||||
{render_repository_facts(languages, frameworks)}
|
{render_repository_facts(languages, frameworks)}
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<section class="panel">
|
<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>
|
<h2>Run Analysis</h2>
|
||||||
<form class="stack" method="post" action="/ui/repos/{repository_id}/analysis-runs">
|
<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>
|
<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)
|
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")
|
@router.post("/ui/repos/{repository_id}/abilities")
|
||||||
def create_ability_from_form(
|
def create_ability_from_form(
|
||||||
repository_id: int,
|
repository_id: int,
|
||||||
|
|||||||
@@ -365,6 +365,21 @@ def test_ui_register_analyze_and_approve_loop(tmp_path):
|
|||||||
detail_response = client.get(repository_path)
|
detail_response = client.get(repository_path)
|
||||||
assert detail_response.status_code == 200
|
assert detail_response.status_code == 200
|
||||||
assert "Run Analysis" in detail_response.text
|
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(
|
run_response = client.post(
|
||||||
f"{repository_path}/analysis-runs",
|
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"])
|
approved_detail = client.get(approve_response.headers["location"])
|
||||||
assert approved_detail.status_code == 200
|
assert approved_detail.status_code == 200
|
||||||
assert "Approved Ability Map" in approved_detail.text
|
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 "Language: Python" in approved_detail.text
|
||||||
assert "Framework: FastAPI" in approved_detail.text
|
assert "Framework: FastAPI" in approved_detail.text
|
||||||
assert "interface:app.py:3" in approved_detail.text
|
assert "interface:app.py:3" in approved_detail.text
|
||||||
|
|||||||
Reference in New Issue
Block a user