diff --git a/forums/models.py b/forums/models.py index ef03914f29c8739bffb8fd7794356079d19560cf..44117bd82e28064e78431d257b3fed90540a4119 100644 --- a/forums/models.py +++ b/forums/models.py @@ -63,7 +63,7 @@ class Forum(models.Model): ] def __str__(self): - return self.slug + return self.name def get_absolute_url(self): return reverse('forums:forum_detail', kwargs={'slug': self.slug}) @@ -129,17 +129,17 @@ class Meeting(Forum): self.date_until.strftime('%Y-%m-%d')) @property - def context_color(self): - """If meeting is future: primary; ongoing: green; voting: orange; finished: info.""" + def context_colors(self): + """If meeting is future: primary; ongoing: success; voting: warning; finished: info.""" today = datetime.date.today() if today < self.date_from: - return 'primary' + return {'bg': 'primary', 'text': 'white', 'message': 'Meeting is coming up'} elif today <= self.date_until: - return 'success' + return {'bg': 'success', 'text': 'light', 'message': 'Meeting is ongoing'} elif today < self.date_until + datetime.timedelta(days=8): - return 'warning' + return {'bg': 'warning', 'text': 'dark', 'message': 'Meeting is finished, voting open'} else: - return 'info' + return {'bg': 'info', 'text': 'dark', 'message': 'Meeting is finished'} class Post(models.Model): diff --git a/forums/templates/forums/forum_list.html b/forums/templates/forums/forum_list.html index f7806ccea9ef9d01e0e5cc724bacfd711fe1f96b..9df6817b4da90a9e83ba3aaccd67b787706bbf8b 100644 --- a/forums/templates/forums/forum_list.html +++ b/forums/templates/forums/forum_list.html @@ -28,11 +28,15 @@ <div class="card-columns"> {% for forum in object_list %} <div class="card"> - <div class="card-header d-flex justify-content-between"> + <div class="card-header"> {% if forum.meeting %} - <span class="badge badge-{{ forum.meeting.context_color }}">Meeting:</span> + {% with context_colors=forum.meeting.context_colors %} + <span class="badge badge-{{ context_colors.bg }} mx-0 mb-2 p-2 text-{{ context_colors.text }}">{{ context_colors.message }}</span> + {% endwith %} + <br/> {% endif %} - <a href="{{ forum.get_absolute_url }}">{{ forum }}</a> + <span class="d-flex justify-content-between"> + <a href="{{ forum.get_absolute_url }}">{{ forum|truncatechars:30 }}</a> <span class="badge badge-primary badge-pill">{{ forum.nr_posts }} post{{ forum.nr_posts|pluralize }}</span> </div> <div class="card-body"> diff --git a/forums/views.py b/forums/views.py index 2607f47a45a77e46c0ac9b87d927b52ade5c8166..f1a88aa746089a42f4d69019447298bfa4bdb981 100644 --- a/forums/views.py +++ b/forums/views.py @@ -56,10 +56,20 @@ class MeetingCreateView(ForumCreateView): class ForumUpdateView(PermissionRequiredMixin, UpdateView): permission_required = 'forums.update_forum' - model = Forum - form_class = ForumForm template_name = 'forums/forum_form.html' + def get_object(self, queryset=None): + try: + return Meeting.objects.get(slug=self.kwargs['slug']) + except Meeting.DoesNotExist: + return Forum.objects.get(slug=self.kwargs['slug']) + + def get_form(self, form_class=None): + try: + self.object.meeting + return MeetingForm(**self.get_form_kwargs()) + except Meeting.DoesNotExist: + return ForumForm(**self.get_form_kwargs()) class ForumDeleteView(PermissionRequiredMixin, DeleteView): permission_required = 'forums.delete_forum'