From 24bca42f733c28cbb534caae4b176a05c86196ba Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 14 Apr 2020 14:36:33 +0200
Subject: [PATCH] mails wit kit requessts can be send for different periods of
 time

---
 .../0158_configurationitem_email_items.py     | 33 +++++++++++++++++++
 smash/web/models/configuration_item.py        |  4 ++-
 smash/web/models/constants.py                 |  1 +
 smash/web/views/kit.py                        |  9 +++--
 4 files changed, 44 insertions(+), 3 deletions(-)
 create mode 100644 smash/web/migrations/0158_configurationitem_email_items.py

diff --git a/smash/web/migrations/0158_configurationitem_email_items.py b/smash/web/migrations/0158_configurationitem_email_items.py
new file mode 100644
index 00000000..248dcb76
--- /dev/null
+++ b/smash/web/migrations/0158_configurationitem_email_items.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-04-04 09:43
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+from web.models.constants import KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE
+
+
+def create_item(apps, type, value, name):
+    # We can't import the ConfigurationItem model directly as it may be a newer
+    # version than this migration expects. We use the historical version.
+    ConfigurationItem = apps.get_model("web", "ConfigurationItem")
+    item = ConfigurationItem.objects.create()
+    item.type = type
+    item.value = value
+    item.name = name
+    item.save()
+
+
+def configuration_items(apps, schema_editor):
+    create_item(apps, KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE, "7",
+                "Number of days with sample kits included in email")
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('web', '0157_auto_20200414_0909'),
+    ]
+
+    operations = [
+        migrations.RunPython(configuration_items),
+    ]
diff --git a/smash/web/models/configuration_item.py b/smash/web/models/configuration_item.py
index cdaa6fbb..eb933593 100644
--- a/smash/web/models/configuration_item.py
+++ b/smash/web/models/configuration_item.py
@@ -4,7 +4,7 @@ from django.db import models
 
 from web.models.constants import CANCELLED_APPOINTMENT_COLOR_CONFIGURATION_TYPE, \
     NO_SHOW_APPOINTMENT_COLOR_CONFIGURATION_TYPE, KIT_EMAIL_HOUR_CONFIGURATION_TYPE, \
-    KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE
+    KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE, KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE
 
 
 class ConfigurationItem(models.Model):
@@ -43,6 +43,8 @@ class ConfigurationItem(models.Model):
             pattern = "^#[0-9a-fA-F]+$"
         if item.type == KIT_EMAIL_HOUR_CONFIGURATION_TYPE:
             pattern = "^[0-9]{2}:[0-9]{2}$"
+        if item.type == KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE:
+            pattern = "^[0-9]+$"
         if item.type == KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE:
             pattern = "^(MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY|SUNDAY)$"
         if pattern is not None:
diff --git a/smash/web/models/constants.py b/smash/web/models/constants.py
index fdc7ba93..1e5984de 100644
--- a/smash/web/models/constants.py
+++ b/smash/web/models/constants.py
@@ -44,6 +44,7 @@ NO_SHOW_APPOINTMENT_COLOR_CONFIGURATION_TYPE = "NO_SHOW_APPOINTMENT_COLOR"
 KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE = "KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE"
 KIT_EMAIL_HOUR_CONFIGURATION_TYPE = "KIT_DAILY_EMAIL_HOUR_CONFIGURATION_TYPE"
 KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE = "KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE"
+KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE = "KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE"
 
 MAIL_TEMPLATE_CONTEXT_SUBJECT = 'S'
 MAIL_TEMPLATE_CONTEXT_APPOINTMENT = 'A'
diff --git a/smash/web/views/kit.py b/smash/web/views/kit.py
index c099d903..3ccbfc9f 100644
--- a/smash/web/views/kit.py
+++ b/smash/web/views/kit.py
@@ -17,7 +17,7 @@ from web.decorators import PermissionDecorator
 from web.models import ConfigurationItem, Language, Worker
 from web.models.constants import KIT_EMAIL_HOUR_CONFIGURATION_TYPE, \
     KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE, CRON_JOB_TIMEOUT
-from web.models.constants import KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE
+from web.models.constants import KIT_RECIPIENT_EMAIL_CONFIGURATION_TYPE, KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE
 from . import wrap_response
 from ..forms import KitRequestForm
 from ..models import AppointmentType, Appointment
@@ -28,8 +28,13 @@ logger = logging.getLogger(__name__)
 
 def get_kit_requests(user, start_date=None, end_date=None):
     if start_date is None:
+        days = ConfigurationItem.objects.get(type=KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE).value
+        if days.isdigit():
+            days = int(days)
+        else:
+            days = 7
         start_date = get_today_midnight_date() + datetime.timedelta(days=1)
-        end_date = start_date + datetime.timedelta(days=7)
+        end_date = start_date + datetime.timedelta(days=days)
     else:
         if isinstance(start_date, str):
             start_date = parse_datetime(start_date)
-- 
GitLab