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}