fix: remove duplicate projects from dashboard
Gitea's /api/v1/user/repos already includes all org repos the user has access to. Fetching org repos separately added duplicates. Removed the redundant org-repo loop from dashboard and /api/projects. Also fixed template to use repo.owner.login instead of _org hack.
This commit is contained in:
@@ -82,15 +82,6 @@ async def projects(search: str = Query(default=""), show_archived: bool = Query(
|
|||||||
"""List Gitea projects (JSON)."""
|
"""List Gitea projects (JSON)."""
|
||||||
try:
|
try:
|
||||||
repos = await gitea.get_user_repos(page=1, limit=50)
|
repos = await gitea.get_user_repos(page=1, limit=50)
|
||||||
orgs = await gitea.get_user_orgs()
|
|
||||||
for org in orgs:
|
|
||||||
try:
|
|
||||||
org_repos = await gitea.get_org_repos(org["username"])
|
|
||||||
for r in org_repos:
|
|
||||||
r["_org"] = org["username"]
|
|
||||||
repos.extend(org_repos)
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
if search:
|
if search:
|
||||||
q = search.lower()
|
q = search.lower()
|
||||||
repos = [r for r in repos if q in r.get("full_name", "").lower() or q in (r.get("description") or "").lower()]
|
repos = [r for r in repos if q in r.get("full_name", "").lower() or q in (r.get("description") or "").lower()]
|
||||||
|
|||||||
@@ -20,20 +20,9 @@ async def dashboard(
|
|||||||
):
|
):
|
||||||
"""Dashboard: liste tous les projets Gitea (user + orgs)."""
|
"""Dashboard: liste tous les projets Gitea (user + orgs)."""
|
||||||
try:
|
try:
|
||||||
# User repos
|
# User repos already includes all accessible org repos in Gitea
|
||||||
repos = await gitea.get_user_repos(page=1, limit=50)
|
repos = await gitea.get_user_repos(page=1, limit=50)
|
||||||
|
|
||||||
# Org repos
|
|
||||||
orgs = await gitea.get_user_orgs()
|
|
||||||
for org in orgs:
|
|
||||||
try:
|
|
||||||
org_repos = await gitea.get_org_repos(org["username"])
|
|
||||||
for r in org_repos:
|
|
||||||
r["_org"] = org["username"]
|
|
||||||
repos.extend(org_repos)
|
|
||||||
except Exception:
|
|
||||||
logger.debug("Skip org %s", org.get("username"))
|
|
||||||
|
|
||||||
# Filter
|
# Filter
|
||||||
if search:
|
if search:
|
||||||
q = search.lower()
|
q = search.lower()
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
{% for repo in repos %}
|
{% for repo in repos %}
|
||||||
<a href="/board/{{ repo.owner.login }}/{{ repo.name }}" class="project-card">
|
<a href="/board/{{ repo.owner.login }}/{{ repo.name }}" class="project-card">
|
||||||
<div class="project-card-header">
|
<div class="project-card-header">
|
||||||
<span class="project-org">{{ repo._org or repo.owner.login }}</span>
|
<span class="project-org">{{ repo.owner.login }}</span>
|
||||||
<span class="project-name">{{ repo.name }}</span>
|
<span class="project-name">{{ repo.name }}</span>
|
||||||
{% if repo.archived %}<span class="badge archived">archivé</span>{% endif %}
|
{% if repo.archived %}<span class="badge archived">archivé</span>{% endif %}
|
||||||
{% if repo.private %}<span class="badge private">privé</span>{% endif %}
|
{% if repo.private %}<span class="badge private">privé</span>{% endif %}
|
||||||
|
|||||||
Reference in New Issue
Block a user