From a3267d12400ef62622da8ece6176c33ce64f877e Mon Sep 17 00:00:00 2001
From: Shrikrishna Singh <krishnasingh.ss30@gmail.com>
Date: Wed, 1 Jul 2020 17:40:25 +0530
Subject: [PATCH] Check if all submissions has same type while creating batch
 determinations

---
 hypha/apply/determinations/models.py |  4 +++-
 hypha/apply/determinations/views.py  | 13 +++++++++++++
 hypha/apply/review/forms.py          |  1 +
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/hypha/apply/determinations/models.py b/hypha/apply/determinations/models.py
index 1fb235507..0e2dfe966 100644
--- a/hypha/apply/determinations/models.py
+++ b/hypha/apply/determinations/models.py
@@ -142,7 +142,9 @@ class Determination(DeterminationFormFieldsMixin, AccessFormData, models.Model):
         group = 0
         data.setdefault(group, {'title': None, 'questions': list()})
         for field in self.form_fields:
-            if issubclass(field.block.__class__, DeterminationMustIncludeFieldBlock):
+            if issubclass(
+                field.block.__class__, DeterminationMustIncludeFieldBlock
+            ) or isinstance(field.block, SendNoticeBlock):
                 continue
             try:
                 value = self.form_data[field.id]
diff --git a/hypha/apply/determinations/views.py b/hypha/apply/determinations/views.py
index 824df2f76..15029846a 100644
--- a/hypha/apply/determinations/views.py
+++ b/hypha/apply/determinations/views.py
@@ -140,8 +140,21 @@ class BatchDeterminationCreateView(BaseStreamForm, CreateView):
         kwargs.pop('instance')
         return kwargs
 
+    def check_all_submissions_are_of_same_type(self, submissions):
+        return len(set(
+            [
+                submission.is_determination_form_attached
+                for submission in submissions
+            ]
+        )) == 1
+
     def get_form_class(self):
         submissions = self.get_submissions()
+        if not self.check_all_submissions_are_of_same_type(submissions):
+            raise ValueError(
+                "All selected submissions excpects determination forms attached"
+                " - please contact admin"
+            )
         if not submissions[0].is_determination_form_attached:
             return get_form_for_stages(submissions)
         form_fields = self.get_form_fields()
diff --git a/hypha/apply/review/forms.py b/hypha/apply/review/forms.py
index 1e7dc2db3..76b636818 100644
--- a/hypha/apply/review/forms.py
+++ b/hypha/apply/review/forms.py
@@ -42,6 +42,7 @@ class ReviewModelForm(StreamBaseForm, forms.ModelForm, metaclass=MixedMetaClass)
                     initial[key] = value
 
         super().__init__(*args, initial=initial, instance=instance, **kwargs)
+
         for field in self._meta.widgets:
             self.fields[field].disabled = True
 
-- 
GitLab