diff --git a/issue/decorators.py b/issue/decorators.py index 1d69dcf..3685457 100644 --- a/issue/decorators.py +++ b/issue/decorators.py @@ -2,6 +2,8 @@ from functools import wraps from django.contrib.auth.decorators import login_required from django.http import HttpResponseForbidden +from django.shortcuts import render +from django.core.urlresolvers import reverse from issue.models import Project @@ -24,3 +26,30 @@ def project_perm_required(perm): return wrapper return decorator + +def confirmation_required(message, previous=None): + + def decorator(view): + @wraps(view) + def wrapper(request, *args, **kwargs): + if request.GET.get('force'): + return view(request, *args, **kwargs) + prev = previous + if not prev: + prev = request.GET.get('prev') + if not prev: + # improvising + if hasattr(request, 'project'): + prev = reverse('list-issue', + args=[request.project.name]) + else: + prev = reverse('list-project') + c = { + 'message': message, + 'prev': prev, + 'next': request.path + '?force=1', + } + return render(request, 'confirm.html', c) + return wrapper + + return decorator diff --git a/issue/templates/confirm.html b/issue/templates/confirm.html new file mode 100644 index 0000000..71d335f --- /dev/null +++ b/issue/templates/confirm.html @@ -0,0 +1,33 @@ +{% extends 'base.html' %} + +{% load bootstrap_tags %} + +{% block content %} + +
+ +{% endblock %} diff --git a/issue/templates/issue/project.html b/issue/templates/issue/project.html index 7e33b86..881946b 100644 --- a/issue/templates/issue/project.html +++ b/issue/templates/issue/project.html @@ -13,7 +13,7 @@