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