FossilRepo

fossilrepo / core / context_processors.py
Blame History Raw 44 lines
1
from pages.models import Page
2
from projects.models import Project, ProjectGroup
3
4
5
def sidebar(request):
6
if not request.user.is_authenticated:
7
return {}
8
9
projects = Project.objects.all().select_related("group")
10
pages = Page.objects.filter(is_published=True)
11
if request.user.has_perm("pages.change_page") or request.user.is_superuser:
12
pages = Page.objects.all()
13
14
# Build grouped structure for sidebar
15
groups = ProjectGroup.objects.filter(deleted_at__isnull=True)
16
17
grouped_projects = []
18
grouped_ids = set()
19
for group in groups:
20
group_projects = [p for p in projects if p.group_id == group.id]
21
if group_projects:
22
grouped_projects.append({"group": group, "projects": group_projects})
23
grouped_ids.update(p.id for p in group_projects)
24
25
ungrouped_projects = [p for p in projects if p.id not in grouped_ids]
26
27
# Split pages: product docs (known slugs) vs org knowledge base (user-created)
28
PRODUCT_DOC_SLUGS = {
29
"agentic-development", "api-reference", "architecture",
30
"administration", "setup-guide", "getting-started", "features",
31
"roadmap",
32
}
33
product_docs = [p for p in pages if p.slug in PRODUCT_DOC_SLUGS]
34
kb_pages = [p for p in pages if p.slug not in PRODUCT_DOC_SLUGS]
35
36
return {
37
"sidebar_projects": projects,
38
"sidebar_grouped": grouped_projects,
39
"sidebar_ungrouped": ungrouped_projects,
40
"sidebar_pages": pages, # Keep for backwards compat
41
"sidebar_product_docs": product_docs,
42
"sidebar_kb_pages": kb_pages,
43
}
44

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button