2015-11-24 15:09:46 +00:00
|
|
|
# This file contains all the views that concern the page model
|
|
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
2015-11-25 13:45:18 +00:00
|
|
|
from django.views.generic import ListView, DetailView
|
|
|
|
from django.views.generic.edit import UpdateView
|
2015-11-26 16:40:31 +00:00
|
|
|
from django.contrib.auth.decorators import login_required, permission_required
|
|
|
|
from django.utils.decorators import method_decorator
|
2015-11-24 15:09:46 +00:00
|
|
|
|
2015-11-27 15:40:16 +00:00
|
|
|
from core.models import Page, PageRevision
|
2015-11-27 14:39:42 +00:00
|
|
|
from core.views.forms import PagePropForm
|
|
|
|
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin
|
2015-11-24 15:09:46 +00:00
|
|
|
|
2015-11-25 13:45:18 +00:00
|
|
|
class PageListView(ListView):
|
|
|
|
model = Page
|
2015-11-24 15:09:46 +00:00
|
|
|
|
2015-11-25 13:45:18 +00:00
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super(PageListView, self).get_context_data(**kwargs)
|
|
|
|
return context
|
|
|
|
|
2015-11-27 14:39:42 +00:00
|
|
|
# Define some right management callable for user_passes_test
|
|
|
|
def user_can_view(as_view):
|
|
|
|
def guy(*arg, **kwargs):
|
|
|
|
res = self.as_view(*arg, **kwargs)
|
|
|
|
|
|
|
|
user = self.request.user
|
|
|
|
obj = self.page
|
|
|
|
for g in obj.view_group.all():
|
|
|
|
if g in user.groups.all():
|
|
|
|
print("Allowed")
|
|
|
|
return res
|
|
|
|
print("Not allowed")
|
|
|
|
return res
|
|
|
|
return guy
|
2015-11-25 13:45:18 +00:00
|
|
|
|
2015-11-27 14:39:42 +00:00
|
|
|
class PageView(CanViewMixin, DetailView):
|
|
|
|
model = Page
|
2015-11-26 16:40:31 +00:00
|
|
|
|
2015-11-25 13:45:18 +00:00
|
|
|
def get_object(self):
|
|
|
|
self.page = Page.get_page_by_full_name(self.kwargs['page_name'])
|
|
|
|
return self.page
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super(PageView, self).get_context_data(**kwargs)
|
|
|
|
if "page" in context.keys():
|
|
|
|
context['tests'] = "PAGE_FOUND : "+context['page'].title
|
2015-11-24 15:09:46 +00:00
|
|
|
else:
|
2015-11-25 13:45:18 +00:00
|
|
|
context['tests'] = "PAGE_NOT_FOUND"
|
|
|
|
context['new_page'] = self.kwargs['page_name']
|
|
|
|
return context
|
|
|
|
|
2015-11-27 14:39:42 +00:00
|
|
|
class PagePropView(CanEditPropMixin, UpdateView):
|
2015-11-25 13:45:18 +00:00
|
|
|
model = Page
|
2015-11-27 14:39:42 +00:00
|
|
|
form_class = PagePropForm
|
2015-11-25 13:45:18 +00:00
|
|
|
template_name_suffix = '_prop'
|
2015-11-24 15:09:46 +00:00
|
|
|
|
2015-11-25 13:45:18 +00:00
|
|
|
def get_object(self):
|
|
|
|
page_name = self.kwargs['page_name']
|
|
|
|
p = Page.get_page_by_full_name(page_name)
|
2015-11-26 10:27:52 +00:00
|
|
|
# Create the page if it does not exists
|
2015-11-25 13:45:18 +00:00
|
|
|
if p == None:
|
|
|
|
parent_name = '/'.join(page_name.split('/')[:-1])
|
|
|
|
name = page_name.split('/')[-1]
|
|
|
|
if parent_name == "":
|
2015-11-27 15:40:16 +00:00
|
|
|
p = Page(name=name, revision=PageRevision())
|
2015-11-25 13:45:18 +00:00
|
|
|
else:
|
|
|
|
parent = Page.get_page_by_full_name(parent_name)
|
2015-11-27 15:40:16 +00:00
|
|
|
p = Page(name=name, parent=parent, revision=PageRevision())
|
2015-11-25 13:45:18 +00:00
|
|
|
self.page = p
|
|
|
|
return self.page
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super(PagePropView, self).get_context_data(**kwargs)
|
|
|
|
if "page" in context.keys():
|
2015-11-27 15:40:16 +00:00
|
|
|
context['tests'] = "PAGE_FOUND : "+context['page'].revision.title
|
2015-11-24 15:09:46 +00:00
|
|
|
else:
|
2015-11-25 13:45:18 +00:00
|
|
|
context['tests'] = "PAGE_NOT_FOUND"
|
|
|
|
context['new_page'] = self.kwargs['page_name']
|
|
|
|
return context
|
|
|
|
|
2015-11-27 14:39:42 +00:00
|
|
|
class PageEditView(CanEditMixin, UpdateView):
|
2015-11-25 13:45:18 +00:00
|
|
|
model = Page
|
2015-11-27 15:40:16 +00:00
|
|
|
fields = ['revision.title', 'revision.content',]
|
2015-11-25 13:45:18 +00:00
|
|
|
template_name_suffix = '_edit'
|
|
|
|
|
|
|
|
def get_object(self):
|
|
|
|
self.page = Page.get_page_by_full_name(self.kwargs['page_name'])
|
|
|
|
return self.page
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super(PageEditView, self).get_context_data(**kwargs)
|
|
|
|
if "page" in context.keys():
|
2015-11-27 15:40:16 +00:00
|
|
|
context['tests'] = "PAGE_FOUND : "+context['page'].revision.title
|
2015-11-24 15:09:46 +00:00
|
|
|
else:
|
2015-11-25 13:45:18 +00:00
|
|
|
context['tests'] = "PAGE_NOT_FOUND"
|
|
|
|
context['new_page'] = self.kwargs['page_name']
|
|
|
|
return context
|
|
|
|
|