From f0cd05386bcd291b60f4f9fcfcb2416e96dcf452 Mon Sep 17 00:00:00 2001
From: Martin Burchell <martinb@aptivate.org>
Date: Wed, 5 Aug 2015 15:26:13 +0100
Subject: [PATCH] Renamed Tab model class to be consistent

As Dashboard has WidgetInstance objects, TabbedPage has TabInstance
---
 django/website/tabbed_page/admin.py           |  4 +-
 .../migrations/0002_auto_20150805_1521.py     | 43 +++++++++++++++++++
 django/website/tabbed_page/models.py          |  4 +-
 django/website/tabbed_page/tests/factories.py |  6 +--
 .../website/tabbed_page/tests/view_tests.py   |  8 ++--
 django/website/tabbed_page/views.py           |  2 +-
 6 files changed, 55 insertions(+), 12 deletions(-)
 create mode 100644 django/website/tabbed_page/migrations/0002_auto_20150805_1521.py

diff --git a/django/website/tabbed_page/admin.py b/django/website/tabbed_page/admin.py
index 7c897219..050fc71c 100644
--- a/django/website/tabbed_page/admin.py
+++ b/django/website/tabbed_page/admin.py
@@ -1,9 +1,9 @@
 from django.contrib import admin
-from .models import TabbedPage, Tab
+from .models import TabbedPage, TabInstance
 
 
 class TabInline(admin.StackedInline):
-    model = Tab
+    model = TabInstance
     extra = 0
 
 
diff --git a/django/website/tabbed_page/migrations/0002_auto_20150805_1521.py b/django/website/tabbed_page/migrations/0002_auto_20150805_1521.py
new file mode 100644
index 00000000..c0ed816a
--- /dev/null
+++ b/django/website/tabbed_page/migrations/0002_auto_20150805_1521.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import jsonfield.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('tabbed_page', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='TabInstance',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('settings', jsonfield.fields.JSONField(blank=True)),
+                ('view_name', models.CharField(max_length=128)),
+                ('name', models.CharField(max_length=128)),
+                ('default', models.BooleanField(default=False)),
+                ('position', models.PositiveIntegerField(default=0)),
+                ('label', models.CharField(max_length=128)),
+                ('page', models.ForeignKey(to='tabbed_page.TabbedPage')),
+            ],
+        ),
+        migrations.AlterUniqueTogether(
+            name='tab',
+            unique_together=set([]),
+        ),
+        migrations.RemoveField(
+            model_name='tab',
+            name='page',
+        ),
+        migrations.DeleteModel(
+            name='Tab',
+        ),
+        migrations.AlterUniqueTogether(
+            name='tabinstance',
+            unique_together=set([('name', 'page')]),
+        ),
+    ]
diff --git a/django/website/tabbed_page/models.py b/django/website/tabbed_page/models.py
index a5f6ff02..01aadfce 100644
--- a/django/website/tabbed_page/models.py
+++ b/django/website/tabbed_page/models.py
@@ -12,10 +12,10 @@ class TabbedPage(models.Model):
         return self.name
 
 
-class Tab(models.Model):
+class TabInstance(models.Model):
     settings = JSONField(blank=True)
     view_name = models.CharField(max_length=128)
-    page = models.ForeignKey(TabbedPage)
+    page = models.ForeignKey(TabbedPage, related_name='tabs')
     name = models.CharField(max_length=128)
     default = models.BooleanField(default=False)
     position = models.PositiveIntegerField(default=0)
diff --git a/django/website/tabbed_page/tests/factories.py b/django/website/tabbed_page/tests/factories.py
index 4ae233e4..8c63caac 100644
--- a/django/website/tabbed_page/tests/factories.py
+++ b/django/website/tabbed_page/tests/factories.py
@@ -1,7 +1,7 @@
 from factory.django import DjangoModelFactory
 from factory import fuzzy
 
-from ..models import TabbedPage, Tab
+from ..models import TabbedPage, TabInstance
 
 
 class TabbedPageFactory(DjangoModelFactory):
@@ -11,9 +11,9 @@ class TabbedPageFactory(DjangoModelFactory):
     name = fuzzy.FuzzyText()
 
 
-class TabFactory(DjangoModelFactory):
+class TabInstanceFactory(DjangoModelFactory):
     class Meta:
-        model = Tab
+        model = TabInstance
 
     name = fuzzy.FuzzyText()
     label = fuzzy.FuzzyText()
diff --git a/django/website/tabbed_page/tests/view_tests.py b/django/website/tabbed_page/tests/view_tests.py
index 6adbd833..29017fc4 100644
--- a/django/website/tabbed_page/tests/view_tests.py
+++ b/django/website/tabbed_page/tests/view_tests.py
@@ -3,7 +3,7 @@ import pytest
 
 from ..views import TabbedPageView
 
-from .factories import TabbedPageFactory, TabFactory
+from .factories import TabbedPageFactory, TabInstanceFactory
 
 
 @pytest.mark.django_db
@@ -42,9 +42,9 @@ def test_name_defaults_to_main_when_empty():
 @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)
+    tab3 = TabInstanceFactory(page=page, position=3)
+    tab1 = TabInstanceFactory(page=page, position=1)
+    tab2 = TabInstanceFactory(page=page, position=2)
 
     view = TabbedPageView()
     view.kwargs = {'name': page.name}
diff --git a/django/website/tabbed_page/views.py b/django/website/tabbed_page/views.py
index 59206fc9..ffb1e346 100644
--- a/django/website/tabbed_page/views.py
+++ b/django/website/tabbed_page/views.py
@@ -9,7 +9,7 @@ class TabbedPageView(TemplateView):
 
     @property
     def tabs(self):
-        return self.page.tab_set.all().order_by('position')
+        return self.page.tabs.all().order_by('position')
 
     @property
     def page(self):
-- 
GitLab