From b5e1770edb07bc3258a881901fe9c4005e4cdb5f Mon Sep 17 00:00:00 2001 From: Alice Heaton <aliceh@aptivate.org> Date: Thu, 6 Aug 2015 11:15:41 +0100 Subject: [PATCH] Add a property to get the currently active tab --- django/website/tabbed_page/views.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/django/website/tabbed_page/views.py b/django/website/tabbed_page/views.py index ffb1e346..b6ba7901 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 -- GitLab