diff --git a/hypha/apply/projects/models/project.py b/hypha/apply/projects/models/project.py index 890f6c189817b46b3398c2977fa81f317d2f0bb3..f9d7f969a6291d9cd5455c9f58648addf91f4544 100644 --- a/hypha/apply/projects/models/project.py +++ b/hypha/apply/projects/models/project.py @@ -356,10 +356,6 @@ class Project(BaseStreamForm, AccessFormData, models.Model): correct_state = self.status == COMMITTED and not self.is_locked return correct_state and self.user_has_updated_details - @property - def requires_approval(self): - return not self.approvals.exists() - def get_missing_document_categories(self): """ Get the number of documents required to meet each DocumentCategorys minimum diff --git a/hypha/apply/projects/templates/application_projects/project_admin_detail.html b/hypha/apply/projects/templates/application_projects/project_admin_detail.html index 19d215cc15c2b88cc8a95b2182b7d8fd991169c5..15a0f048033f54c61e8ffeff5355c151f58f4331 100644 --- a/hypha/apply/projects/templates/application_projects/project_admin_detail.html +++ b/hypha/apply/projects/templates/application_projects/project_admin_detail.html @@ -48,26 +48,24 @@ </div> {% endif %} -{% if object.requires_approval %} - <a - {% if not object.can_send_for_approval %} - onclick="return false" - data-tooltip=" - {% if not object.lead %} - {% trans "A lead must be assigned" %} - {% elif not object.user_has_updated_details %} - {% trans "Project approval form must be completed" %} - {% elif object.can_make_approval or object.can_make_final_approval %} - {% trans "Currently awaiting approval" %} - {% endif %}" - {% endif %} - data-fancybox - data-src="#send-for-approval" - class="button button--bottom-space button--primary button--full-width {% if not object.can_send_for_approval or not user.is_apply_staff %}button--tooltip-disabled{% endif %}" - href="#"> - {% trans "Submit for Approval" %} - </a> -{% endif %} +<a + {% if not object.can_send_for_approval %} + onclick="return false" + data-tooltip=" + {% if not object.lead %} + {% trans "A lead must be assigned" %} + {% elif not object.user_has_updated_details %} + {% trans "Project approval form must be completed" %} + {% elif object.can_make_approval or object.can_make_final_approval %} + {% trans "Currently awaiting approval" %} + {% endif %}" + {% endif %} + data-fancybox + data-src="#send-for-approval" + class="button button--bottom-space button--primary button--full-width {% if not object.can_send_for_approval or not user.is_apply_staff %}button--tooltip-disabled{% endif %}" + href="#"> + {% trans "Submit for Approval" %} +</a> {% if object.can_make_approval %} {% user_can_final_approve_project object user as user_can_approve %} diff --git a/hypha/apply/projects/templates/application_projects/project_approval_form.html b/hypha/apply/projects/templates/application_projects/project_approval_form.html index 1fc5cb378269e2ba0571de0dee42d7b509e0df85..419a99ad35ab69c393d987798dced17f7db77380 100644 --- a/hypha/apply/projects/templates/application_projects/project_approval_form.html +++ b/hypha/apply/projects/templates/application_projects/project_approval_form.html @@ -8,38 +8,52 @@ </div> </div> -{% include "forms/includes/form_errors.html" with form=form %} - -<div class="wrapper wrapper--light-grey-bg wrapper--form wrapper--sidebar"> - <div class="wrapper--sidebar--inner"> - <form class="form application-form" action="" method="post" enctype="multipart/form-data"> - {% csrf_token %} - {{ form.media }} - - {% for field in form %} - {% if field.field %} - {% if field.field.multi_input_field %} - {% include "forms/includes/multi_input_field.html" %} +{% if approval_form_exists %} + + {% include "forms/includes/form_errors.html" with form=form %} + + <div class="wrapper wrapper--light-grey-bg wrapper--form wrapper--sidebar"> + <div class="wrapper--sidebar--inner"> + <form class="form application-form" action="" method="post" enctype="multipart/form-data"> + {% csrf_token %} + {{ form.media }} + + {% for field in form %} + {% if field.field %} + {% if field.field.multi_input_field %} + {% include "forms/includes/multi_input_field.html" %} + {% else %} + {% include "forms/includes/field.html" %} + {% endif %} {% else %} - {% include "forms/includes/field.html" %} + {{ field.block }} {% endif %} - {% else %} - {{ field.block }} - {% endif %} - {% endfor %} - - {# Hidden fields needed e.g. for django-file-form. See `StreamBaseForm.hidden_fields` #} - {% for hidden_field in form.hidden_fields %} - {{ hidden_field }} - {% endfor %} - - {% trans "Save draft" as save_draft %} - {% for button_name, button_type, button_value in buttons %} - <button class="button button--submit button--top-space button--{{ button_type }}" type="submit" name="{{ button_name }}" {% if button_value == save_draft %}formnovalidate{% endif %}>{{ button_value }}</button> - {% endfor %} - </form> + {% endfor %} + + {# Hidden fields needed e.g. for django-file-form. See `StreamBaseForm.hidden_fields` #} + {% for hidden_field in form.hidden_fields %} + {{ hidden_field }} + {% endfor %} + + {% trans "Save draft" as save_draft %} + {% for button_name, button_type, button_value in buttons %} + <button class="button button--submit button--top-space button--{{ button_type }}" type="submit" name="{{ button_name }}" {% if button_value == save_draft %}formnovalidate{% endif %}>{{ button_value }}</button> + {% endfor %} + </form> + </div> </div> -</div> + +{% else %} + <div class="wrapper wrapper--light-grey-bg wrapper--form wrapper--sidebar"> + <div class="wrapper--sidebar--inner"> + <p> + Approval form not configured. Please add an approval form in the + <a href="{% url 'funds_fundtype_modeladmin_edit' object.submission.page.id %}" target="_blank">fund settings</a>. + </p> + </div> + </div> + +{% endif %} {% endblock %} diff --git a/hypha/apply/projects/views/project.py b/hypha/apply/projects/views/project.py index 402b5a58c9638c8ad00aeddf4856ff4d6483442e..a6ff020c8603d0b0bbfaa9cb7a284c9981e36cef 100644 --- a/hypha/apply/projects/views/project.py +++ b/hypha/apply/projects/views/project.py @@ -745,6 +745,7 @@ class ProjectApprovalEditView(BaseStreamForm, UpdateView): return super().get_context_data( title=self.object.title, buttons=self.buttons(), + approval_form_exists=True if self.approval_form else False, **kwargs )