from django.core.files.storage import default_storage
from django.db.models import Q
from django.http import HttpResponseForbidden, HttpResponseRedirect, JsonResponse
+from django.shortcuts import get_object_or_404
from django.utils.text import slugify
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.edit import FormView
class WikiEdit(PageEditCellView):
- def post(self, request, *args, **kwargs):
- # allow all authenticated users to edit wiki cells
- if request and request.user.is_anonymous:
+ def dispatch(self, request, *args, **kwargs):
+ if not request.user or request.user.is_anonymous:
return HttpResponseForbidden()
- self.object = self.get_object()
- pages = self.object.page.get_parents_and_self()
+ self.page = get_object_or_404(Page, id=kwargs.get('page_pk') or kwargs.get('pk'))
+ pages = self.page.get_parents_and_self()
if not pages[0].slug == 'wiki':
return HttpResponseForbidden()
+ # allow all authenticated users to edit wiki cells
# temporary grant total access
request.user.is_superuser = True
request.user.is_staff = True
- return super().post(request, *args, **kwargs)
+ return super().dispatch(request, *args, **kwargs)
edit_wiki = WikiEdit.as_view()