diff --git a/hypha/apply/projects/migrations/0095_alter_reportconfig_disable_reporting.py b/hypha/apply/projects/migrations/0095_alter_reportconfig_disable_reporting.py new file mode 100644 index 0000000000..7e26844f6b --- /dev/null +++ b/hypha/apply/projects/migrations/0095_alter_reportconfig_disable_reporting.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.16 on 2024-12-10 09:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("application_projects", "0094_remove_project_user_has_updated_pf_details"), + ] + + operations = [ + migrations.AlterField( + model_name="reportconfig", + name="disable_reporting", + field=models.BooleanField(default=True), + ), + ] diff --git a/hypha/apply/projects/models/report.py b/hypha/apply/projects/models/report.py index c834fc3d06..c43d505596 100644 --- a/hypha/apply/projects/models/report.py +++ b/hypha/apply/projects/models/report.py @@ -239,7 +239,7 @@ class ReportConfig(models.Model): schedule_start = models.DateField(null=True) occurrence = models.PositiveSmallIntegerField(default=1) frequency = models.CharField(choices=FREQUENCY_CHOICES, default=MONTH, max_length=6) - disable_reporting = models.BooleanField(default=False) + disable_reporting = models.BooleanField(default=True) does_not_repeat = models.BooleanField(default=False) def get_frequency_display(self): diff --git a/hypha/apply/projects/templates/application_projects/includes/reports.html b/hypha/apply/projects/templates/application_projects/includes/reports.html index 39b7243178..b9863f6b47 100644 --- a/hypha/apply/projects/templates/application_projects/includes/reports.html +++ b/hypha/apply/projects/templates/application_projects/includes/reports.html @@ -29,7 +29,9 @@ {% include "application_projects/includes/report_line.html" with report=report %} {% endfor %} {% with next_report=object.report_config.current_due_report %} - {% include "application_projects/includes/report_line.html" with report=next_report current=True %} + {% if next_report %} + {% include "application_projects/includes/report_line.html" with report=next_report current=True %} + {% endif %} {% endwith %} diff --git a/hypha/apply/projects/tests/test_commands.py b/hypha/apply/projects/tests/test_commands.py index d21e0bbbce..23b6a7ba46 100644 --- a/hypha/apply/projects/tests/test_commands.py +++ b/hypha/apply/projects/tests/test_commands.py @@ -31,7 +31,9 @@ def setUpTestData(cls): def test_notify_report_due_in_7_days(self): in_a_week = timezone.now() + relativedelta(days=7) - ReportConfigFactory(schedule_start=in_a_week, project__in_progress=True) + ReportConfigFactory( + disable_reporting=False, schedule_start=in_a_week, project__in_progress=True + ) out = StringIO() with self.settings( diff --git a/hypha/apply/projects/tests/test_models.py b/hypha/apply/projects/tests/test_models.py index 975aae6c8a..b0c0ac18a9 100644 --- a/hypha/apply/projects/tests/test_models.py +++ b/hypha/apply/projects/tests/test_models.py @@ -356,12 +356,12 @@ def test_months_always_relative(self): self.assertEqual(next_date, last_report + relativedelta(months=2)) def test_current_due_report_gets_active_report(self): - config = ReportConfigFactory() + config = ReportConfigFactory(disable_reporting=False) report = ReportFactory(project=config.project) self.assertEqual(config.current_due_report(), report) def test_no_report_creates_report(self): - config = ReportConfigFactory() + config = ReportConfigFactory(disable_reporting=False) report = config.current_due_report() # Separate day from month for case where start date + 1 month would exceed next month # length (31st Oct to 30th Nov) @@ -375,27 +375,31 @@ def test_no_report_creates_report(self): def test_no_report_creates_report_not_in_past(self): config = ReportConfigFactory( - schedule_start=self.today - relativedelta(months=3) + schedule_start=self.today - relativedelta(months=3), disable_reporting=False ) report = config.current_due_report() self.assertEqual(Report.objects.count(), 1) self.assertEqual(report.end_date, self.today) def test_no_report_creates_report_if_current_skipped(self): - config = ReportConfigFactory() + config = ReportConfigFactory(disable_reporting=False) skipped_report = ReportFactory(end_date=self.today + relativedelta(days=3)) report = config.current_due_report() self.assertEqual(Report.objects.count(), 2) self.assertNotEqual(skipped_report, report) def test_no_report_schedule_in_future_creates_report(self): - config = ReportConfigFactory(schedule_start=self.today + relativedelta(days=2)) + config = ReportConfigFactory( + schedule_start=self.today + relativedelta(days=2), disable_reporting=False + ) report = config.current_due_report() self.assertEqual(Report.objects.count(), 1) self.assertEqual(report.end_date, self.today + relativedelta(days=2)) def test_past_due_report_creates_report(self): - config = ReportConfigFactory(schedule_start=self.today - relativedelta(days=2)) + config = ReportConfigFactory( + schedule_start=self.today - relativedelta(days=2), disable_reporting=False + ) ReportFactory( project=config.project, end_date=self.today - relativedelta(days=1) ) @@ -411,11 +415,13 @@ def test_past_due_report_creates_report(self): self.assertEqual(report.end_date, next_due) def test_today_schedule_gets_report_today(self): - config = ReportConfigFactory(schedule_start=self.today) + config = ReportConfigFactory(disable_reporting=False, schedule_start=self.today) self.assertEqual(config.current_due_report().end_date, self.today) def test_past_due_report_future_schedule_creates_report(self): - config = ReportConfigFactory(schedule_start=self.today + relativedelta(days=3)) + config = ReportConfigFactory( + schedule_start=self.today + relativedelta(days=3), disable_reporting=False + ) ReportFactory( project=config.project, end_date=self.today - relativedelta(days=1) ) diff --git a/hypha/apply/projects/tests/test_views.py b/hypha/apply/projects/tests/test_views.py index 6e7c67fa60..bfb00438c0 100644 --- a/hypha/apply/projects/tests/test_views.py +++ b/hypha/apply/projects/tests/test_views.py @@ -49,6 +49,7 @@ PAFApprovalsFactory, PAFReviewerRoleFactory, ProjectFactory, + ReportConfigFactory, ReportFactory, ReportVersionFactory, SupportingDocumentFactory, @@ -1801,7 +1802,9 @@ def test_can_unskip_report(self): self.assertFalse(report.skipped) def test_cant_skip_current_report(self): + config = ReportConfigFactory(disable_reporting=False) report = ReportFactory( + project=config.project, project__status=INVOICING_AND_REPORTING, end_date=timezone.now() + relativedelta(days=1), )