diff --git a/sendgrid/helpers/mail/mail.py b/sendgrid/helpers/mail/mail.py index 02c75dacd..59d218b8d 100644 --- a/sendgrid/helpers/mail/mail.py +++ b/sendgrid/helpers/mail/mail.py @@ -3,34 +3,33 @@ class Mail(object): """Creates the response body for v3/mail/send""" - def __init__( self, from_email=None, subject=None, to_email=None, content=None): - self.from_email = None - self.subject = None - self.personalizations = None - self.contents = None - self.attachments = None - self.template_id = None - self.sections = None - self.headers = None - self.categories = None - self.custom_args = None - self.send_at = None - self.batch_id = None - self.asm = None - self.ip_pool_name = None - self.mail_settings = None - self.tracking_settings = None - self.reply_to = None + self._from_email = None + self._subject = None + self._template_id = None + self._send_at = None + self._batch_id = None + self._asm = None + self._ip_pool_name = None + self._mail_settings = None + self._tracking_settings = None + self._reply_to = None + self._personalizations = None + self._contents = None + self._attachments = None + self._sections = None + self._headers = None + self._categories = None + self._custom_args = None # Minimum required to send an email if from_email and subject and to_email and content: - self.set_from(from_email) + self.from_email = from_email + self.subject = subject personalization = Personalization() personalization.add_to(to_email) self.add_personalization(personalization) - self.set_subject(subject) self.add_content(content) def __str__(self): @@ -90,7 +89,7 @@ def get(self): mail["batch_id"] = self.batch_id if self.asm is not None: - mail["asm"] = self.asm + mail["asm"] = self.asm.get() if self.ip_pool_name is not None: mail["ip_pool_name"] = self.ip_pool_name @@ -105,74 +104,152 @@ def get(self): mail["reply_to"] = self.reply_to.get() return mail - def set_from(self, email): - self.from_email = email + @property + def from_email(self): + return self._from_email + + @from_email.setter + def from_email(self, value): + self._from_email = value + + @property + def subject(self): + return self._subject + + @subject.setter + def subject(self, value): + self._subject = value + + @property + def template_id(self): + return self._template_id + + @template_id.setter + def template_id(self, value): + self._template_id = value + + @property + def send_at(self): + return self._send_at + + @send_at.setter + def send_at(self, value): + self._send_at = value + + @property + def batch_id(self): + return self._batch_id + + @batch_id.setter + def batch_id(self, value): + self._batch_id = value + + @property + def asm(self): + return self._asm + + @asm.setter + def asm(self, value): + self._asm = value + + @property + def mail_settings(self): + return self._mail_settings + + @mail_settings.setter + def mail_settings(self, value): + self._mail_settings = value + + @property + def tracking_settings(self): + return self._tracking_settings + + @tracking_settings.setter + def tracking_settings(self, value): + self._tracking_settings = value + + @property + def ip_pool_name(self): + return self._ip_pool_name + + @ip_pool_name.setter + def ip_pool_name(self, value): + self._ip_pool_name = value - def set_subject(self, subject): - self.subject = subject + @property + def reply_to(self): + return self._reply_to + + @reply_to.setter + def reply_to(self, value): + self._reply_to = value + + @property + def personalizations(self): + return self._personalizations def add_personalization(self, personalizations): - if self.personalizations is None: - self.personalizations = [] - self.personalizations.append(personalizations) + if self._personalizations is None: + self._personalizations = [] + self._personalizations.append(personalizations) + + @property + def contents(self): + return self._contents def add_content(self, content): - if self.contents is None: - self.contents = [] - self.contents.append(content) + if self._contents is None: + self._contents = [] + self._contents.append(content) + + @property + def attachments(self): + return self._attachments def add_attachment(self, attachment): - if self.attachments is None: - self.attachments = [] - self.attachments.append(attachment) + if self._attachments is None: + self._attachments = [] + self._attachments.append(attachment) - def set_template_id(self, template_id): - self.template_id = template_id + @property + def sections(self): + return self._sections def add_section(self, section): - if self.sections is None: - self.sections = [] - self.sections.append(section) + if self._sections is None: + self._sections = [] + self._sections.append(section) + + @property + def headers(self): + return self._headers def add_header(self, header): - if self.headers is None: - self.headers = [] + if self._headers is None: + self._headers = [] if isinstance(header, dict): (k, v) = list(header.items())[0] - self.headers.append(Header(k, v)) + self._headers.append(Header(k, v)) else: - self.headers.append(header) - - def add_category(self, category): - if self.categories is None: - self.categories = [] - self.categories.append(category) - - def add_custom_arg(self, custom_arg): - if self.custom_args is None: - self.custom_args = [] - self.custom_args.append(custom_arg) + self._headers.append(header) - def set_send_at(self, send_at): - self.send_at = send_at + @property + def categories(self): + return self._categories - def set_batch_id(self, batch_id): - self.batch_id = batch_id - - def set_asm(self, asm): - self.asm = asm.get() - - def set_mail_settings(self, mail_settings): - self.mail_settings = mail_settings - - def set_tracking_settings(self, tracking_settings): - self.tracking_settings = tracking_settings + def add_category(self, category): + if self._categories is None: + self._categories = [] + self._categories.append(category) - def set_ip_pool_name(self, ip_pool_name): - self.ip_pool_name = ip_pool_name + @property + def custom_args(self): + return self._custom_args - def set_reply_to(self, reply_to): - self.reply_to = reply_to + def add_custom_arg(self, custom_arg): + if self._custom_args is None: + self._custom_args = [] + self._custom_args.append(custom_arg) ################################################################ @@ -183,14 +260,29 @@ def set_reply_to(self, reply_to): class Email(object): def __init__(self, email=None, name=None): - self.name = name if name is not None else None - self.email = email if email is not None else None + self._name = None + self._email = None - def set_name(self, name): - self.name = name + if email is not None: + self.email = email + if name is not None: + self.name = name - def set_email(self, email): - self.email = email + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def email(self): + return self._email + + @email.setter + def email(self, value): + self._email = value def get(self): email = {} @@ -205,18 +297,33 @@ def get(self): class Content(object): def __init__(self, type_=None, value=None): - self.type = type_ if type_ is not None else None - self.value = value if value is not None else None + self._type = None + self._value = None + + if type_ is not None: + self.type = type_ - def set_type(self, type_): - self.type = type_ + if value is not None: + self.value = value - def set_value(self, value): - self.value = value + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value def get(self): content = {} - if self.type is not None: content["type"] = self.type @@ -228,14 +335,29 @@ def get(self): class Header(object): def __init__(self, key=None, value=None): - self.key = key if key is not None else None - self.value = value if value is not None else None + self._key = None + self._value = None + + if key is not None: + self.key = key + if value is not None: + self.value = value - def set_key(self, key): - self.key = key + @property + def key(self): + return self._key - def set_value(self, value): - self.value = value + @key.setter + def key(self, value): + self._key = value + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value def get(self): header = {} @@ -247,14 +369,30 @@ def get(self): class Substitution(object): def __init__(self, key=None, value=None): - self.key = str(key) if key is not None else None - self.value = str(value) if value is not None else None + self._key = None + self._value = None + + if key is not None: + self.key = key + + if value is not None: + self.value = value - def set_key(self, key): - self.key = str(key) if key is not None else None + @property + def key(self): + return self._key - def set_value(self, value): - self.value = str(value) if value is not None else None + @key.setter + def key(self, value): + self._key = str(value) + + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = str(value) def get(self): substitution = {} @@ -266,14 +404,30 @@ def get(self): class Section(object): def __init__(self, key=None, value=None): - self.key = key if key is not None else None - self.value = value if value is not None else None + self._key = None + self._value = None + + if key is not None: + self.key = key + + if value is not None: + self.value = value + + @property + def key(self): + return self._key - def set_key(self, key): - self.key = key + @key.setter + def key(self, value): + self._key = value - def set_value(self, value): - self.value = value + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value def get(self): section = {} @@ -285,14 +439,30 @@ def get(self): class CustomArg(object): def __init__(self, key=None, value=None): - self.key = key if key is not None else None - self.value = value if value is not None else None + self._key = None + self._value = None + + if key is not None: + self.key = key + + if value is not None: + self.value = value + + @property + def key(self): + return self._key - def set_key(self, key): - self.key = key + @key.setter + def key(self, value): + self._key = value - def set_value(self, value): - self.value = value + @property + def value(self): + return self._value + + @value.setter + def value(self, value): + self._value = value def get(self): custom_arg = {} @@ -304,50 +474,108 @@ def get(self): class Personalization(object): def __init__(self): - self.tos = None - self.ccs = None - self.bccs = None - self.subject = None - self.headers = None - self.substitutions = None - self.custom_args = None - self.send_at = None + self._tos = None + self._ccs = None + self._bccs = None + self._subject = None + self._headers = None + self._substitutions = None + self._custom_args = None + self._send_at = None + + @property + def tos(self): + return self._tos + + @tos.setter + def tos(self, value): + self._tos = value def add_to(self, email): - if self.tos is None: - self.tos = [] - self.tos.append(email.get()) + if self._tos is None: + self._tos = [] + self._tos.append(email.get()) + + @property + def ccs(self): + return self._ccs + + @ccs.setter + def ccs(self, value): + self._ccs = value def add_cc(self, email): - if self.ccs is None: - self.ccs = [] - self.ccs.append(email.get()) + if self._ccs is None: + self._ccs = [] + self._ccs.append(email.get()) + + @property + def bccs(self): + return self._bccs + + @bccs.setter + def bccs(self, value): + self._bccs = value def add_bcc(self, email): - if self.bccs is None: - self.bccs = [] - self.bccs.append(email.get()) + if self._bccs is None: + self._bccs = [] + self._bccs.append(email.get()) - def set_subject(self, subject): - self.subject = subject + @property + def subject(self): + return self._subject + + @subject.setter + def subject(self, value): + self._subject = value + + @property + def headers(self): + return self._headers + + @headers.setter + def headers(self, value): + self._headers = value def add_header(self, header): - if self.headers is None: - self.headers = [] - self.headers.append(header.get()) + if self._headers is None: + self._headers = [] + self._headers.append(header.get()) + + @property + def substitutions(self): + return self._substitutions + + @substitutions.setter + def substitutions(self, value): + self.substitutions = value def add_substitution(self, substitution): - if self.substitutions is None: - self.substitutions = [] - self.substitutions.append(substitution.get()) + if self._substitutions is None: + self._substitutions = [] + self._substitutions.append(substitution.get()) + + @property + def custom_args(self): + return self._custom_args + + @custom_args.setter + def custom_args(self, value): + self._custom_args = value def add_custom_arg(self, custom_arg): - if self.custom_args is None: - self.custom_args = [] - self.custom_args.append(custom_arg.get()) + if self._custom_args is None: + self._custom_args = [] + self._custom_args.append(custom_arg.get()) + + @property + def send_at(self): + return self._send_at - def set_send_at(self, send_at): - self.send_at = send_at + @send_at.setter + def send_at(self, value): + self._send_at = value def get(self): personalization = {} @@ -389,26 +617,51 @@ def get(self): class Attachment(object): def __init__(self): - self.content = None - self.type = None - self.filename = None - self.disposition = None - self.content_id = None + self._content = None + self._type = None + self._filename = None + self._disposition = None + self._content_id = None + + @property + def content(self): + return self._content + + @content.setter + def content(self, value): + self._content = value + + @property + def type(self): + return self._type + + @type.setter + def type(self, value): + self._type = value - def set_content(self, content): - self.content = content + @property + def filename(self): + return self._filename - def set_type(self, type): - self.type = type + @filename.setter + def filename(self, value): + self._filename = value - def set_filename(self, filename): - self.filename = filename + @property + def disposition(self): + return self._disposition - def set_disposition(self, disposition): - self.disposition = disposition + @disposition.setter + def disposition(self, value): + self._disposition = value - def set_content_id(self, content_id): - self.content_id = content_id + @property + def content_id(self): + return self._content_id + + @content_id.setter + def content_id(self, value): + self._content_id = value def get(self): attachment = {} @@ -432,7 +685,17 @@ def get(self): class Category(object): def __init__(self, name=None): - self.name = name if name is not None else None + self._name = None + if name is not None: + self._name = name + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + self._name = value def get(self): return self.name @@ -441,9 +704,30 @@ def get(self): class ASM(object): def __init__(self, group_id=None, groups_to_display=None): - self.group_id = group_id if group_id is not None else None - self.groups_to_display = ( - groups_to_display if groups_to_display is not None else None) + self._group_id = None + self._groups_to_display = None + + if group_id is not None: + self._group_id = group_id + + if groups_to_display is not None: + self._groups_to_display = groups_to_display + + @property + def group_id(self): + return self._group_id + + @group_id.setter + def group_id(self, value): + self._group_id = value + + @property + def groups_to_display(self): + return self._groups_to_display + + @groups_to_display.setter + def groups_to_display(self, value): + self._groups_to_display = value def get(self): asm = {} @@ -458,8 +742,30 @@ def get(self): class BCCSettings(object): def __init__(self, enable=None, email=None): - self.enable = enable if enable is not None else None - self.email = email if email is not None else None + self._enable = None + self._email = None + + if enable is not None: + self.enable = enable + + if email is not None: + self.email = email + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def email(self): + return self._email + + @email.setter + def email(self, value): + self._email = value def get(self): bcc_settings = {} @@ -475,7 +781,18 @@ def get(self): class BypassListManagement(object): def __init__(self, enable=None): - self.enable = enable if enable is not None else None + self._enable = None + + if enable is not None: + self.enable = enable + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value def get(self): bypass_list_management = {} @@ -487,18 +804,42 @@ def get(self): class FooterSettings(object): def __init__(self, enable=None, text=None, html=None): - self.enable = enable if enable is not None else None - self.text = text if text else text - self.html = html if html else html + self._enable = None + self._text = None + self._html = None - def set_enable(self, enable): - self.enable = enable + if enable is not None: + self.enable = enable - def set_text(self, text): - self.text = text + if text is not None: + self.text = text - def set_html(self, html): - self.html = html + if html is not None: + self.html = html + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def text(self): + return self._text + + @text.setter + def text(self, value): + self._text = value + + @property + def html(self): + return self._html + + @html.setter + def html(self, value): + self._html = value def get(self): footer_settings = {} @@ -516,7 +857,18 @@ def get(self): class SandBoxMode(object): def __init__(self, enable=None): - self.enable = enable if enable else False + self._enable = None + + if enable is not None: + self.enable = enable + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value def get(self): sandbox_mode = {} @@ -528,25 +880,51 @@ def get(self): class SpamCheck(object): def __init__(self, enable=None, threshold=None, post_to_url=None): - self.enable = enable if enable is not None else None - self.threshold = threshold if threshold is not None else None - self.post_to_url = post_to_url if post_to_url is not None else None + self._enable = None + self._threshold = None + self._post_to_url = None - def set_enable(self, enable): - self.enable = enable + if enable is not None: + self.enable = enable - def set_threshold(self, threshold): - self.threshold = threshold + if threshold is not None: + self.threshold = threshold - def set_post_to_url(self, post_to_url): - self.post_to_url = post_to_url + if post_to_url is not None: + self.post_to_url = post_to_url + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def threshold(self): + return self._threshold + + @threshold.setter + def threshold(self, value): + self._threshold = value + + @property + def post_to_url(self): + return self._post_to_url + + @post_to_url.setter + def post_to_url(self, value): + self._post_to_url = value def get(self): spam_check = {} if self.enable is not None: spam_check["enable"] = self.enable + if self.threshold is not None: spam_check["threshold"] = self.threshold + if self.post_to_url is not None: spam_check["post_to_url"] = self.post_to_url return spam_check @@ -555,38 +933,67 @@ def get(self): class MailSettings(object): def __init__(self): - self.bcc_settings = None - self.bypass_list_management = None - self.footer_settings = None - self.sandbox_mode = None - self.spam_check = None + self._bcc_settings = None + self._bypass_list_management = None + self._footer_settings = None + self._sandbox_mode = None + self._spam_check = None - def set_bcc_settings(self, bcc_settings): - self.bcc_settings = bcc_settings + @property + def bcc_settings(self): + return self._bcc_settings - def set_bypass_list_management(self, bypass_list_management): - self.bypass_list_management = bypass_list_management + @bcc_settings.setter + def bcc_settings(self, value): + self._bcc_settings = value - def set_footer_settings(self, footer_settings): - self.footer_settings = footer_settings + @property + def bypass_list_management(self): + return self._bypass_list_management - def set_sandbox_mode(self, sandbox_mode): - self.sandbox_mode = sandbox_mode + @bypass_list_management.setter + def bypass_list_management(self, value): + self._bypass_list_management = value - def set_spam_check(self, spam_check): - self.spam_check = spam_check + @property + def footer_settings(self): + return self._footer_settings + + @footer_settings.setter + def footer_settings(self, value): + self._footer_settings = value + + @property + def sandbox_mode(self): + return self._sandbox_mode + + @sandbox_mode.setter + def sandbox_mode(self, value): + self._sandbox_mode = value + + @property + def spam_check(self): + return self._spam_check + + @spam_check.setter + def spam_check(self, value): + self._spam_check = value def get(self): mail_settings = {} if self.bcc_settings is not None: mail_settings["bcc"] = self.bcc_settings.get() + if self.bypass_list_management is not None: mail_settings[ "bypass_list_management"] = self.bypass_list_management.get() + if self.footer_settings is not None: mail_settings["footer"] = self.footer_settings.get() + if self.sandbox_mode is not None: mail_settings["sandbox_mode"] = self.sandbox_mode.get() + if self.spam_check is not None: mail_settings["spam_check"] = self.spam_check.get() return mail_settings @@ -595,19 +1002,36 @@ def get(self): class ClickTracking(object): def __init__(self, enable=None, enable_text=None): - self.enable = enable if enable else None - self.enable_text = enable_text if enable_text is not None else None + self._enable = None + self._enable_text = None - def set_enable(self, enable): - self.enable = enable + if enable is not None: + self.enable = enable - def set_enable_text(self, enable_text): - self.enable_text = enable_text + if enable_text is not None: + self.enable_text = enable_text + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def enable_text(self): + return self._enable_text + + @enable_text.setter + def enable_text(self, value): + self._enable_text = value def get(self): click_tracking = {} if self.enable is not None: click_tracking["enable"] = self.enable + if self.enable_text is not None: click_tracking["enable_text"] = self.enable_text return click_tracking @@ -616,20 +1040,35 @@ def get(self): class OpenTracking(object): def __init__(self, enable=None, substitution_tag=None): - self.enable = enable if enable is not None else None - self.substitution_tag = ( - substitution_tag if substitution_tag is not None else None) + self._enable = None + self._substitution_tag = None - def set_enable(self, enable): - self.enable = enable + if enable is not None: + self.enable = enable + if substitution_tag is not None: + self.substitution_tag = substitution_tag - def set_substitution_tag(self, substitution_tag): - self.substitution_tag = substitution_tag + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def substitution_tag(self): + return self._substitution_tag + + @substitution_tag.setter + def substitution_tag(self, value): + self._substitution_tag = value def get(self): open_tracking = {} if self.enable is not None: open_tracking["enable"] = self.enable + if self.substitution_tag is not None: open_tracking["substitution_tag"] = self.substitution_tag return open_tracking @@ -637,34 +1076,64 @@ def get(self): class SubscriptionTracking(object): - def __init__(self, enable=None, text=None, html=None, - substitution_tag=None): - self.enable = enable if enable is not None else None - self.text = text if text is not None else None - self.html = html if html is not None else None - self.substitution_tag = ( - substitution_tag if substitution_tag is not None else None) - - def set_enable(self, enable): - self.enable = enable - - def set_text(self, text): - self.text = text - - def set_html(self, html): - self.html = html - - def set_substitution_tag(self, substitution_tag): - self.substitution_tag = substitution_tag + def __init__(self, enable=None, text=None, html=None, substitution_tag=None): + self._enable = None + self._text = None + self._html = None + self._substitution_tag = None + + if enable is not None: + self.enable = enable + if text is not None: + self.text = text + if html is not None: + self.html = html + if substitution_tag is not None: + self.substitution_tag = substitution_tag + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def text(self): + return self._text + + @text.setter + def text(self, value): + self._text = value + + @property + def html(self): + return self._html + + @html.setter + def html(self, value): + self._html = value + + @property + def substitution_tag(self): + return self._substitution_tag + + @substitution_tag.setter + def substitution_tag(self, value): + self._substitution_tag = value def get(self): subscription_tracking = {} if self.enable is not None: subscription_tracking["enable"] = self.enable + if self.text is not None: subscription_tracking["text"] = self.text + if self.html is not None: subscription_tracking["html"] = self.html + if self.substitution_tag is not None: subscription_tracking["substitution_tag"] = self.substitution_tag return subscription_tracking @@ -679,30 +1148,73 @@ def __init__(self, utm_term=None, utm_content=None, utm_campaign=None): - self.enable = enable if enable is not None else None - self.utm_source = utm_source if utm_source is not None else None - self.utm_medium = utm_medium if utm_medium is not None else None - self.utm_term = utm_term if utm_term is not None else None - self.utm_content = utm_content if utm_content is not None else None - self.utm_campaign = utm_campaign if utm_campaign is not None else None - - def set_enable(self, enable): - self.enable = enable - - def set_utm_source(self, utm_source): - self.utm_source = utm_source - - def set_utm_medium(self, utm_medium): - self.utm_medium = utm_medium - - def set_utm_term(self, utm_term): - self.utm_term = utm_term - - def set_utm_content(self, utm_content): - self.utm_content = utm_content - - def set_utm_campaign(self, utm_campaign): - self.utm_campaign = utm_campaign + self._enable = None + self._utm_source = None + self._utm_medium = None + self._utm_term = None + self._utm_content = None + self._utm_campaign = None + + if enable is not None: + self.enable = enable + if utm_source is not None: + self.utm_source = utm_source + if utm_medium is not None: + self.utm_medium = utm_medium + if utm_term is not None: + self.utm_term = utm_term + if utm_content is not None: + self.utm_content = utm_content + if utm_campaign is not None: + self.utm_campaign = utm_campaign + + @property + def enable(self): + return self._enable + + @enable.setter + def enable(self, value): + self._enable = value + + @property + def utm_source(self): + return self._utm_source + + @utm_source.setter + def utm_source(self, value): + self._utm_source = value + + @property + def utm_medium(self): + return self._utm_medium + + @utm_medium.setter + def utm_medium(self, value): + self._utm_medium = value + + @property + def utm_term(self): + return self._utm_term + + @utm_term.setter + def utm_term(self, value): + self._utm_term = value + + @property + def utm_content(self): + return self._utm_content + + @utm_content.setter + def utm_content(self, value): + self._utm_content = value + + @property + def utm_campaign(self): + return self._utm_campaign + + @utm_campaign.setter + def utm_campaign(self, value): + self._utm_campaign = value def get(self): ganalytics = {} @@ -724,22 +1236,42 @@ def get(self): class TrackingSettings(object): def __init__(self): - self.click_tracking = None - self.open_tracking = None - self.subscription_tracking = None - self.ganalytics = None - - def set_click_tracking(self, click_tracking): - self.click_tracking = click_tracking - - def set_open_tracking(self, open_tracking): - self.open_tracking = open_tracking - - def set_subscription_tracking(self, subscription_tracking): - self.subscription_tracking = subscription_tracking - - def set_ganalytics(self, ganalytics): - self.ganalytics = ganalytics + self._click_tracking = None + self._open_tracking = None + self._subscription_tracking = None + self._ganalytics = None + + @property + def click_tracking(self): + return self._click_tracking + + @click_tracking.setter + def click_tracking(self, value): + self._click_tracking = value + + @property + def open_tracking(self): + return self._open_tracking + + @open_tracking.setter + def open_tracking(self, value): + self._open_tracking = value + + @property + def subscription_tracking(self): + return self._subscription_tracking + + @subscription_tracking.setter + def subscription_tracking(self, value): + self._subscription_tracking = value + + @property + def ganalytics(self): + return self._ganalytics + + @ganalytics.setter + def ganalytics(self, value): + self._ganalytics = value def get(self): tracking_settings = {} diff --git a/test/test_mail.py b/test/test_mail.py index f9fbfe1a8..0b0a781ea 100644 --- a/test/test_mail.py +++ b/test/test_mail.py @@ -39,9 +39,9 @@ def test_helloEmail(self): """Minimum required to send an email""" mail = Mail() - mail.set_from(Email("test@example.com")) + mail.from_email = Email("test@example.com") - mail.set_subject("Hello World from the SendGrid Python Library") + mail.subject = "Hello World from the SendGrid Python Library" personalization = Personalization() personalization.add_to(Email("test@example.com")) @@ -71,9 +71,9 @@ def test_kitchenSink(self): """All settings set""" mail = Mail() - mail.set_from(Email("test@example.com", "Example User")) + mail.from_email = Email("test@example.com", "Example User") - mail.set_subject("Hello World from the SendGrid Python Library") + mail.subject = "Hello World from the SendGrid Python Library" personalization = Personalization() personalization.add_to(Email("test@example.com", "Example User")) @@ -82,8 +82,7 @@ def test_kitchenSink(self): personalization.add_cc(Email("test@example.com", "Example User")) personalization.add_bcc(Email("test@example.com")) personalization.add_bcc(Email("test@example.com")) - personalization.set_subject( - "Hello World from the Personalized SendGrid Python Library") + personalization.subject = "Hello World from the Personalized SendGrid Python Library" personalization.add_header(Header("X-Test", "test")) personalization.add_header(Header("X-Mock", "true")) personalization.add_substitution( @@ -91,7 +90,7 @@ def test_kitchenSink(self): personalization.add_substitution(Substitution("%city%", "Denver")) personalization.add_custom_arg(CustomArg("user_id", "343")) personalization.add_custom_arg(CustomArg("type", "marketing")) - personalization.set_send_at(1443636843) + personalization.send_at = 1443636843 mail.add_personalization(personalization) personalization2 = Personalization() @@ -101,8 +100,7 @@ def test_kitchenSink(self): personalization2.add_cc(Email("test@example.com", "Example User")) personalization2.add_bcc(Email("test@example.com")) personalization2.add_bcc(Email("test@example.com")) - personalization2.set_subject( - "Hello World from the Personalized SendGrid Python Library") + personalization2.subject = "Hello World from the Personalized SendGrid Python Library" personalization2.add_header(Header("X-Test", "test")) personalization2.add_header(Header("X-Mock", "true")) personalization2.add_substitution( @@ -110,7 +108,7 @@ def test_kitchenSink(self): personalization2.add_substitution(Substitution("%city%", "Denver")) personalization2.add_custom_arg(CustomArg("user_id", "343")) personalization2.add_custom_arg(CustomArg("type", "marketing")) - personalization2.set_send_at(1443636843) + personalization2.send_at = 1443636843 mail.add_personalization(personalization2) mail.add_content(Content("text/plain", "some text here")) @@ -120,24 +118,22 @@ def test_kitchenSink(self): "some text here")) attachment = Attachment() - attachment.set_content( - "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2N" - "pbmcgZWxpdC4gQ3JhcyBwdW12") - attachment.set_type("application/pdf") - attachment.set_filename("balance_001.pdf") - attachment.set_disposition("attachment") - attachment.set_content_id("Balance Sheet") + attachment.content = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12" + attachment.type = "application/pdf" + attachment.filename = "balance_001.pdf" + attachment.disposition = "attachment" + attachment.content_id = "Balance Sheet" mail.add_attachment(attachment) attachment2 = Attachment() - attachment2.set_content("BwdW") - attachment2.set_type("image/png") - attachment2.set_filename("banner.png") - attachment2.set_disposition("inline") - attachment2.set_content_id("Banner") + attachment2.content = "BwdW" + attachment2.type = "image/png" + attachment2.filename = "banner.png" + attachment2.disposition = "inline" + attachment2.content_id = "Banner" mail.add_attachment(attachment2) - mail.set_template_id("13b8f94f-bcae-4ec6-b752-70d6cb59f932") + mail.template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932" mail.add_section( Section( @@ -159,54 +155,48 @@ def test_kitchenSink(self): mail.add_custom_arg(CustomArg("campaign", "welcome")) mail.add_custom_arg(CustomArg("weekday", "morning")) - mail.set_send_at(1443636842) + mail.send_at = 1443636842 - mail.set_batch_id("sendgrid_batch_id") + mail.batch_id = "sendgrid_batch_id" - mail.set_asm(ASM(99, [4, 5, 6, 7, 8])) + mail.asm = ASM(99, [4, 5, 6, 7, 8]) - mail.set_ip_pool_name("24") + mail.ip_pool_name = "24" mail_settings = MailSettings() - mail_settings.set_bcc_settings( - BCCSettings(True, Email("test@example.com"))) - mail_settings.set_bypass_list_management(BypassListManagement(True)) - mail_settings.set_footer_settings( - FooterSettings( - True, - "Footer Text", - "Footer Text")) - mail_settings.set_sandbox_mode(SandBoxMode(True)) - mail_settings.set_spam_check( - SpamCheck(True, 1, "https://spamcatcher.sendgrid.com")) - mail.set_mail_settings(mail_settings) + mail_settings.bcc_settings = BCCSettings( + True, Email("test@example.com")) + mail_settings.bypass_list_management = BypassListManagement(True) + mail_settings.footer_settings = FooterSettings( + True, + "Footer Text", + "Footer Text") + mail_settings.sandbox_mode = SandBoxMode(True) + mail_settings.spam_check = SpamCheck( + True, 1, "https://spamcatcher.sendgrid.com") + mail.mail_settings = mail_settings tracking_settings = TrackingSettings() - tracking_settings.set_click_tracking(ClickTracking(True, True)) - tracking_settings.set_open_tracking( - OpenTracking( - True, - "Optional tag to replace with the open image in the body " - "of the message")) - tracking_settings.set_subscription_tracking( - SubscriptionTracking( - True, - "text to insert into the text/plain portion of the message", - "html to insert into the text/html portion of the " - "message", - "Optional tag to replace with the open image in the body of " - "the message")) - tracking_settings.set_ganalytics( - Ganalytics( - True, - "some source", - "some medium", - "some term", - "some content", - "some campaign")) - mail.set_tracking_settings(tracking_settings) - - mail.set_reply_to(Email("test@example.com")) + tracking_settings.click_tracking = ClickTracking( + True, True) + tracking_settings.open_tracking = OpenTracking( + True, + "Optional tag to replace with the open image in the body of the message") + tracking_settings.subscription_tracking = SubscriptionTracking( + True, + "text to insert into the text/plain portion of the message", + "html to insert into the text/html portion of the message", + "Optional tag to replace with the open image in the body of the message") + tracking_settings.ganalytics = Ganalytics( + True, + "some source", + "some medium", + "some term", + "some content", + "some campaign") + mail.tracking_settings = tracking_settings + + mail.reply_to = Email("test@example.com") expected_result = { "asm": {