From 93d81946d1984b891ef7e908a078c1864889b27b Mon Sep 17 00:00:00 2001
From: Parbhat Puri <parbhatpuri17@gmail.com>
Date: Mon, 22 Apr 2019 10:57:56 +0000
Subject: [PATCH] GH-1147: basic template partner and community detail view and
 edit view for partner

---
 ...pplicationsubmission_community_detail.html | 26 +++++++++++++++++
 .../applicationsubmission_partner_detail.html | 26 +++++++++++++++++
 opentech/apply/funds/views.py                 | 28 +++++++++++--------
 3 files changed, 69 insertions(+), 11 deletions(-)
 create mode 100644 opentech/apply/funds/templates/funds/applicationsubmission_community_detail.html
 create mode 100644 opentech/apply/funds/templates/funds/applicationsubmission_partner_detail.html

diff --git a/opentech/apply/funds/templates/funds/applicationsubmission_community_detail.html b/opentech/apply/funds/templates/funds/applicationsubmission_community_detail.html
new file mode 100644
index 000000000..b10fa17c7
--- /dev/null
+++ b/opentech/apply/funds/templates/funds/applicationsubmission_community_detail.html
@@ -0,0 +1,26 @@
+{% extends "funds/applicationsubmission_detail.html" %}
+{% load static workflow_tags review_tags determination_tags %}
+
+{% block reviews %}
+    <div class="sidebar__inner">
+        <h5>Reviews &amp; assignees</h5>
+
+        {% include 'funds/includes/review_sidebar.html' %}
+
+        <div class="wrapper wrapper--sidebar-buttons">
+            {% include 'review/includes/review_button.html' with submission=object class="button--half-width" %}
+        </div>
+    </div>
+{% endblock %}
+
+{% block related %}
+{% endblock %}
+
+{% block extra_js %}
+    {{ reviewer_form.media.js }}
+    {{ comment_form.media.js }}
+    <script src="{% static 'js/apply/tabs.js' %}"></script>
+    <script src="{% static 'js/apply/toggle-reviewers.js' %}"></script>
+    <script src="{% static 'js/apply/toggle-sidebar.js' %}"></script>
+    <script src="{% static 'js/apply/submission-text-cleanup.js' %}"></script>
+{% endblock %}
diff --git a/opentech/apply/funds/templates/funds/applicationsubmission_partner_detail.html b/opentech/apply/funds/templates/funds/applicationsubmission_partner_detail.html
new file mode 100644
index 000000000..b10fa17c7
--- /dev/null
+++ b/opentech/apply/funds/templates/funds/applicationsubmission_partner_detail.html
@@ -0,0 +1,26 @@
+{% extends "funds/applicationsubmission_detail.html" %}
+{% load static workflow_tags review_tags determination_tags %}
+
+{% block reviews %}
+    <div class="sidebar__inner">
+        <h5>Reviews &amp; assignees</h5>
+
+        {% include 'funds/includes/review_sidebar.html' %}
+
+        <div class="wrapper wrapper--sidebar-buttons">
+            {% include 'review/includes/review_button.html' with submission=object class="button--half-width" %}
+        </div>
+    </div>
+{% endblock %}
+
+{% block related %}
+{% endblock %}
+
+{% block extra_js %}
+    {{ reviewer_form.media.js }}
+    {{ comment_form.media.js }}
+    <script src="{% static 'js/apply/tabs.js' %}"></script>
+    <script src="{% static 'js/apply/toggle-reviewers.js' %}"></script>
+    <script src="{% static 'js/apply/toggle-sidebar.js' %}"></script>
+    <script src="{% static 'js/apply/submission-text-cleanup.js' %}"></script>
+{% endblock %}
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index 20291ced2..2d8d39f13 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -480,7 +480,7 @@ class ReviewerSubmissionDetailView(ReviewContextMixin, ActivityContextMixin, Del
 
 
 class PartnerSubmissionDetailView(ReviewContextMixin, ActivityContextMixin, DelegateableView, DetailView):
-    template_name_suffix = '_reviewer_detail'
+    template_name_suffix = '_partner_detail'
     model = ApplicationSubmission
     form_views = [CommentFormView]
 
@@ -491,15 +491,14 @@ class PartnerSubmissionDetailView(ReviewContextMixin, ActivityContextMixin, Dele
         if submission.user == request.user:
             return ApplicantSubmissionDetailView.as_view()(request, *args, **kwargs)
         # Only allow partners in the submission they are added as partners
-        if request.user.is_partner:
-            partner_has_access = submission.partners.filter(pk=request.user.pk).exists()
-            if not partner_has_access:
-                raise PermissionDenied
+        partner_has_access = submission.partners.filter(pk=request.user.pk).exists()
+        if not partner_has_access:
+            raise PermissionDenied
         return super().dispatch(request, *args, **kwargs)
 
 
 class CommunitySubmissionDetailView(ReviewContextMixin, ActivityContextMixin, DelegateableView, DetailView):
-    template_name_suffix = '_reviewer_detail'
+    template_name_suffix = '_community_detail'
     model = ApplicationSubmission
     form_views = [CommentFormView]
 
@@ -652,11 +651,7 @@ class AdminSubmissionEditView(BaseSubmissionEditView):
 class ApplicantSubmissionEditView(BaseSubmissionEditView):
     def dispatch(self, request, *args, **kwargs):
         submission = self.get_object()
-        if request.user.is_partner:
-            partner_has_access = submission.partners.filter(pk=request.user.pk).exists()
-            if not partner_has_access:
-                raise PermissionDenied
-        elif request.user != submission.user:
+        if request.user != submission.user:
             raise PermissionDenied
         return super().dispatch(request, *args, **kwargs)
 
@@ -711,9 +706,20 @@ class ApplicantSubmissionEditView(BaseSubmissionEditView):
         return HttpResponseRedirect(self.get_success_url())
 
 
+@method_decorator(login_required, name='dispatch')
+class PartnerSubmissionEditView(ApplicantSubmissionEditView):
+    def dispatch(self, request, *args, **kwargs):
+        submission = self.get_object()
+        partner_has_access = submission.partners.filter(pk=request.user.pk).exists()
+        if not partner_has_access:
+            raise PermissionDenied
+        return super(ApplicantSubmissionEditView, self).dispatch(request, *args, **kwargs)
+
+
 class SubmissionEditView(ViewDispatcher):
     admin_view = AdminSubmissionEditView
     applicant_view = ApplicantSubmissionEditView
+    partner_view = PartnerSubmissionEditView
 
 
 @method_decorator(staff_required, name='dispatch')
-- 
GitLab