Files
my2dos/core/context_processors.py
T
2026-09-11 12:05:42 +02:00

40 lines
1.7 KiB
Python

from django.urls import reverse
from django.utils.translation import gettext as _
from .models import UserPreference, WorkspaceMembership, get_or_create_personal_workspace
def active_workspace_navigation(request):
if not request.user.is_authenticated:
return {'active_workspace': None, 'workspace_memberships': []}
workspace = get_or_create_personal_workspace(request.user)
workspace_id = request.session.get('workspace_id')
if workspace_id:
membership = WorkspaceMembership.objects.select_related('workspace').filter(user=request.user, workspace_id=workspace_id).first()
if membership:
workspace = membership.workspace
return {
'active_workspace': workspace,
'workspace_memberships': WorkspaceMembership.objects.filter(user=request.user).select_related('workspace').order_by('workspace__name'),
}
def overview_navigation(request):
if not request.user.is_authenticated:
return {'nav_overview_labels': [_('Notes'), _('Tasks'), _('Links')], 'nav_hidden_links': []}
prefs, _created = UserPreference.objects.get_or_create(user=request.user)
overview = []
hidden = []
task_shown = prefs.show_open_todos or prefs.show_done_todos
items = [
(task_shown, _('Tasks'), f"{reverse('index')}?kind=todo"),
(prefs.show_notes, _('Notes'), f"{reverse('index')}?kind=note"),
(prefs.show_links, _('Links'), f"{reverse('index')}?kind=link"),
]
for shown, label, url in items:
if shown:
overview.append(label)
else:
hidden.append({'label': label, 'url': url})
return {'nav_overview_labels': overview or [_('Overview')], 'nav_hidden_links': hidden}