Skip to content
Snippets Groups Projects
Commit 100880a0 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

DEFAULT_FROM_EMAIL changed into configuration option

parent cad2257d
No related branches found
No related tags found
1 merge request!271Resolve "clean configuration"
# coding=utf-8 # coding=utf-8
import os, sys import os
import sys
sys.path.append(sys.path.append(os.path.join(os.path.dirname(__file__), '..'))) #run script as it was on parent folder sys.path.append(sys.path.append(os.path.join(os.path.dirname(__file__), '..'))) #run script as it was on parent folder
import getpass import getpass
import django import django
from django.conf import settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smash.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smash.settings")
django.setup() django.setup()
from smash.local_settings import MEDIA_ROOT from smash.local_settings import MEDIA_ROOT
...@@ -15,17 +16,16 @@ import datetime ...@@ -15,17 +16,16 @@ import datetime
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
import re import re
from operator import itemgetter from operator import itemgetter
from collections import OrderedDict, defaultdict from collections import OrderedDict
import string
from django.contrib.auth.models import User from django.contrib.auth.models import User
from web.models.constants import VOUCHER_STATUS_IN_USE, SUBJECT_TYPE_CHOICES_PATIENT, GLOBAL_STUDY_ID, SEX_CHOICES, SEX_CHOICES_MALE, SEX_CHOICES_FEMALE from web.models.constants import VOUCHER_STATUS_IN_USE, SUBJECT_TYPE_CHOICES_PATIENT, GLOBAL_STUDY_ID, SEX_CHOICES_MALE, SEX_CHOICES_FEMALE
from web.algorithm import VerhoeffAlgorithm, LuhnAlgorithm from web.algorithm import VerhoeffAlgorithm, LuhnAlgorithm
from web.utils import is_valid_social_security_number from web.utils import is_valid_social_security_number
from web.models import VoucherType, Voucher, Country, AppointmentTypeLink, AppointmentType, Study, Worker, Language, Subject, WorkerStudyRole, StudySubject, Location, FlyingTeam, Visit, Appointment, AppointmentType from web.models import VoucherType, Voucher, Country, AppointmentTypeLink, Study, Worker, Language, Subject, WorkerStudyRole, StudySubject, Location, FlyingTeam, Visit, Appointment, AppointmentType
from web.models.worker_study_role import ROLE_CHOICES_TECHNICIAN, WORKER_STAFF, ROLE_CHOICES_SECRETARY, ROLE_CHOICES_HEALTH_PARTNER, \ from web.models.worker_study_role import ROLE_CHOICES_TECHNICIAN, ROLE_CHOICES_SECRETARY, ROLE_CHOICES_HEALTH_PARTNER, \
WORKER_HEALTH_PARTNER, ROLE_CHOICES_DOCTOR, ROLE_CHOICES_VOUCHER_PARTNER, ROLE_CHOICES, ROLE_CHOICES_NURSE, ROLE_CHOICES_PSYCHOLOGIST, ROLE_CHOICES_PROJECT_MANAGER ROLE_CHOICES_DOCTOR, ROLE_CHOICES_VOUCHER_PARTNER, ROLE_CHOICES_NURSE, ROLE_CHOICES_PSYCHOLOGIST, ROLE_CHOICES_PROJECT_MANAGER
DEFAULT_LOCATION = 'CHL' DEFAULT_LOCATION = 'CHL'
DEFAULT_LOCATION_PREFIX = 'P' DEFAULT_LOCATION_PREFIX = 'P'
......
...@@ -6,9 +6,10 @@ import timeout_decorator ...@@ -6,9 +6,10 @@ import timeout_decorator
from django.conf import settings from django.conf import settings
from django_cron import CronJobBase, Schedule from django_cron import CronJobBase, Schedule
from web.models import ConfigurationItem
from web.models.constants import CRON_JOB_TIMEOUT, DEFAULT_FROM_EMAIL
from web.smash_email import EmailSender
from .exporter import SubjectExporter, VisitExporter from .exporter import SubjectExporter, VisitExporter
from web.models.constants import CRON_JOB_TIMEOUT
from ..smash_email import EmailSender
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -21,7 +22,7 @@ class SubjectExporterCronJob(CronJobBase): ...@@ -21,7 +22,7 @@ class SubjectExporterCronJob(CronJobBase):
@timeout_decorator.timeout(CRON_JOB_TIMEOUT) @timeout_decorator.timeout(CRON_JOB_TIMEOUT)
def do(self): def do(self):
email_title = "Daily subject export" email_title = "Daily subject export"
email_recipients = getattr(settings, "DEFAULT_FROM_EMAIL", None) email_recipients = ConfigurationItem.objects.get(type=DEFAULT_FROM_EMAIL).value
filename = getattr(settings, "DAILY_SUBJECT_EXPORT_FILE", None) filename = getattr(settings, "DAILY_SUBJECT_EXPORT_FILE", None)
...@@ -54,7 +55,7 @@ class VisitExporterCronJob(CronJobBase): ...@@ -54,7 +55,7 @@ class VisitExporterCronJob(CronJobBase):
@timeout_decorator.timeout(CRON_JOB_TIMEOUT) @timeout_decorator.timeout(CRON_JOB_TIMEOUT)
def do(self): def do(self):
email_title = "Daily visit export" email_title = "Daily visit export"
email_recipients = getattr(settings, "DEFAULT_FROM_EMAIL", None) email_recipients = ConfigurationItem.objects.get(type=DEFAULT_FROM_EMAIL).value
filename = getattr(settings, "DAILY_VISIT_EXPORT_FILE", None) filename = getattr(settings, "DAILY_VISIT_EXPORT_FILE", None)
......
...@@ -9,11 +9,12 @@ import timeout_decorator ...@@ -9,11 +9,12 @@ import timeout_decorator
from django.conf import settings from django.conf import settings
from django_cron import CronJobBase, Schedule from django_cron import CronJobBase, Schedule
from web.models import ConfigurationItem
from web.models.constants import CRON_JOB_TIMEOUT, DEFAULT_FROM_EMAIL
from web.smash_email import EmailSender
from .csv_tns_subject_import_reader import TnsCsvSubjectImportReader from .csv_tns_subject_import_reader import TnsCsvSubjectImportReader
from .csv_tns_visit_import_reader import TnsCsvVisitImportReader from .csv_tns_visit_import_reader import TnsCsvVisitImportReader
from .importer import Importer from .importer import Importer
from web.models.constants import CRON_JOB_TIMEOUT
from ..smash_email import EmailSender
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -26,7 +27,7 @@ class SubjectImporterCronJob(CronJobBase): ...@@ -26,7 +27,7 @@ class SubjectImporterCronJob(CronJobBase):
@timeout_decorator.timeout(CRON_JOB_TIMEOUT) @timeout_decorator.timeout(CRON_JOB_TIMEOUT)
def do(self): def do(self):
email_title = "Subjects daily import" email_title = "Subjects daily import"
email_recipients = getattr(settings, "DEFAULT_FROM_EMAIL", None) email_recipients = ConfigurationItem.objects.get(type=DEFAULT_FROM_EMAIL).value
filename = getattr(settings, "DAILY_SUBJECT_IMPORT_FILE", None) filename = getattr(settings, "DAILY_SUBJECT_IMPORT_FILE", None)
...@@ -70,7 +71,7 @@ class VisitImporterCronJob(CronJobBase): ...@@ -70,7 +71,7 @@ class VisitImporterCronJob(CronJobBase):
@timeout_decorator.timeout(CRON_JOB_TIMEOUT) @timeout_decorator.timeout(CRON_JOB_TIMEOUT)
def do(self): def do(self):
email_title = "Visits daily import" email_title = "Visits daily import"
email_recipients = getattr(settings, "DEFAULT_FROM_EMAIL", None) email_recipients = ConfigurationItem.objects.get(type=DEFAULT_FROM_EMAIL).value
filename = getattr(settings, "DAILY_VISIT_IMPORT_FILE", None) filename = getattr(settings, "DAILY_VISIT_IMPORT_FILE", None)
......
# -*- coding: utf-8 -*-
from django.conf import settings
from django.db import migrations
from web.models.constants import DEFAULT_FROM_EMAIL
def create_item(apps, item_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.
# noinspection PyPep8Naming
ConfigurationItem = apps.get_model("web", "ConfigurationItem")
item = ConfigurationItem.objects.create()
item.type = item_type
item.value = value
item.name = name
item.save()
# noinspection PyUnusedLocal
def configuration_items(apps, schema_editor):
email_from = getattr(settings, "DEFAULT_FROM_EMAIL", '')
create_item(apps, DEFAULT_FROM_EMAIL, email_from,
"Default email address used in the from field when sending emails")
class Migration(migrations.Migration):
dependencies = [
('web', '0175_auto_20201109_1404'),
]
operations = [
migrations.RunPython(configuration_items),
]
...@@ -56,6 +56,7 @@ KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE = "KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_ ...@@ -56,6 +56,7 @@ KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_TYPE = "KIT_EMAIL_DAY_OF_WEEK_CONFIGURATION_
KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE = "KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE" KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE = "KIT_DAILY_EMAIL_DAYS_PERIOD_TYPE"
KIT_DAILY_EMAIL_TIME_FORMAT_TYPE = "KIT_DAILY_EMAIL_TIME_FORMAT_TYPE" KIT_DAILY_EMAIL_TIME_FORMAT_TYPE = "KIT_DAILY_EMAIL_TIME_FORMAT_TYPE"
VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE = "VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE" VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE = "VIRUS_EMAIL_HOUR_CONFIGURATION_TYPE"
DEFAULT_FROM_EMAIL = "DEFAULT_FROM_EMAIL"
RED_CAP_LANGUAGE_4_FIELD_TYPE = 'RED_CAP_LANGUAGE_4_FIELD_TYPE' RED_CAP_LANGUAGE_4_FIELD_TYPE = 'RED_CAP_LANGUAGE_4_FIELD_TYPE'
RED_CAP_LANGUAGE_3_FIELD_TYPE = 'RED_CAP_LANGUAGE_3_FIELD_TYPE' RED_CAP_LANGUAGE_3_FIELD_TYPE = 'RED_CAP_LANGUAGE_3_FIELD_TYPE'
...@@ -72,7 +73,6 @@ RED_CAP_SAMPLE_DATE_FIELD_TYPE = "RED_CAP_SAMPLE_DATE_FIELD_TYPE" ...@@ -72,7 +73,6 @@ RED_CAP_SAMPLE_DATE_FIELD_TYPE = "RED_CAP_SAMPLE_DATE_FIELD_TYPE"
RED_CAP_IGA_STATUS_FIELD_TYPE = "RED_CAP_IGA_STATUS_FIELD_TYPE" RED_CAP_IGA_STATUS_FIELD_TYPE = "RED_CAP_IGA_STATUS_FIELD_TYPE"
RED_CAP_IGG_STATUS_FIELD_TYPE = "RED_CAP_IGG_STATUS_FIELD_TYPE" RED_CAP_IGG_STATUS_FIELD_TYPE = "RED_CAP_IGG_STATUS_FIELD_TYPE"
MAIL_TEMPLATE_CONTEXT_SUBJECT = 'S' MAIL_TEMPLATE_CONTEXT_SUBJECT = 'S'
MAIL_TEMPLATE_CONTEXT_APPOINTMENT = 'A' MAIL_TEMPLATE_CONTEXT_APPOINTMENT = 'A'
MAIL_TEMPLATE_CONTEXT_VISIT = 'V' MAIL_TEMPLATE_CONTEXT_VISIT = 'V'
......
...@@ -2,10 +2,11 @@ ...@@ -2,10 +2,11 @@
import logging import logging
from django.conf import settings
from django.core import mail
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from web.models import ConfigurationItem
from web.models.constants import DEFAULT_FROM_EMAIL
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -13,7 +14,7 @@ class EmailSender(object): ...@@ -13,7 +14,7 @@ class EmailSender(object):
def send_email(self, subject, body, recipients, cc_recipients=None): def send_email(self, subject, body, recipients, cc_recipients=None):
if cc_recipients is None: if cc_recipients is None:
cc_recipients = [] cc_recipients = []
email_from = getattr(settings, "DEFAULT_FROM_EMAIL", None) email_from = ConfigurationItem.objects.get(type=DEFAULT_FROM_EMAIL).value
recipient_list = [] recipient_list = []
for recipient in recipients.split(";"): for recipient in recipients.split(";"):
recipient_list.append(recipient) recipient_list.append(recipient)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment