from django.contrib import messages from django.views.generic import (TemplateView, ListView, DetailView, CreateView, UpdateView) class BaseContextMixin: title = "Bus Portal" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) user = self.request.user context["theme"] = getattr(user, "theme", "theme-light") nav_links = [ {"name": "Dashboard", "url": "/"}, {"name": "ORBAT", "url": "/orbat/"}, {"name": "Events", "url": "/events/"}, {"name": "Training", "url": "/training/"}, ] context["nav_links"] = nav_links context.setdefault("breadcrumbs", []) context["title"] = getattr(self, "title", "Bus Portal") return context def add_message(self, message, level=messages.INFO): """ Helper to add a message prompt to the user. Can be called from any view inheriting this base. """ messages.add_message(self.request, level, message) class BaseTemplateView(BaseContextMixin, TemplateView): pass class BaseListView(BaseContextMixin, ListView): pass class BaseDetailView(BaseContextMixin, DetailView): pass class BaseCreateView(BaseContextMixin, CreateView): pass class BaseUpdateView(BaseContextMixin, UpdateView): pass