From 8343a6278055a0af7dc4cdb11180765fd6c9a91d Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Wed, 28 Feb 2018 11:03:58 +0000
Subject: [PATCH] Add basic Activity model and comment form

---
 opentech/apply/activity/forms.py              |  9 ++++++
 .../apply/activity/migrations/0001_initial.py | 30 +++++++++++++++++++
 opentech/apply/activity/models.py             |  8 ++++-
 opentech/apply/activity/views.py              |  8 +++--
 opentech/apply/funds/views.py                 |  4 ++-
 5 files changed, 55 insertions(+), 4 deletions(-)
 create mode 100644 opentech/apply/activity/forms.py
 create mode 100644 opentech/apply/activity/migrations/0001_initial.py

diff --git a/opentech/apply/activity/forms.py b/opentech/apply/activity/forms.py
new file mode 100644
index 000000000..1931ffde3
--- /dev/null
+++ b/opentech/apply/activity/forms.py
@@ -0,0 +1,9 @@
+from django import forms
+
+from .models import Activity
+
+
+class CommentForm(forms.ModelForm):
+    class Meta:
+        model = Activity
+        fields = ('message',)
diff --git a/opentech/apply/activity/migrations/0001_initial.py b/opentech/apply/activity/migrations/0001_initial.py
new file mode 100644
index 000000000..53a29ded1
--- /dev/null
+++ b/opentech/apply/activity/migrations/0001_initial.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.8 on 2018-02-28 11:03
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ('funds', '0025_update_with_file_blocks'),
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Activity',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('timestamp', models.DateTimeField(auto_now_add=True)),
+                ('message', models.TextField()),
+                ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='funds.ApplicationSubmission')),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+    ]
diff --git a/opentech/apply/activity/models.py b/opentech/apply/activity/models.py
index 71a836239..9d47edb77 100644
--- a/opentech/apply/activity/models.py
+++ b/opentech/apply/activity/models.py
@@ -1,3 +1,9 @@
+from django.conf import settings
 from django.db import models
 
-# Create your models here.
+
+class Activity(models.Model):
+    timestamp = models.DateTimeField(auto_now_add=True)
+    user = models.ForeignKey(settings.AUTH_USER_MODEL)
+    application = models.ForeignKey('funds.ApplicationSubmission')
+    message = models.TextField()
diff --git a/opentech/apply/activity/views.py b/opentech/apply/activity/views.py
index 91ea44a21..638e31200 100644
--- a/opentech/apply/activity/views.py
+++ b/opentech/apply/activity/views.py
@@ -1,3 +1,7 @@
-from django.shortcuts import render
+from django.views.generic.edit import ModelFormMixin
 
-# Create your views here.
+from .forms import CommentForm
+
+
+class CommentFormViewMixin(ModelFormMixin):
+    form_class = CommentForm
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index 6068b7cca..076a9db6f 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -5,6 +5,8 @@ from django.views.generic import DetailView
 from django_filters.views import FilterView
 from django_tables2.views import SingleTableMixin
 
+from opentech.apply.activity.views import CommentFormViewMixin
+
 from .models import ApplicationSubmission
 from .tables import SubmissionsTable, SubmissionFilter, SubmissionFilterAndSearch
 from .workflow import SingleStage, DoubleStage
@@ -40,7 +42,7 @@ class SubmissionSearchView(SingleTableMixin, FilterView):
         )
 
 
-class SubmissionDetailView(DetailView):
+class SubmissionDetailView(CommentFormViewMixin, DetailView):
     model = ApplicationSubmission
 
     def get_context_data(self, **kwargs):
-- 
GitLab