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