From f2b21d17c7fe86ca0fa4241a149c7ab0a7b32257 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Sat, 9 Mar 2019 13:10:45 +0100
Subject: [PATCH] Allow Post creation on Meeting only if Meeting is ongoing

---
 forums/templates/forums/forum_list.html |  2 +-
 forums/views.py                         | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/forums/templates/forums/forum_list.html b/forums/templates/forums/forum_list.html
index 4e0283eca..0ee35325b 100644
--- a/forums/templates/forums/forum_list.html
+++ b/forums/templates/forums/forum_list.html
@@ -78,7 +78,7 @@
 	  <td><a href="{{ forum.get_absolute_url }}">{{ forum }}</a></td>
 	  <td>{{ forum.latest_post }}</td>
 	  <td>{{ forum.latest_post.posted_on|date:"Y-m-d" }}</td>
-	  <td>{{ forum.nr_posts }}</td>
+	  <td><span class="badge badge-primary badge-pill">{{ forum.nr_posts }}</span></td>
 	</tr>
 	{% empty %}
 	<tr>
diff --git a/forums/views.py b/forums/views.py
index f1a88aa74..807bc90a9 100644
--- a/forums/views.py
+++ b/forums/views.py
@@ -2,6 +2,8 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
 __license__ = "AGPL v3"
 
 
+import datetime
+
 from django import forms
 from django.contrib import messages
 from django.contrib.auth.models import Group
@@ -170,6 +172,18 @@ class PostCreateView(UserPassesTestMixin, CreateView):
         if self.request.user.has_perm('forums.add_forum'):
             return True
         forum = get_object_or_404(Forum, slug=self.kwargs.get('slug'))
+        # Only allow posting if it's within a Forum, or within an ongoing meeting.
+        try:
+            if datetime.date.today() > forum.meeting.date_until:
+                messages.error(self.request,
+                               'Error: you cannot Post to a Meeting which is finished.')
+                raise PermissionDenied
+            elif datetime.date.today () < forum.meeting.date_from:
+                messages.warning(self.request,
+                               'This meeting has not started yet, please come back later!')
+                raise PermissionDenied
+        except Meeting.DoesNotExist:
+            pass
         if self.request.user.has_perm('can_post_to_forum', forum):
             return True
         else:
-- 
GitLab