Source code for wagtailapproval.views
from django.contrib.auth import get_user
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin import messages
from .models import ApprovalTicket
from .approvalitem import get_user_approval_items
[docs]def index(request):
'''Get all pending approvals that are relevant for the current user'''
approval_items = get_user_approval_items(get_user(request))
return render(request, 'wagtailapproval/index.html', {
'approval_list': approval_items})
[docs]def check_permissions(function):
def check_wrapper(request, pk):
user = get_user(request)
ticket = get_object_or_404(ApprovalTicket, pk=pk)
step = ticket.step
item = ticket.item
if step.group not in user.groups.all():
raise PermissionDenied('User not in step group')
return function(request, pk, ticket)
return check_wrapper
@check_permissions
[docs]def approve(request, pk, ticket):
item = ticket.item
step = ticket.step
if request.method == 'POST':
step.approve(item)
messages.success(request, _('{} has been approved').format(item))
return redirect('wagtailapproval:index')
return render(request, 'wagtailapproval/approve.html', {
'step': step,
'ticket': ticket,
})
@check_permissions
[docs]def reject(request, pk, ticket):
item = ticket.item
step = ticket.step
if request.method == 'POST':
step.reject(item)
messages.success(request, _('{} has been rejected').format(item))
return redirect('wagtailapproval:index')
return render(request, 'wagtailapproval/reject.html', {
'step': step,
'ticket': ticket,
})