47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
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 |