Skip to content
Snippets Groups Projects
Commit ee74795c authored by Martin Burchell's avatar Martin Burchell
Browse files

Initial stab at view for tabbed page

The template is a temporary one for now
parent f81a5c05
No related branches found
No related tags found
3 merge requests!23Tabbed view header styling,!19Tab registry,!18Tabbed page
......@@ -5,6 +5,11 @@
{% block maincontent %}
<h1 class="page-header"><span class="fa fa-tabbed-page fa-fw"></span>{% trans "Tabbed Page" %}</h1>
<h2>{{ view }}</h2>
<h3>{{ view.name }}</h3>
<h2>Page = {{ view.page }}</h2>
<ul>
{% for tab in view.tabs %}
<li>{{ tab }}</li>
{% endfor %}
</ul>
{% endblock maincontent %}
from factory.django import DjangoModelFactory
from factory import fuzzy
from ..models import TabbedPage
from ..models import TabbedPage, Tab
class TabbedPageFactory(DjangoModelFactory):
......@@ -9,3 +9,11 @@ class TabbedPageFactory(DjangoModelFactory):
model = TabbedPage
name = fuzzy.FuzzyText()
class TabFactory(DjangoModelFactory):
class Meta:
model = Tab
name = fuzzy.FuzzyText()
label = fuzzy.FuzzyText()
from __future__ import unicode_literals, absolute_import
import pytest
from django.core.urlresolvers import reverse
from django.test import RequestFactory
from django.core.urlresolvers import RegexURLResolver, NoReverseMatch
from ..views import TabbedPageView
from .factories import TabbedPageFactory
from .factories import TabbedPageFactory, TabFactory
@pytest.mark.django_db
def test_name_is_name_of_page():
def test_page_stored_on_view():
page = TabbedPageFactory()
TabbedPageFactory()
view = TabbedPageView()
view.kwargs = {'name': page.name}
assert view.page_name == page.name
assert view.page == page
@pytest.mark.django_db
def test_name_defaults_to_main_when_not_set():
def test_page_defaults_to_main_when_not_set():
page = TabbedPageFactory(name='main')
TabbedPageFactory(name='other')
view = TabbedPageView()
view.kwargs = {}
assert view.page_name == 'main'
assert view.page == page
@pytest.mark.django_db
def test_name_defaults_to_main_when_not_empty():
def test_name_defaults_to_main_when_empty():
page = TabbedPageFactory(name='main')
TabbedPageFactory(name='other')
view = TabbedPageView()
view.kwargs = {'name': ''}
assert view.page_name == 'main'
assert view.page == page
@pytest.mark.django_db
def test_widgets_stored_on_view_in_position_order():
page = TabbedPageFactory()
tab3 = TabFactory(page=page, position=3)
tab1 = TabFactory(page=page, position=1)
tab2 = TabFactory(page=page, position=2)
view = TabbedPageView()
view.kwargs = {'name': page.name}
assert list(view.tabs) == [tab1, tab2, tab3]
......@@ -5,13 +5,22 @@ from .models import TabbedPage
class TabbedPageView(TemplateView):
template_name = "tabbed_page/tabbed_page.html"
_page = None
@property
def page_name(self):
name = self.kwargs.get('name')
def tabs(self):
return self.page.tab_set.all().order_by('position')
if name:
page = TabbedPage.objects.get(name=name)
return page.name
@property
def page(self):
if self._page is None:
name = self.kwargs.get('name')
# TODO: check if name can ever be empty string
# if not, can just put default in get() above
if not name:
name = 'main'
self._page = TabbedPage.objects.get(name=name)
return 'main'
return self._page
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment