From 9dcd4648e02e4a0c91b4ef6ad0c929200f786ed1 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Sat, 18 Mar 2017 21:09:25 +0100
Subject: [PATCH] Add static information models

Static information which is easier to track using the database,
 here the editorial college members shown on the about page,
 will be shown from the new model and not be hardcoded into the
 HTML templates.
---
 ...editorialcollege_editorialcollegemember.py | 34 +++++++++++++++++++
 scipost/models.py                             | 25 +++++++++++++-
 2 files changed, 58 insertions(+), 1 deletion(-)
 create mode 100644 scipost/migrations/0041_editorialcollege_editorialcollegemember.py

diff --git a/scipost/migrations/0041_editorialcollege_editorialcollegemember.py b/scipost/migrations/0041_editorialcollege_editorialcollegemember.py
new file mode 100644
index 000000000..fa72a86c6
--- /dev/null
+++ b/scipost/migrations/0041_editorialcollege_editorialcollegemember.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-03-18 20:08
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scipost', '0040_auto_20170317_1659'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='EditorialCollege',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('discipline', models.CharField(max_length=255)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='EditorialCollegeMember',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=255)),
+                ('title', models.CharField(blank=True, max_length=10)),
+                ('link', models.URLField(blank=True)),
+                ('subtitle', models.CharField(blank=True, max_length=255)),
+                ('discipline', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='member', to='scipost.EditorialCollege')),
+            ],
+        ),
+    ]
diff --git a/scipost/models.py b/scipost/models.py
index 80d0640e6..bfed272e4 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -4,7 +4,6 @@ from django import forms
 from django.contrib.auth.models import User
 from django.contrib.postgres.fields import ArrayField
 from django.db import models
-from django.shortcuts import get_object_or_404
 from django.template import Template, Context
 from django.utils import timezone
 from django.utils.safestring import mark_safe
@@ -512,3 +511,27 @@ class SPBMembershipAgreement(models.Model):
         return (str(self.partner) +
                 ' [' + spb_membership_duration_dict[self.duration] +
                 ' from ' + self.start_date.strftime('%Y-%m-%d') + ']')
+
+
+######################
+# Static info models #
+######################
+
+class EditorialCollege(models.Model):
+    '''A SciPost Editorial College for a specific discipline.'''
+    discipline = models.CharField(max_length=255)
+
+
+class EditorialCollegeMember(models.Model):
+    """
+    Editorial College Members for non-functional use!
+    This model is used for static information purposes only.
+    """
+    name = models.CharField(max_length=255)
+    title = models.CharField(max_length=10, blank=True)
+    link = models.URLField(blank=True)
+    subtitle = models.CharField(max_length=255, blank=True)
+    discipline = models.ForeignKey('scipost.EditorialCollege', related_name='member')
+
+    def __str__(self):
+        return ('%s %s' % (self.title, self.name)).strip()
-- 
GitLab