FossilRepo

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

Keyboard Shortcuts

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