diff --git a/opentech/apply/review/templates/review/review_confirm_delete.html b/opentech/apply/review/templates/review/review_confirm_delete.html index 227b09d5003419c1738196001878c40369a9b680..5084d5cc4c73b4938ac452d35fd1fcd340ea9777 100644 --- a/opentech/apply/review/templates/review/review_confirm_delete.html +++ b/opentech/apply/review/templates/review/review_confirm_delete.html @@ -1,11 +1,11 @@ {% extends "base-apply.html" %} -{% block title %}Deleting: {{object.title }}{% endblock %} +{% block title %}Deleting: {{ object }}{% endblock %} {% block content %} <div class="admin-bar"> <div class="admin-bar__inner"> - <h2 class="heading heading--no-margin">Deleting: {{ object.title }}</h2> + <h2 class="heading heading--no-margin">Deleting: {{ object }}</h2> </div> </div> diff --git a/opentech/apply/review/templates/review/review_detail.html b/opentech/apply/review/templates/review/review_detail.html index 75f0743e02d2b794424ebb9a385e86ac8fb072c9..cfbdd6f3356e49c15bc989069f052396b123efc8 100644 --- a/opentech/apply/review/templates/review/review_detail.html +++ b/opentech/apply/review/templates/review/review_detail.html @@ -24,6 +24,14 @@ <svg class="icon icon--eye"><use xlink:href="#eye"></use></svg> {{ review.get_visibility_display }} </div> + {% if perms.funds.delete_review or request.user == review.author %} + <div> + <a class="link link--delete-review is-active" href="{% url 'apply:submissions:reviews:delete' submission_pk=object.submission.id pk=object.id %}"> + Delete + <svg class="icon icon--delete"><use xlink:href="#delete"></use></svg> + </a> + </div> + {% endif %} {% if not review.for_latest %} <div> <h5>Review was not against the latest version:</h5> @@ -32,14 +40,6 @@ </p> </div> {% endif %} - {% if perms.funds.delete_review %} - <div> - <a class="link link--delete-review is-active" href="{% url 'apply:submissions:reviews:delete' submission_pk=object.submission.id pk=object.id %}"> - Delete - <svg class="icon icon--delete"><use xlink:href="#delete"></use></svg> - </a> - </div> - {% endif %} </div> <div class="rich-text rich-text--answers"> diff --git a/opentech/apply/review/views.py b/opentech/apply/review/views.py index cd77213788a966fe866e4b38d95dda5e47d90941..c069a06b84edee3c823fe75c37baa46c32134925 100644 --- a/opentech/apply/review/views.py +++ b/opentech/apply/review/views.py @@ -1,6 +1,7 @@ from collections import defaultdict -from django.contrib.auth.decorators import login_required, permission_required +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import UserPassesTestMixin from django.core.exceptions import PermissionDenied from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 @@ -282,9 +283,13 @@ class ReviewListView(ListView): ) -@method_decorator(permission_required('review.delete_review', raise_exception=True), name='dispatch') -class ReviewDeleteView(DeleteView): +class ReviewDeleteView(UserPassesTestMixin, DeleteView): model = Review + raise_exception = True + + def test_func(self): + review = self.get_object() + return self.request.user.has_perm('review.delete_review') or self.request.user == review.author def delete(self, request, *args, **kwargs): review = self.get_object()