mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-09 19:40:19 +00:00
Better integration of wiki pages on clubs
This commit is contained in:
@ -28,6 +28,7 @@ from django.views.generic import ListView, DetailView
|
||||
from django.views.generic.edit import UpdateView, CreateView, DeleteView
|
||||
from django.forms.models import modelform_factory
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
|
||||
from core.models import Page, PageRev, LockError
|
||||
from core.views.forms import MarkdownInput, PageForm, PagePropForm
|
||||
@ -52,6 +53,12 @@ class PageView(CanViewMixin, DetailView):
|
||||
model = Page
|
||||
template_name = 'core/page_detail.jinja'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
res = super(PageView, self).dispatch(request, *args, **kwargs)
|
||||
if self.object and self.object.need_club_redirection:
|
||||
return redirect('club:club_view', club_id=self.object.club.id)
|
||||
return res
|
||||
|
||||
def get_object(self):
|
||||
self.page = Page.get_page_by_full_name(self.kwargs['page_name'])
|
||||
return self.page
|
||||
@ -67,6 +74,12 @@ class PageHistView(CanViewMixin, DetailView):
|
||||
model = Page
|
||||
template_name = 'core/page_hist.jinja'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
res = super(PageHistView, self).dispatch(request, *args, **kwargs)
|
||||
if self.object.need_club_redirection:
|
||||
return redirect('club:club_hist', club_id=self.object.club.id)
|
||||
return res
|
||||
|
||||
def get_object(self):
|
||||
self.page = Page.get_page_by_full_name(self.kwargs['page_name'])
|
||||
return self.page
|
||||
@ -76,6 +89,12 @@ class PageRevView(CanViewMixin, DetailView):
|
||||
model = Page
|
||||
template_name = 'core/page_detail.jinja'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
res = super(PageRevView, self).dispatch(request, *args, **kwargs)
|
||||
if self.object.need_club_redirection:
|
||||
return redirect('club:club_view_rev', club_id=self.object.club.id, rev_id=kwargs['rev'])
|
||||
return res
|
||||
|
||||
def get_object(self):
|
||||
self.page = Page.get_page_by_full_name(self.kwargs['page_name'])
|
||||
return self.page
|
||||
@ -148,17 +167,20 @@ class PagePropView(CanEditPagePropMixin, UpdateView):
|
||||
return self.page
|
||||
|
||||
|
||||
class PageEditView(CanEditMixin, UpdateView):
|
||||
class PageEditViewBase(CanEditMixin, UpdateView):
|
||||
model = PageRev
|
||||
form_class = modelform_factory(model=PageRev, fields=['title', 'content', ], widgets={'content': MarkdownInput})
|
||||
template_name = 'core/pagerev_edit.jinja'
|
||||
|
||||
def get_object(self):
|
||||
self.page = Page.get_page_by_full_name(self.kwargs['page_name'])
|
||||
return self._get_revision()
|
||||
|
||||
def _get_revision(self):
|
||||
if self.page is not None:
|
||||
# First edit
|
||||
if self.page.revisions.all() is None:
|
||||
rev = PageRev(author=request.user)
|
||||
rev = PageRev(author=self.request.user)
|
||||
rev.save()
|
||||
self.page.revisions.add(rev)
|
||||
try:
|
||||
@ -169,7 +191,7 @@ class PageEditView(CanEditMixin, UpdateView):
|
||||
return None
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(PageEditView, self).get_context_data(**kwargs)
|
||||
context = super(PageEditViewBase, self).get_context_data(**kwargs)
|
||||
if self.page is not None:
|
||||
context['page'] = self.page
|
||||
else:
|
||||
@ -185,7 +207,16 @@ class PageEditView(CanEditMixin, UpdateView):
|
||||
new_rev.author = self.request.user
|
||||
new_rev.page = self.page
|
||||
form.instance = new_rev
|
||||
return super(PageEditView, self).form_valid(form)
|
||||
return super(PageEditViewBase, self).form_valid(form)
|
||||
|
||||
|
||||
class PageEditView(PageEditViewBase):
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
res = super(PageEditView, self).dispatch(request, *args, **kwargs)
|
||||
if self.object.page.need_club_redirection:
|
||||
return redirect('club:club_edit_page', club_id=self.object.page.club.id)
|
||||
return res
|
||||
|
||||
|
||||
class PageDeleteView(CanEditPagePropMixin, DeleteView):
|
||||
|
Reference in New Issue
Block a user