mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-10 16:24:49 +00:00
Added views for locking and unlocking pages
This commit is contained in:
parent
dbcff0aeb8
commit
3242b354a3
5 changed files with 85 additions and 1 deletions
|
|
@ -0,0 +1,29 @@
|
|||
{% load i18n wagtailadmin_tags %}
|
||||
|
||||
{% if not page_perms %}
|
||||
{% page_permissions page as page_perms %}
|
||||
{% endif %}
|
||||
|
||||
<div class="lock-indicator {% if page.locked %}locked{% else %}unlocked{% endif %}">
|
||||
{% if page.locked %}
|
||||
{% trans "Locked" %}
|
||||
|
||||
{% if page_perms.can_lock %}
|
||||
<form action="{% url 'wagtailadmin_pages_unlock' page.id %}" method="POST">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="next" value="{% url 'wagtailadmin_pages_edit' page.id %}">
|
||||
<input type="submit" value="{% trans "Unlock" %}">
|
||||
</form>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% trans "Unlocked" %}
|
||||
|
||||
{% if page_perms.can_lock %}
|
||||
<form action="{% url 'wagtailadmin_pages_lock' page.id %}" method="POST">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="next" value="{% url 'wagtailadmin_pages_edit' page.id %}">
|
||||
<input type="submit" value="{% trans "Lock" %}">
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
@ -23,6 +23,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% include "wagtailadmin/pages/_privacy_indicator.html" with page=page page_perms=page_perms only %}
|
||||
{% include "wagtailadmin/pages/_lock_indicator.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
|
|
|||
|
|
@ -73,6 +73,9 @@ urlpatterns += [
|
|||
|
||||
url(r'^pages/(\d+)/privacy/$', page_privacy.set_privacy, name='wagtailadmin_pages_set_privacy'),
|
||||
|
||||
url(r'^pages/(\d+)/lock/$', pages.lock, name='wagtailadmin_pages_lock'),
|
||||
url(r'^pages/(\d+)/unlock/$', pages.unlock, name='wagtailadmin_pages_unlock'),
|
||||
|
||||
url(r'^choose-page/$', chooser.browse, name='wagtailadmin_choose_page'),
|
||||
url(r'^choose-page/(\d+)/$', chooser.browse, name='wagtailadmin_choose_page_child'),
|
||||
url(r'^choose-external-link/$', chooser.external_link, name='wagtailadmin_choose_page_external_link'),
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ from django.contrib.auth.decorators import permission_required
|
|||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.views.decorators.http import require_GET
|
||||
from django.utils.http import is_safe_url
|
||||
from django.views.decorators.http import require_GET, require_POST
|
||||
from django.views.decorators.vary import vary_on_headers
|
||||
|
||||
from wagtail.wagtailadmin.edit_handlers import TabbedInterface, ObjectList
|
||||
|
|
@ -806,3 +807,49 @@ def preview_for_moderation(request, revision_id):
|
|||
# pass in the real user request rather than page.dummy_request(), so that request.user
|
||||
# and request.revision_id will be picked up by the wagtail user bar
|
||||
return page.serve_preview(request, page.default_preview_mode)
|
||||
|
||||
|
||||
@permission_required('wagtailadmin.access_admin')
|
||||
@require_POST
|
||||
def lock(request, page_id):
|
||||
# Get the page
|
||||
page = Page.objects.get(id=page_id)
|
||||
|
||||
# Check permissions
|
||||
if not page.permissions_for_user(request.user).can_lock():
|
||||
raise PermissionDenied
|
||||
|
||||
# Lock the page
|
||||
if not page.locked:
|
||||
page.locked = True
|
||||
page.save()
|
||||
|
||||
# Redirect
|
||||
redirect_to = request.POST.get('next', None)
|
||||
if redirect_to and is_safe_url(url=redirect_to, host=request.get_host()):
|
||||
return redirect(redirect_to)
|
||||
else:
|
||||
return redirect('wagtail_explore', args=(page.get_parent().id, ))
|
||||
|
||||
|
||||
@permission_required('wagtailadmin.access_admin')
|
||||
@require_POST
|
||||
def unlock(request, page_id):
|
||||
# Get the page
|
||||
page = Page.objects.get(id=page_id)
|
||||
|
||||
# Check permissions
|
||||
if not page.permissions_for_user(request.user).can_lock():
|
||||
raise PermissionDenied
|
||||
|
||||
# Unlock the page
|
||||
if page.locked:
|
||||
page.locked = False
|
||||
page.save()
|
||||
|
||||
# Redirect
|
||||
redirect_to = request.POST.get('next', None)
|
||||
if redirect_to and is_safe_url(url=redirect_to, host=request.get_host()):
|
||||
return redirect(redirect_to)
|
||||
else:
|
||||
return redirect('wagtail_explore', args=(page.get_parent().id, ))
|
||||
|
|
|
|||
|
|
@ -883,6 +883,7 @@ class PageRevision(models.Model):
|
|||
obj.live = self.page.live
|
||||
obj.has_unpublished_changes = self.page.has_unpublished_changes
|
||||
obj.owner = self.page.owner
|
||||
obj.locked = self.page.locked
|
||||
|
||||
return obj
|
||||
|
||||
|
|
@ -1078,6 +1079,9 @@ class PagePermissionTester(object):
|
|||
def can_set_view_restrictions(self):
|
||||
return self.can_publish()
|
||||
|
||||
def can_lock(self):
|
||||
return self.user.is_superuser
|
||||
|
||||
def can_publish_subpage(self):
|
||||
"""
|
||||
Niggly special case for creating and publishing a page in one go.
|
||||
|
|
|
|||
Loading…
Reference in a new issue