Skip to content
Snippets Groups Projects
Commit 48e6f7cc authored by Fredrik Jonsson's avatar Fredrik Jonsson
Browse files

Allow review author to delete a review. Review object have no title so just...

Allow review author to delete a review. Review object have no title so just use object in template to write out str value.
parent 1a2123c5
No related branches found
No related tags found
No related merge requests found
{% extends "base-apply.html" %} {% extends "base-apply.html" %}
{% block title %}Deleting: {{object.title }}{% endblock %} {% block title %}Deleting: {{ object }}{% endblock %}
{% block content %} {% block content %}
<div class="admin-bar"> <div class="admin-bar">
<div class="admin-bar__inner"> <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>
</div> </div>
......
...@@ -24,6 +24,14 @@ ...@@ -24,6 +24,14 @@
<svg class="icon icon--eye"><use xlink:href="#eye"></use></svg> <svg class="icon icon--eye"><use xlink:href="#eye"></use></svg>
{{ review.get_visibility_display }} {{ review.get_visibility_display }}
</div> </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 %} {% if not review.for_latest %}
<div> <div>
<h5>Review was not against the latest version:</h5> <h5>Review was not against the latest version:</h5>
...@@ -32,14 +40,6 @@ ...@@ -32,14 +40,6 @@
</p> </p>
</div> </div>
{% endif %} {% 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>
<div class="rich-text rich-text--answers"> <div class="rich-text rich-text--answers">
......
from collections import defaultdict 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.core.exceptions import PermissionDenied
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
...@@ -282,9 +283,13 @@ class ReviewListView(ListView): ...@@ -282,9 +283,13 @@ class ReviewListView(ListView):
) )
@method_decorator(permission_required('review.delete_review', raise_exception=True), name='dispatch') class ReviewDeleteView(UserPassesTestMixin, DeleteView):
class ReviewDeleteView(DeleteView):
model = Review 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): def delete(self, request, *args, **kwargs):
review = self.get_object() review = self.get_object()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment