SciPost Code Repository

Skip to content
Snippets Groups Projects
views.py 1.75 KiB
Newer Older
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed

from django.core.urlresolvers import reverse_lazy
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
from django.utils import timezone
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView
from django.views.generic.list import ListView

Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
from .models import Forum, Post
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
from .forms import ForumForm

from scipost.mixins import PermissionsMixin


class ForumCreateView(PermissionsMixin, CreateView):
    permission_required = 'forums.can_add_forum'
    model = Forum
    form_class = ForumForm
    template_name = 'forums/forum_form.html'
    success_url = reverse_lazy('forums:forums')

    def get_initial(self):
        initial = super().get_initial()
        initial.update({
            'moderators': self.request.user
        })
        return initial


class ForumDetailView(DetailView):
    model = Forum
    template_name = 'forums/forum_detail.html'


class ForumListView(ListView):
    model = Forum
    template_name = 'forum_list.html'
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed


class PostCreateView(CreateView):
    model = Post

    def get_initial(self, *args, **kwargs):
        initial = super().get_initial(*args, **kwargs)
        parent_model = self.kwargs.get('parent_model')
        if parent_model = 'forum':
            parent_content_type = ContentType.objects.get(app_label='forums', model='forum')
        elif parent_model = 'post':
            parent_content_type = ContentType.objects.get(app_label='forums', model='post')
        parent_object_id = self.kwargs.get('parent_object_id')
        initial.update({
            'posted_by': self.request.user,
            'posted_on': timezone.now(),
            'parent_content_type': parent_content_type,
            'parent_object_id': parent_object_id,
        })