From 2ca2e03a9f548c27205e27c69b917f7c2d26dbe4 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 14 Apr 2020 14:46:35 +0200 Subject: [PATCH] allow to send emails with kit requests every day --- .../tests/view/test_KitRequestEmailSendJob.py | 21 +++++++++++++++++-- smash/web/views/kit.py | 16 +++++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/smash/web/tests/view/test_KitRequestEmailSendJob.py b/smash/web/tests/view/test_KitRequestEmailSendJob.py index f6e58798..557fa263 100644 --- a/smash/web/tests/view/test_KitRequestEmailSendJob.py +++ b/smash/web/tests/view/test_KitRequestEmailSendJob.py @@ -4,15 +4,18 @@ from django.core import mail from django_cron.models import CronJobLog from mockito import when -from web.models.constants import KIT_EMAIL_HOUR_CONFIGURATION_TYPE from web.models import Item, AppointmentTypeLink, Worker, ConfigurationItem +from web.models.constants import KIT_EMAIL_HOUR_CONFIGURATION_TYPE, KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE from web.tests import LoggedInTestCase -from web.tests.functions import create_appointment_type, create_appointment +from web.tests.functions import create_appointment_type, create_appointment, create_language from web.views.kit import KitRequestEmailSendJob from web.views.notifications import get_today_midnight_date class KitRequestEmailSendJobTests(LoggedInTestCase): + def setUp(self): + create_language(name="English") + def test_kit_requests_send_email(self): CronJobLog.objects.all().delete() configuration = ConfigurationItem.objects.get(type=KIT_EMAIL_HOUR_CONFIGURATION_TYPE) @@ -39,3 +42,17 @@ class KitRequestEmailSendJobTests(LoggedInTestCase): self.assertEqual("mail sent", status) self.assertEqual(1, len(mail.outbox)) self.assertEqual(workers_count, Worker.objects.all().count()) + + def test_match_day_of_week_with_asterisk(self): + item = ConfigurationItem.objects.get(type=KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE) + item.value = "*" + item.save() + + self.assertTrue(KitRequestEmailSendJob().match_day_of_week()) + + def test_match_day_of_week_with_unknown(self): + item = ConfigurationItem.objects.get(type=KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE) + item.value = "unknown_day_of_week" + item.save() + + self.assertFalse(KitRequestEmailSendJob().match_day_of_week()) diff --git a/smash/web/views/kit.py b/smash/web/views/kit.py index 3ccbfc9f..fe22f0e9 100644 --- a/smash/web/views/kit.py +++ b/smash/web/views/kit.py @@ -195,6 +195,8 @@ class KitRequestEmailSendJob(CronJobBase): def match_day_of_week(self): user_day_of_week = ConfigurationItem.objects.get( type=KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE).value + if user_day_of_week == "*": + return True language = Language.objects.get(name="English") locale_name = language.locale if platform.system() == 'Windows': @@ -204,8 +206,12 @@ class KitRequestEmailSendJob(CronJobBase): except: logger.error("Problem with setting locale: " + locale_name) - user_day_of_week_int = int(time.strptime( - user_day_of_week, '%A').tm_wday) + 1 - current_day_of_week_int = int(datetime.datetime.now().strftime("%w")) - - return user_day_of_week_int == current_day_of_week_int + try: + user_day_of_week_int = int(time.strptime( + user_day_of_week, '%A').tm_wday) + 1 + current_day_of_week_int = int(datetime.datetime.now().strftime("%w")) + + return user_day_of_week_int == current_day_of_week_int + except ValueError: + logger.error("Invalid day of week: " + user_day_of_week) + return False -- GitLab