diff --git a/django/website/tabbed_page/views.py b/django/website/tabbed_page/views.py index ffb1e34649bcd0eebc4588c833ff0838f12451d2..b6ba7901d929042f9b57dcf9763e9f8334463c40 100644 --- a/django/website/tabbed_page/views.py +++ b/django/website/tabbed_page/views.py @@ -6,6 +6,7 @@ from .models import TabbedPage class TabbedPageView(TemplateView): template_name = "tabbed_page/tabbed_page.html" _page = None + _active_tab = None @property def tabs(self): @@ -24,3 +25,18 @@ class TabbedPageView(TemplateView): self._page = TabbedPage.objects.get(name=name) return self._page + + @property + def active_tab(self): + if self._active_tab is None: + candidates = [] + tab_name = self.kwargs.get('tab_name') + if tab_name: + candidates = self.page.tabs.all().filter(name=tab_name) + if len(candidates) == 0: + candidates = self.page.tabs.all().filter(default=True) + if len(candidates) == 0: + candidates = self.page.tabs.all() + if len(candidates) > 0: + self._active_tab = candidates[0] + return self._active_tab