FossilRepo

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

Keyboard Shortcuts

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