Skip to content
Snippets Groups Projects
Commit 42292a9c authored by Carlos Vega's avatar Carlos Vega
Browse files

fixes #436 while keeping the constants that are relied on by many parts of the...

fixes #436 while keeping the constants that are relied on by many parts of the code that access this class without creating an instance of it
parent a87d98a3
No related branches found
No related tags found
2 merge requests!349fixes #436 while keeping the constants that are relied on by many parts of the...,!347fixes #436 while keeping the constants that are relied on by many parts of the...
Pipeline #45771 passed
......@@ -13,7 +13,7 @@ from ..models import Appointment, Visit, StudySubject, Worker, Voucher
DATE_FORMAT_FULL = "%A %d %B %Y"
DATETIME_FORMAT = "%A %d %B %Y, %H:%m"
DATETIME_FORMAT = "%A %d %B %Y, %H:%M"
DATE_FORMAT_SHORT = "%d.%m.%Y"
......@@ -59,7 +59,7 @@ class MailTemplate(models.Model):
("##DATE_FULL##", "Current date when the mail will be generated (long format)",
get_formatted_time(DATE_FORMAT_FULL)),
("##DATE_SHORT##", "Current date when the mail will be generated (short format)",
now.strftime(DATE_FORMAT_SHORT)),
get_formatted_time(DATE_FORMAT_SHORT)),
("##WORKER##", "The full name of the currently logged in user", ""),
("##WORKER_EMAIL##", "Email address of the currently logged in user", "")
]
......@@ -167,6 +167,125 @@ class MailTemplate(models.Model):
("##C_HOURS##", "Hours", ''),
]
@classmethod
def update_tags(cls):
"""This solves the problem of showing the tags with current times on the mail template
view while keeping the constant structure that is accessed in many parts of the code.
"""
global now
now = datetime.datetime.now()
cls.MAILS_TEMPLATE_GENERIC_TAGS = [
("##DATE_FULL##", "Current date when the mail will be generated (long format)",
get_formatted_time(DATE_FORMAT_FULL)),
("##DATE_SHORT##", "Current date when the mail will be generated (short format)",
get_formatted_time(DATE_FORMAT_SHORT)),
("##WORKER##", "The full name of the currently logged in user", ""),
("##WORKER_EMAIL##", "Email address of the currently logged in user", "")
]
cls.MAILS_TEMPLATE_SUBJECT_TAGS = [
("##S_FULL_NAME##", "Subject's full name", "first_name last_name"),
("##S_FIRST_NAME##", "Subject's first name", ""),
("##S_LAST_NAME##", "Subject's last name", ""),
("##S_ADDRESS##", "Subject's address", "street name and number"),
("##S_CITY##", "Subject's city of residence", ""),
("##S_POST_CODE##", "Subject's post code of residence", ""),
("##S_COUNTRY##", "Subject's country of residence", ""),
("##S_SEX##", "Subject's gender", "Male/Female"),
("##S_TYPE##", "Subject's type", "CONTROL/PATIENT"),
("##S_DATE_BORN##", "Subject's date of birth", get_formatted_time(DATE_FORMAT_SHORT)),
("##S_EMAIL##", "Subject's email address", ""),
("##S_PHONE_NUMBER##", "Subject's phone number", ""),
("##S_PHONE_NUMBER_2##", "Subject's second phone number", ""),
("##S_PHONE_NUMBER_3##", "Subject's third phone number", ""),
("##S_MAIL_LANGUAGE##", "Subject's preferred language for written communication", ""),
("##S_KNOWN_LANGUAGES##", "List of languages known by the subject", "comma separated"),
("##S_SCREENING_NUMBER##", "Subject's screening number", ""),
("##S_DIAGNOSIS##", "Subject's diagnosis", ""),
("##S_DIAGNOSIS_YEAR##", "Subject's year of diagnosis", ""),
("##S_MPOWER_ID##", "Subject's mPower identifier", ""),
("##S_ND_NUMBER##", "Subject's ND number", ""),
("##S_DATE_ADDED##", "Subject's date of creation", get_formatted_time(DATE_FORMAT_SHORT)),
("##S_VIRUS_1_SAMPLE_COLLECTION_DATE##", "Virus test collection date in visit 1",
get_formatted_time(DATE_FORMAT_SHORT)),
("##S_VIRUS_2_SAMPLE_COLLECTION_DATE##", "Virus test collection date in visit 2",
get_formatted_time(DATE_FORMAT_SHORT)),
("##S_VIRUS_3_SAMPLE_COLLECTION_DATE##", "Virus test collection date in visit 3",
get_formatted_time(DATE_FORMAT_SHORT)),
("##S_VIRUS_4_SAMPLE_COLLECTION_DATE##", "Virus test collection date in visit 4",
get_formatted_time(DATE_FORMAT_SHORT)),
("##S_VIRUS_5_SAMPLE_COLLECTION_DATE##", "Virus test collection date in visit 5",
get_formatted_time(DATE_FORMAT_SHORT)),
("##S_VIRUS_1_RESULT##", "Virus test results in visit 1", "Positive"),
("##S_VIRUS_2_RESULT##", "Virus test results in visit 2", "Negative"),
("##S_VIRUS_3_RESULT##", "Virus test results in visit 3", "Inconclusive"),
("##S_VIRUS_4_RESULT##", "Virus test results in visit 4", ""),
("##S_VIRUS_5_RESULT##", "Virus test results in visit 5", ""),
("##S_VIRUS_1_IGA_STATUS##", "IgA Status in visit 1", "Positive"),
("##S_VIRUS_2_IGA_STATUS##", "IgA Status in visit 2", "Negative"),
("##S_VIRUS_3_IGA_STATUS##", "IgA Status in visit 3", "Borderline"),
("##S_VIRUS_4_IGA_STATUS##", "IgA Status in visit 4", ""),
("##S_VIRUS_5_IGA_STATUS##", "IgA Status in visit 5", ""),
("##S_VIRUS_1_IGG_STATUS##", "IgG Status in visit 1", "Positive"),
("##S_VIRUS_2_IGG_STATUS##", "IgG Status in visit 2", "Negative"),
("##S_VIRUS_3_IGG_STATUS##", "IgG Status in visit 3", "Borderline"),
("##S_VIRUS_4_IGG_STATUS##", "IgG Status in visit 4", ""),
("##S_VIRUS_5_IGG_STATUS##", "IgG Status in visit 5", ""),
("##S_HEALTH_PARTNER_NAME##", "Name of the health partner", ""),
("##S_HEALTH_PARTNER_ADDRESS##", "Address of the health partner", ""),
("##S_HEALTH_PARTNER_ZIP_CODE##", "Zip code of the health partner", ""),
("##S_HEALTH_PARTNER_CITY##", "City of the health partner", ""),
]
cls.MAILS_TEMPLATE_VISIT_TAGS = [
("##V_DATE_START_FULL##", "Visit's start date", get_formatted_time(DATETIME_FORMAT)),
("##V_DATE_START_SHORT##", "Visit's start date", get_formatted_time(DATE_FORMAT_SHORT)),
("##V_DATE_ENDS_FULL##", "Visit's end date", get_formatted_time(DATETIME_FORMAT)),
("##V_DATE_ENDS_SHORT##", "Visit's end date", get_formatted_time(DATE_FORMAT_SHORT)),
]
cls.MAILS_TEMPLATE_APPOINTMENT_TAGS = [
("##A_DATE_FULL##", "Appointment's date and time", get_formatted_time(DATETIME_FORMAT)),
("##A_DATE_SHORT##", "Appointment's date", get_formatted_time(DATE_FORMAT_SHORT)),
("##A_TIME##", "Appointment's time", get_formatted_time(DATE_FORMAT_TIME)),
("##A_FLYING_TEAM##", "Appointment's flying team location", ""),
("##A_LOCATION##", "Appointment's location", "value can be 'Flying Team'"),
("##A_LOCATION_OR_FLYINGTEAM##", "Appointment's real location",
"if flying team then returns flying team exact location, otherwise returns location name"),
("##A_STATUS##", "Appointment's status", ""),
("##A_WORKER##", "Worker conducting the assessment", "first_name last_name"),
("##A_WORKER_PHONE##", "Phone number of the worker conducting the assessment", ""),
("##A_WORKER_EMAIL##", "Email address of the worker conducting the assessment", ""),
("##A_ROOM##", "Appointment's room", 'room_number address city'),
("##A_LENGTH##", "Appointment's duration", 'integer, value in minutes'),
("##A_TYPES##", "Appointment's types", "comma separated"),
]
cls.MAILS_TEMPLATE_VOUCHER_TAGS = [
("##C_NUMBER##", "Number", ''),
("##C_PATIENT_NAME##", "Voucher Partner name", ''),
("##C_VOUCHER_TYPE##", "Voucher type", ''),
("##C_ISSUE_DATE_SHORT##", "Issue date", get_formatted_time(DATE_FORMAT_SHORT)),
("##C_EXPIRY_START_SHORT##", "Expiry date", get_formatted_time(DATE_FORMAT_SHORT)),
("##C_PARTNER_NAME##", "Voucher Partner name", ''),
("##C_PARTNER_ADDRESS##", "Voucher Partner address", ''),
("##C_PARTNER_CITY##", "Voucher Partner city", ''),
("##C_PARTNER_POSTAL_CODE##", "Voucher Partner postal code", ''),
("##C_PARTNER_COUNTRY##", "Voucher Partner country", ''),
("##C_PARTNER_PHONE##", "Voucher Partner phone", ''),
("##C_HOURS##", "Hours", ''),
]
name = models.CharField(max_length=255)
context = models.CharField(max_length=1, choices=MAIL_TEMPLATE_CONTEXT_CHOICES)
language = models.ForeignKey("web.Language", on_delete=models.CASCADE, blank=True, null=True)
......
......@@ -39,6 +39,7 @@ class MailTemplatesListView(ListView, WrappedView):
def get_context_data(self, *args, **kwargs):
context = super(MailTemplatesListView, self).get_context_data()
MailTemplate.update_tags()
context['explanations'] = {"generic": MailTemplate.MAILS_TEMPLATE_GENERIC_TAGS,
"subject": MailTemplate.MAILS_TEMPLATE_SUBJECT_TAGS,
"visit": MailTemplate.MAILS_TEMPLATE_VISIT_TAGS,
......
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