2016-01-05 19:30:28 +00:00
|
|
|
from django.template.loader import render_to_string
|
2014-03-12 13:59:13 +00:00
|
|
|
|
2015-04-02 15:16:22 +00:00
|
|
|
|
2014-03-12 13:59:13 +00:00
|
|
|
class BaseItem(object):
|
2014-03-18 16:53:56 +00:00
|
|
|
template = 'wagtailadmin/userbar/item_base.html'
|
2014-03-12 13:59:13 +00:00
|
|
|
|
|
|
|
def render(self, request):
|
2015-04-02 15:16:22 +00:00
|
|
|
return render_to_string(self.template, dict(self=self, request=request), request=request)
|
|
|
|
|
2014-03-12 13:59:13 +00:00
|
|
|
|
2016-02-04 22:34:11 +00:00
|
|
|
class AdminItem(BaseItem):
|
|
|
|
template = 'wagtailadmin/userbar/item_admin.html'
|
|
|
|
|
|
|
|
def render(self, request):
|
|
|
|
|
|
|
|
# Don't render if user doesn't have permission to access the admin area
|
|
|
|
if not request.user.has_perm('wagtailadmin.access_admin'):
|
|
|
|
return ""
|
|
|
|
|
|
|
|
return super(AdminItem, self).render(request)
|
|
|
|
|
|
|
|
|
2014-03-18 16:53:56 +00:00
|
|
|
class AddPageItem(BaseItem):
|
|
|
|
template = 'wagtailadmin/userbar/item_page_add.html'
|
|
|
|
|
|
|
|
def __init__(self, page):
|
|
|
|
self.page = page
|
|
|
|
self.parent_page = page.get_parent()
|
|
|
|
|
|
|
|
def render(self, request):
|
|
|
|
# Don't render if the page doesn't have an id
|
|
|
|
if not self.page.id:
|
|
|
|
return ""
|
|
|
|
|
|
|
|
# Don't render if user doesn't have permission to access the admin area
|
|
|
|
if not request.user.has_perm('wagtailadmin.access_admin'):
|
|
|
|
return ""
|
|
|
|
|
2015-03-31 14:25:43 +00:00
|
|
|
# Don't render if user doesn't have ability to add children here
|
2014-11-21 21:24:57 +00:00
|
|
|
permission_checker = self.page.permissions_for_user(request.user)
|
2014-03-18 16:53:56 +00:00
|
|
|
if not permission_checker.can_add_subpage():
|
|
|
|
return ""
|
|
|
|
|
|
|
|
return super(AddPageItem, self).render(request)
|
2014-03-12 13:59:13 +00:00
|
|
|
|
2015-04-02 15:16:22 +00:00
|
|
|
|
2016-02-04 22:34:11 +00:00
|
|
|
class ExplorePageItem(BaseItem):
|
|
|
|
template = 'wagtailadmin/userbar/item_page_explore.html'
|
|
|
|
|
|
|
|
def __init__(self, page):
|
|
|
|
self.page = page
|
|
|
|
self.parent_page = page.get_parent()
|
|
|
|
|
|
|
|
def render(self, request):
|
|
|
|
# Don't render if the page doesn't have an id
|
|
|
|
if not self.page.id:
|
|
|
|
return ""
|
|
|
|
|
|
|
|
# Don't render if user doesn't have permission to access the admin area
|
|
|
|
if not request.user.has_perm('wagtailadmin.access_admin'):
|
|
|
|
return ""
|
|
|
|
|
|
|
|
# Don't render if the user doesn't have permission to edit this page
|
|
|
|
permission_checker = self.page.permissions_for_user(request.user)
|
|
|
|
if not permission_checker.can_edit():
|
|
|
|
return ""
|
|
|
|
|
|
|
|
return super(ExplorePageItem, self).render(request)
|
|
|
|
|
|
|
|
|
2014-03-12 13:59:13 +00:00
|
|
|
class EditPageItem(BaseItem):
|
2014-03-18 16:53:56 +00:00
|
|
|
template = 'wagtailadmin/userbar/item_page_edit.html'
|
2014-03-12 13:59:13 +00:00
|
|
|
|
|
|
|
def __init__(self, page):
|
|
|
|
self.page = page
|
|
|
|
|
2014-03-12 16:03:21 +00:00
|
|
|
def render(self, request):
|
2014-03-12 13:59:13 +00:00
|
|
|
# Don't render if the page doesn't have an id
|
2014-03-12 16:03:21 +00:00
|
|
|
if not self.page.id:
|
2014-03-13 16:20:53 +00:00
|
|
|
return ""
|
2014-03-12 16:03:21 +00:00
|
|
|
|
2014-03-12 16:53:43 +00:00
|
|
|
# Don't render if user doesn't have permission to access the admin area
|
|
|
|
if not request.user.has_perm('wagtailadmin.access_admin'):
|
2014-03-13 16:20:53 +00:00
|
|
|
return ""
|
2015-04-03 16:15:22 +00:00
|
|
|
|
2014-03-12 16:53:43 +00:00
|
|
|
# Don't render if the user doesn't have permission to edit this page
|
|
|
|
permission_checker = self.page.permissions_for_user(request.user)
|
|
|
|
if not permission_checker.can_edit():
|
2014-03-13 16:20:53 +00:00
|
|
|
return ""
|
|
|
|
|
|
|
|
return super(EditPageItem, self).render(request)
|
|
|
|
|
|
|
|
|
2015-04-02 15:16:22 +00:00
|
|
|
class ModeratePageItem(BaseItem):
|
2014-03-18 16:53:56 +00:00
|
|
|
def __init__(self, revision):
|
|
|
|
self.revision = revision
|
2014-03-13 16:20:53 +00:00
|
|
|
|
|
|
|
def render(self, request):
|
2014-03-18 16:53:56 +00:00
|
|
|
if not self.revision.id:
|
2014-03-13 16:20:53 +00:00
|
|
|
return ""
|
|
|
|
|
2014-03-18 16:53:56 +00:00
|
|
|
if not self.revision.submitted_for_moderation:
|
2014-03-13 16:20:53 +00:00
|
|
|
return ""
|
|
|
|
|
|
|
|
if not request.user.has_perm('wagtailadmin.access_admin'):
|
|
|
|
return ""
|
|
|
|
|
2014-03-18 16:53:56 +00:00
|
|
|
if not self.revision.page.permissions_for_user(request.user).can_publish():
|
2014-03-13 16:20:53 +00:00
|
|
|
return ""
|
2015-04-03 16:15:22 +00:00
|
|
|
|
2014-03-13 16:20:53 +00:00
|
|
|
return super(ModeratePageItem, self).render(request)
|
|
|
|
|
2015-04-02 15:16:22 +00:00
|
|
|
|
2014-03-13 16:20:53 +00:00
|
|
|
class ApproveModerationEditPageItem(ModeratePageItem):
|
2014-03-18 16:53:56 +00:00
|
|
|
template = 'wagtailadmin/userbar/item_page_approve.html'
|
2014-03-12 16:53:43 +00:00
|
|
|
|
2015-04-02 15:16:22 +00:00
|
|
|
|
2014-03-13 16:20:53 +00:00
|
|
|
class RejectModerationEditPageItem(ModeratePageItem):
|
2014-03-18 16:53:56 +00:00
|
|
|
template = 'wagtailadmin/userbar/item_page_reject.html'
|