Skip to content

Commit

Permalink
base: add option to filter by repo
Browse files Browse the repository at this point in the history
mostly useful to show only cygwin packages for example
  • Loading branch information
lazka committed Jan 17, 2025
1 parent bf40a8d commit b4dd495
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 13 deletions.
18 changes: 18 additions & 0 deletions app/templates/baseindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,24 @@ <h4 class="card-title">Base Packages</h4>
<h6 class="card-subtitle mb-2 text-muted">{{ sources|length }} base packages</h6>
</div>
<div class="card-body overflow-auto">

<form class="row g-2 align-items-center" action="{{ url_for('baseindex') }}" method="get">
<div class="col-auto">
Repository:
</div>

<div class="col-auto">
<select name="repo" class="form-select form-select-sm" onchange="this.form.submit()">
<option {{ "selected" if not repo_filter or "" }} value="">All</option>
{% for r in repos %}
<option value="{{ r.name }}" {{ "selected" if repo_filter == r.name or "" }}>{{ r.name }}</option>
{% endfor %}
</select>
</div>
</form>

<br>

<table class="table table-hover table-sm" style="table-layout: fixed; width:100%;">
<colgroup>
<col style="width: 25%">
Expand Down
2 changes: 1 addition & 1 deletion app/templates/navbar.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<a class="nav-link {{ 'active' if is_endpoint('repos') else '' }}" href="{{ url_for('repos') }}">Repos</a>
</li>
<li class="nav-item">
<a class="nav-link {{ 'active' if is_endpoint('base') else '' }}" href="{{ url_for('base') }}">Base Packages</a>
<a class="nav-link {{ 'active' if is_endpoint('base') else '' }}" href="{{ url_for('baseindex') }}">Base Packages</a>
</li>
<li class="nav-item">
<a class="nav-link {{ 'active' if is_endpoint('packages') else '' }}" href="{{ url_for('packages') }}">Packages</a>
Expand Down
43 changes: 31 additions & 12 deletions app/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,22 +237,41 @@ async def index(request: Request, response: Response) -> Response:


@router.get('/base', dependencies=[Depends(Etag(get_etag))])
async def baseindex(request: Request, response: Response, repo: str | None = None) -> Response:
global state

repo_filter = repo or None
repos = get_repositories()

filtered: list[Source] = []
if repo_filter is None:
filtered = list(state.sources.values())
else:
for s in state.sources.values():
for p in s.packages.values():
if p.repo == repo_filter:
filtered.append(s)
break

return templates.TemplateResponse(request, "baseindex.html", {
"sources": filtered,
"repos": repos,
"repo_filter": repo_filter,
}, headers=dict(response.headers))


@router.get('/base/{base_name}', dependencies=[Depends(Etag(get_etag))])
async def base(request: Request, response: Response, base_name: str | None = None) -> Response:
async def base(request: Request, response: Response, base_name: str) -> Response:
global state

if base_name is not None:
if base_name in state.sources:
res = [state.sources[base_name]]
else:
res = []
return templates.TemplateResponse(request, "base.html", {
"sources": res,
}, status_code=200 if res else 404, headers=dict(response.headers))

if base_name in state.sources:
res = [state.sources[base_name]]
else:
return templates.TemplateResponse(request, "baseindex.html", {
"sources": state.sources.values(),
}, headers=dict(response.headers))
res = []
return templates.TemplateResponse(request, "base.html", {
"sources": res,
}, status_code=200 if res else 404, headers=dict(response.headers))


@router.get('/security', dependencies=[Depends(Etag(get_etag))])
Expand Down

0 comments on commit b4dd495

Please sign in to comment.