From bdac9950fb0ae2990ec10f3a8fe9f2f65b1a4fb7 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <theskumar@users.noreply.github.com> Date: Wed, 22 May 2024 11:56:36 +0530 Subject: [PATCH] Disable project related functionality if PROJECTS_ENABLED=False (#3920) - do not register project urls - do not register project menu in wagtail - do not enable contracting/finance dashboard Fixes #3606 Project settings and vendor settings will still be present, I could not find a way to hide/disable them conditionally. --- .../dashboard/templates/dashboard/dashboard.html | 2 +- hypha/apply/dashboard/views.py | 7 ++++--- hypha/apply/funds/models/utils.py | 13 +++++++++---- hypha/apply/funds/urls.py | 8 ++++++-- hypha/apply/projects/wagtail_hooks.py | 4 +++- hypha/apply/utils/views.py | 5 +++-- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/hypha/apply/dashboard/templates/dashboard/dashboard.html b/hypha/apply/dashboard/templates/dashboard/dashboard.html index 512e79bb3..eaccf5f2a 100644 --- a/hypha/apply/dashboard/templates/dashboard/dashboard.html +++ b/hypha/apply/dashboard/templates/dashboard/dashboard.html @@ -113,7 +113,7 @@ {% if my_reviewed.table.data %} <div class="wrapper wrapper--bottom-space"> {% trans "Your previous reviews" as review_heading %} - {% include "funds/includes/table_filter_and_search.html" with filter=my_reviewed.filterset filter_action=my_reviewed.url search_term=search_term search_action=my_reviewed.url use_search=True use_batch_actions=False heading=review_heading %} + <h2 class="heading heading--normal">{{ review_heading }}</h2> {% render_table my_reviewed.table %} {% if my_reviewed.display_more %} diff --git a/hypha/apply/dashboard/views.py b/hypha/apply/dashboard/views.py index 0665f4ae0..2edd5e9a2 100644 --- a/hypha/apply/dashboard/views.py +++ b/hypha/apply/dashboard/views.py @@ -82,17 +82,18 @@ class AdminDashboardView(MyFlaggedMixin, TemplateView): context.update( { - "active_invoices": self.active_invoices(), "awaiting_reviews": self.awaiting_reviews(submissions), "can_export": can_export_submissions(self.request.user), "my_reviewed": self.my_reviewed(submissions), - "projects": self.projects(), "rounds": self.rounds(), "my_flagged": self.my_flagged(submissions), - "paf_for_review": self.paf_for_review(), "my_tasks": self.my_tasks(), } ) + if settings.PROJECTS_ENABLED: + context["projects"] = self.projects() + context["active_invoices"] = self.active_invoices() + context["paf_for_review"] = self.paf_for_review() return context diff --git a/hypha/apply/funds/models/utils.py b/hypha/apply/funds/models/utils.py index b8ead6652..ac643869c 100644 --- a/hypha/apply/funds/models/utils.py +++ b/hypha/apply/funds/models/utils.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.db import models from django.shortcuts import redirect from django.urls import reverse @@ -144,12 +145,16 @@ class WorkflowStreamForm(WorkflowHelpers, AbstractStreamForm): # type: ignore help_text="Add a form to be used by external reviewers.", ), InlinePanel("determination_forms", label=_("Determination Forms")), - InlinePanel("approval_forms", label=_("Project Approval Form"), max_num=1), - InlinePanel("sow_forms", label=_("Project SOW Form"), max_num=1), - # The models technically allow for multiple Report forms but to start we permit only one in the UIs. - InlinePanel("report_forms", label=_("Project Report Form"), max_num=1), ] + if settings.PROJECTS_ENABLED: + content_panels += [ + InlinePanel("approval_forms", label=_("Project Approval Form"), max_num=1), + InlinePanel("sow_forms", label=_("Project SOW Form"), max_num=1), + # The models technically allow for multiple Report forms but to start we permit only one in the UIs. + InlinePanel("report_forms", label=_("Project Report Form"), max_num=1), + ] + class EmailForm(AbstractEmailForm): """ diff --git a/hypha/apply/funds/urls.py b/hypha/apply/funds/urls.py index 060cd4045..da8e5bd0a 100644 --- a/hypha/apply/funds/urls.py +++ b/hypha/apply/funds/urls.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.urls import include, path from django.views.generic import RedirectView @@ -238,9 +239,12 @@ rounds_urls = ( "rounds", ) - urlpatterns = [ path("submissions/", include(submission_urls)), path("rounds/", include(rounds_urls)), - path("projects/", include(projects_urls)), ] + +if settings.PROJECTS_ENABLED: + urlpatterns += [ + path("projects/", include(projects_urls)), + ] diff --git a/hypha/apply/projects/wagtail_hooks.py b/hypha/apply/projects/wagtail_hooks.py index 1c3935320..ec4a97004 100644 --- a/hypha/apply/projects/wagtail_hooks.py +++ b/hypha/apply/projects/wagtail_hooks.py @@ -1,5 +1,7 @@ +from django.conf import settings from wagtail.contrib.modeladmin.options import modeladmin_register from .admin import ProjectAdminGroup -modeladmin_register(ProjectAdminGroup) +if settings.PROJECTS_ENABLED: + modeladmin_register(ProjectAdminGroup) diff --git a/hypha/apply/utils/views.py b/hypha/apply/utils/views.py index f04e933d3..fcce16db5 100644 --- a/hypha/apply/utils/views.py +++ b/hypha/apply/utils/views.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.contrib.auth.decorators import login_required from django.db.models import ProtectedError from django.forms.models import ModelForm @@ -57,9 +58,9 @@ class ViewDispatcher(View): view = self.partner_view elif self.community_check(request): view = self.community_view - elif self.finance_check(request): + elif settings.PROJECTS_ENABLED and self.finance_check(request): view = self.finance_view - elif self.contracting_check(request): + elif settings.PROJECTS_ENABLED and self.contracting_check(request): view = self.contracting_view elif self.applicant_check(request): view = self.applicant_view -- GitLab