From 66ffed2f6f83eecc884ef40874755c5e467e675c Mon Sep 17 00:00:00 2001 From: Jorran de Wit <jorrandewit@outlook.com> Date: Mon, 6 Mar 2017 08:19:35 +0100 Subject: [PATCH] Move Newsitems to separate app Move and `state-migrate` news items away from the mighty `scipost` app. --- news/__init__.py | 0 news/admin.py | 10 ++ news/apps.py | 5 + news/migrations/0001_initial.py | 35 +++++++ news/migrations/__init__.py | 0 news/models.py | 52 ++++++++++ news/tests.py | 3 + news/urls.py | 7 ++ news/views.py | 9 ++ scipost/migrations/0039_auto_20170306_0804.py | 98 +++++++++++++++++++ 10 files changed, 219 insertions(+) create mode 100644 news/__init__.py create mode 100644 news/admin.py create mode 100644 news/apps.py create mode 100644 news/migrations/0001_initial.py create mode 100644 news/migrations/__init__.py create mode 100644 news/models.py create mode 100644 news/tests.py create mode 100644 news/urls.py create mode 100644 news/views.py create mode 100644 scipost/migrations/0039_auto_20170306_0804.py diff --git a/news/__init__.py b/news/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/news/admin.py b/news/admin.py new file mode 100644 index 000000000..43253c6cc --- /dev/null +++ b/news/admin.py @@ -0,0 +1,10 @@ +from django.contrib import admin + +from .models import NewsItem + + +class NewsItemAdmin(admin.ModelAdmin): + search_fields = ['blurb', 'followup_link_text'] + + +admin.site.register(NewsItem, NewsItemAdmin) diff --git a/news/apps.py b/news/apps.py new file mode 100644 index 000000000..5a7b92d0f --- /dev/null +++ b/news/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class NewsConfig(AppConfig): + name = 'news' diff --git a/news/migrations/0001_initial.py b/news/migrations/0001_initial.py new file mode 100644 index 000000000..4df072090 --- /dev/null +++ b/news/migrations/0001_initial.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-03-06 07:04 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('scipost', '0039_auto_20170306_0804'), + ] + + state_operations = [ + migrations.CreateModel( + name='NewsItem', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField()), + ('headline', models.CharField(max_length=300)), + ('blurb', models.TextField()), + ('followup_link', models.URLField(blank=True, null=True)), + ('followup_link_text', models.CharField(blank=True, max_length=300, null=True)), + ], + options={ + 'db_table': 'scipost_newsitem', + }, + ), + ] + + operations = [ + migrations.SeparateDatabaseAndState(state_operations=state_operations) + ] diff --git a/news/migrations/__init__.py b/news/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/news/models.py b/news/models.py new file mode 100644 index 000000000..d421b8c4b --- /dev/null +++ b/news/models.py @@ -0,0 +1,52 @@ +from django.db import models +from django.template import Template, Context + + +class NewsItem(models.Model): + date = models.DateField() + headline = models.CharField(max_length=300) + blurb = models.TextField() + followup_link = models.URLField(blank=True, null=True) + followup_link_text = models.CharField(max_length=300, blank=True, null=True) + + class Meta: + db_table = 'scipost_newsitem' + + def __str__(self): + return self.date.strftime('%Y-%m-%d') + ', ' + self.headline + + def descriptor_full(self): + """ For News page. """ + descriptor = ('<div class="flex-greybox640">' + '<h3 class="NewsHeadline">{{ headline }}</h3>' + '<p>{{ date }}</p>' + '<p>{{ blurb }}</p>' + ) + context = Context({'headline': self.headline, + 'date': self.date.strftime('%Y-%m-%d'), + 'blurb': self.blurb, }) + if self.followup_link: + descriptor += '<p><a href="{{ followup_link }}">{{ followup_link_text }}</a></p>' + context['followup_link'] = self.followup_link + context['followup_link_text'] = self.followup_link_text + descriptor += '</div>' + template = Template(descriptor) + return template.render(context) + + def descriptor_small(self): + """ For index page. """ + descriptor = ('<h3 class="NewsHeadline">{{ headline }}</h3>' + '<div class="p-2">' + '<p>{{ date }}</p>' + '<p>{{ blurb }}</p>' + ) + context = Context({'headline': self.headline, + 'date': self.date.strftime('%Y-%m-%d'), + 'blurb': self.blurb, }) + if self.followup_link: + descriptor += '<p><a href="{{ followup_link }}">{{ followup_link_text }}</a></p>' + context['followup_link'] = self.followup_link + context['followup_link_text'] = self.followup_link_text + descriptor += '</div>' + template = Template(descriptor) + return template.render(context) diff --git a/news/tests.py b/news/tests.py new file mode 100644 index 000000000..7ce503c2d --- /dev/null +++ b/news/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/news/urls.py b/news/urls.py new file mode 100644 index 000000000..a84f2906b --- /dev/null +++ b/news/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^$', views.news, name='news'), +] diff --git a/news/views.py b/news/views.py new file mode 100644 index 000000000..6e6773d73 --- /dev/null +++ b/news/views.py @@ -0,0 +1,9 @@ +from django.shortcuts import render + +from .models import NewsItem + + +def news(request): + newsitems = NewsItem.objects.all().order_by('-date') + context = {'newsitems': newsitems} + return render(request, 'scipost/news.html', context) diff --git a/scipost/migrations/0039_auto_20170306_0804.py b/scipost/migrations/0039_auto_20170306_0804.py new file mode 100644 index 000000000..49894a205 --- /dev/null +++ b/scipost/migrations/0039_auto_20170306_0804.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-03-06 07:04 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('scipost', '0038_nomination_webpage'), + ] + + state_operations = [ + migrations.RemoveField( + model_name='feedback', + name='VGM', + ), + migrations.RemoveField( + model_name='feedback', + name='by', + ), + migrations.RemoveField( + model_name='motion', + name='VGM', + ), + migrations.RemoveField( + model_name='motion', + name='in_agreement', + ), + migrations.RemoveField( + model_name='motion', + name='in_disagreement', + ), + migrations.RemoveField( + model_name='motion', + name='in_notsure', + ), + migrations.RemoveField( + model_name='motion', + name='put_forward_by', + ), + migrations.DeleteModel( + name='NewsItem', + ), + migrations.RemoveField( + model_name='nomination', + name='VGM', + ), + migrations.RemoveField( + model_name='nomination', + name='by', + ), + migrations.RemoveField( + model_name='nomination', + name='in_agreement', + ), + migrations.RemoveField( + model_name='nomination', + name='in_disagreement', + ), + migrations.RemoveField( + model_name='nomination', + name='in_notsure', + ), + migrations.AlterField( + model_name='remark', + name='feedback', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Feedback'), + ), + migrations.AlterField( + model_name='remark', + name='motion', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Motion'), + ), + migrations.AlterField( + model_name='remark', + name='nomination', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Nomination'), + ), + migrations.DeleteModel( + name='Feedback', + ), + migrations.DeleteModel( + name='Motion', + ), + migrations.DeleteModel( + name='Nomination', + ), + migrations.DeleteModel( + name='VGM', + ), + ] + + operations = [ + migrations.SeparateDatabaseAndState(state_operations=state_operations) + ] -- GitLab