forked from rc/aircox
integrate tiptap text editor
This commit is contained in:
@ -55,6 +55,9 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
|
||||
form_class = forms.EpisodeForm
|
||||
template_name = "aircox/episode_form.html"
|
||||
|
||||
def can_edit(self, obj):
|
||||
return self.test_func()
|
||||
|
||||
def test_func(self):
|
||||
obj = self.get_object()
|
||||
return permissions.program.can(self.request.user, "update", obj)
|
||||
|
@ -33,6 +33,17 @@ def attach(cls):
|
||||
return cls
|
||||
|
||||
|
||||
class CanEditMixin:
|
||||
"""Add context 'can_edit' set to True when object is editable by user."""
|
||||
|
||||
def can_edit(self, object):
|
||||
"""Return True if user can edit current page."""
|
||||
return False
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
return super().get_context_data(can_edit=self.can_edit(self.object), **kwargs)
|
||||
|
||||
|
||||
class BasePageMixin:
|
||||
category = None
|
||||
|
||||
@ -156,16 +167,12 @@ class PageListView(FiltersMixin, BasePageListView):
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class PageDetailView(BasePageDetailView):
|
||||
class PageDetailView(CanEditMixin, BasePageDetailView):
|
||||
"""Base view class for pages."""
|
||||
|
||||
template_name = None
|
||||
context_object_name = "page"
|
||||
|
||||
def can_edit(self, object):
|
||||
"""Return True if user can edit current page."""
|
||||
return False
|
||||
|
||||
def get_template_names(self):
|
||||
return super().get_template_names() + ["aircox/page_detail.html"]
|
||||
|
||||
@ -185,7 +192,6 @@ class PageDetailView(BasePageDetailView):
|
||||
if related:
|
||||
related = related[: self.related_count]
|
||||
kwargs["related_objects"] = related
|
||||
kwargs["can_edit"] = self.can_edit(self.object)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
def get_comment_form(self):
|
||||
@ -210,7 +216,7 @@ class PageDetailView(BasePageDetailView):
|
||||
return self.get(request, *args, **kwargs)
|
||||
|
||||
|
||||
class PageCreateView(BaseView, CreateView):
|
||||
class PageCreateView(CanEditMixin, BaseView, CreateView):
|
||||
def get_page(self):
|
||||
return self.object
|
||||
|
||||
@ -218,7 +224,7 @@ class PageCreateView(BaseView, CreateView):
|
||||
return self.request.path
|
||||
|
||||
|
||||
class PageUpdateView(BaseView, UpdateView):
|
||||
class PageUpdateView(CanEditMixin, BaseView, UpdateView):
|
||||
def get_page(self):
|
||||
return self.object
|
||||
|
||||
|
@ -71,6 +71,9 @@ class ProgramCreateView(PermissionRequiredMixin, ProgramEditMixin, page.PageCrea
|
||||
|
||||
|
||||
class ProgramUpdateView(UserPassesTestMixin, ProgramEditMixin, page.PageUpdateView):
|
||||
def can_edit(self, obj):
|
||||
return self.test_func()
|
||||
|
||||
def test_func(self):
|
||||
obj = self.get_object()
|
||||
return permissions.program.can(self.request.user, "update", obj)
|
||||
|
Reference in New Issue
Block a user