diff --git a/smash/web/forms/voucher_forms.py b/smash/web/forms/voucher_forms.py index 6e2e9478a344179910f872e680a5df982bbc3341..725c9ff9eaa75d57d31a0547b8aadd8956e7843f 100644 --- a/smash/web/forms/voucher_forms.py +++ b/smash/web/forms/voucher_forms.py @@ -57,6 +57,7 @@ class VoucherForm(ModelForm): if instance and instance.pk: self.fields['voucher_type'].widget.attrs['readonly'] = True self.fields['hours'].widget.attrs['readonly'] = True + self.fields['activity_type'].widget.attrs['readonly'] = True self.fields['usage_partner'].widget.attrs['readonly'] = True if instance.status in [VOUCHER_STATUS_USED, VOUCHER_STATUS_EXPIRED]: diff --git a/smash/web/migrations/0117_voucher_activity_type.py b/smash/web/migrations/0117_voucher_activity_type.py new file mode 100644 index 0000000000000000000000000000000000000000..ef1198ed71c60bd8df6f4f1fcea686155b86adba --- /dev/null +++ b/smash/web/migrations/0117_voucher_activity_type.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2018-07-17 12:54 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('web', '0116_auto_20180611_1346'), + ] + + operations = [ + migrations.AddField( + model_name='voucher', + name='activity_type', + field=models.CharField(blank=True, default=b'', max_length=40, verbose_name=b'Activity type'), + ), + ] diff --git a/smash/web/models/mail_template.py b/smash/web/models/mail_template.py index 143f5a1970ec1d039625ff9efa20e9f8c1fe9ed1..15adb9bf16490aeb6d738689b93656365a81feff 100644 --- a/smash/web/models/mail_template.py +++ b/smash/web/models/mail_template.py @@ -291,10 +291,13 @@ class MailTemplate(models.Model): @staticmethod def get_voucher_replacements(voucher): if voucher is not None: + voucher_type = voucher.voucher_type.description + if voucher.activity_type != '': + voucher_type += ' (' + voucher.activity_type + ")" return { "##C_NUMBER##": voucher.number, "##C_PATIENT_NAME##": voucher.study_subject.subject.first_name + ' ' + voucher.study_subject.subject.last_name, - "##C_VOUCHER_TYPE##": voucher.voucher_type.description, + "##C_VOUCHER_TYPE##": voucher_type, "##C_ISSUE_DATE_SHORT##": voucher.issue_date.strftime(DATE_FORMAT_SHORT).decode(date_format_encoding()), "##C_EXPIRY_START_SHORT##": voucher.expiry_date.strftime(DATE_FORMAT_SHORT).decode( date_format_encoding()), diff --git a/smash/web/models/voucher.py b/smash/web/models/voucher.py index 2f47fae06cd7c58e4c75424d0b768daa8d51aa2a..560b5896a342dcd3c90be70f2ff1f97e7011a521 100644 --- a/smash/web/models/voucher.py +++ b/smash/web/models/voucher.py @@ -48,6 +48,13 @@ class Voucher(models.Model): default=VOUCHER_STATUS_NEW ) + activity_type = models.CharField(max_length=40, + verbose_name='Activity type', + null=False, + blank=True, + default='' + ) + feedback = models.TextField(max_length=2000, blank=True, verbose_name='Feedback' diff --git a/smash/web/tests/models/test_mail_template.py b/smash/web/tests/models/test_mail_template.py index 56dd95da2d9d5e5a9c29229280a3b9481fe42a81..6aaded5be31542aab93fdfd6c00baec1ab779bd1 100644 --- a/smash/web/tests/models/test_mail_template.py +++ b/smash/web/tests/models/test_mail_template.py @@ -147,6 +147,21 @@ class MailTemplateModelTests(TestCase): voucher.issue_date.strftime(DATE_FORMAT_SHORT) ]) + def test_valid_voucher_replacement(self): + subject = create_study_subject() + voucher = create_voucher(study_subject=subject) + voucher.activity_type = 'act type' + + replacements = MailTemplate.get_voucher_replacements(voucher) + + activity_type_in_replacements = False + for key in replacements: + self.assertIsNotNone(key) + self.assertIsNotNone(replacements[key], msg="None value for key: " + key) + if voucher.activity_type in replacements[key]: + activity_type_in_replacements = True + self.assertTrue(activity_type_in_replacements) + def test_valid_subject_replacement(self): subject = create_study_subject()