def validate_user(cls, user, msg): """ Handles the case of a first time user or a user who needs to renew this contact information. @param user: the user to send the email to @type user: models.User @param veri_link: the verification link to enter in their information @type veri_link: string @return: a python representation of a postmark object @rtype: PMMail """ veri_link = msg.verification_link() return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject='Re: ' + msg.subject, html_body=render_without_request("emails/validate_user.html", context={'verification_link': veri_link, 'user': user}), text_body=render_without_request('emails/validate_user.txt.html', context={'verification_link': veri_link, 'user': user}), track_opens=True, custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, } )
def validate_user(cls, user, msg): """ Handles the case of a first time user or a user who needs to renew this contact information. @param user: the user to send the email to @type user: models.User @return: a python representation of a postmark object @rtype: PMMail """ veri_link = msg.verification_link() return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject='Re: ' + msg.subject, html_body=render_without_request( "emails/validate_user.html", context={ 'verification_link': veri_link, 'user': user }), track_opens=True, custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, })
def signup_success(cls, user, msg): """ @param user: the user to send the email to @type user: models.User @return: a python representation of a postmark object @rtype: PMMail """ return PMMail( api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="You are successfully signed up for Email Congress!", html_body=render_without_request( 'emails/signup_success.html', context={ 'link': user.address_change_link(), 'user': user, 'moc': user.default_info.members_of_congress }), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, })
def send_status(cls, user, msg_legs, msg): """ Handles the case where phantom of the capitol is unable to send a message to a particular legislator. Notifies the user of such and includes the contact form URL in the body. @param user: the user to send the email to @type user: models.User @param leg: the legislator that was uncontactable @type leg: models.Legislator @return: a python representation of a postmark object @rtype: PMMail """ send_statuses = {True: [], False: []} for ml in msg_legs: send_statuses[ml.get_send_status()['status'] == 'success'].append(ml.legislator) if len(send_statuses[False]) > 0: subject = 'There were errors processing your recent message to congress.' else: subject = 'Your recent message to congress has successfully sent.' return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject=subject, html_body=render_without_request("emails/send_status.html", context={'legislators': send_statuses, 'user': user}), track_opens=True, custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, )
def remind_reps(cls, user): return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Reminder of your members of Congress", html_body=render_without_request( 'emails/remind_reps.html', context={ 'link': user.address_change_link(), 'user': user, 'moc': user.default_info.members_of_congress }))
def reconfirm_info(cls, user, msg): veri_link = msg.verification_link() return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Complete your email to Congress", html_body=render_without_request("emails/revalidate_user.html", context={'verification_link': veri_link, 'user': user}), track_opens=True )
def message_queued(cls, user, legs, msg): return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Your email is now on its way!", html_body=render_without_request("emails/message_queued.html", context={'legislators': legs, 'user': user}), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, track_opens=True )
def message_undeliverable(cls, user, leg_buckets, msg): return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Your message to congress is unable to be delivered.", html_body=render_without_request("emails/message_undeliverable.html", context={'leg_buckets': leg_buckets, 'user': user}), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, track_opens=True )
def reconfirm_info(cls, user, msg): veri_link = msg.verification_link() return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Complete your email to Congress", html_body=render_without_request( "emails/revalidate_user.html", context={ 'verification_link': veri_link, 'user': user }), track_opens=True)
def token_reset(cls, user): """ @return: a python representation of a postmark object @rtype: PMMail """ return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="You've requested to reset your OpenCongress token.", html_body=render_without_request("emails/token_reset.html", context={'verification_link': user.tmp_token_link(), 'user': user}), track_opens=True )
def message_queued(cls, user, legs, msg): return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Your email is now on its way!", html_body=render_without_request( "emails/message_queued.html", context={ 'legislators': legs, 'user': user }), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, track_opens=True)
def over_rate_limit(cls, user, msg): return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="You've sent too many emails recently.", html_body=render_without_request( "emails/over_rate_limit.html", context={ 'user': user, 'msg': msg }), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, track_opens=True)
def message_undeliverable(cls, user, leg_buckets, msg): return PMMail( api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Your message to congress is unable to be delivered.", html_body=render_without_request( "emails/message_undeliverable.html", context={ 'leg_buckets': leg_buckets, 'user': user }), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, track_opens=True)
def address_changed(cls, user): """ Handles the case of notifying a user when they've changed their address information. @param user: the user to send the email to @type user: models.User @return: a python representation of a postmark object @rtype: PMMail """ return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject='Your OpenCongress contact information has changed.', html_body=render_without_request('emails/address_changed.html', context={'link': user.address_change_link(), 'user': user, 'moc': user.default_info.members_of_congress}) )
def successfully_reset_token(cls, user): """ Handles the case of notifying a user when they've changed their address information. @param user: the user to send the email to @type user: models.User @param umi: user message information instance @type umi: models.UserMessageInfo @return: a python representation of a postmark object @rtype: PMMail """ link = user.token.link() return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject='Your OpenCongress email token has been successfully reset.', html_body=render_without_request('emails/successfully_reset_token.html', context={'user': user, 'link': link}) )
def signup_confirm(cls, user): """ If user signs up through index page then they receive a confirmation email with their change address link to verify they are indeed the owner of the email. @return: a python representation of a postmark object @rtype: PMMail """ return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Confirm your Email Congress account.", html_body=render_without_request( "emails/signup_confirm.html", context={ 'verification_link': user.address_change_link(), 'user': user }), track_opens=True)
def message_receipt(cls, user, legs, msg): """ Handles the follow-up email for every time a user sends an email message. @param user: the user to send the email to @type user: models.User @param legs: dictionary of different cases of contactability with lists of legislators @type legs: dict @param veri_link: the verification link if a captcha is required @type veri_link: string @param rls: the rate limit status @type rls: string @return: a python representation of a postmark object @rtype: PMMail """ rls = msg.status subject = { None: 'Your message to your representatives will be sent.', 'free': 'Your message to your representatives is schedule to be sent.', 'captcha': "You must solve a captcha to complete your message to congress", 'g_captcha': 'You must complete your message to Congress.', 'block': 'Unable to send your message to congress at this time.' }.get(rls) return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject=subject, html_body=render_without_request( "emails/message_receipt.html", context={ 'legislators': legs, 'msg': msg, 'user': user, 'rls': rls }), track_opens=True)
def token_reset(cls, user): """ @return: a python representation of a postmark object @rtype: PMMail """ return PMMail( api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject= "You've requested to change your address information on Email Congress.", html_body=render_without_request("emails/token_reset.html", context={ 'verification_link': user.address_change_link(), 'user': user }), track_opens=True)
def send_status(cls, user, msg_legs, msg): """ Handles the case where phantom of the capitol is unable to send a message to a particular legislator. Notifies the user of such and includes the contact form URL in the body. @param user: the user to send the email to @type user: models.User @param leg: the legislator that was uncontactable @type leg: models.Legislator @return: a python representation of a postmark object @rtype: PMMail """ send_statuses = {True: [], False: []} for ml in msg_legs: send_statuses[ml.get_send_status()['status'] == 'success'].append( ml.legislator) if len(send_statuses[False]) > 0: subject = 'There were errors processing your recent message to congress.' else: subject = 'Your recent message to congress has successfully sent.' return PMMail( api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject=subject, html_body=render_without_request("emails/send_status.html", context={ 'legislators': send_statuses, 'user': user }), track_opens=True, custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, }, )
def address_changed(cls, user): """ Handles the case of notifying a user when they've changed their address information. @param user: the user to send the email to @type user: models.User @return: a python representation of a postmark object @rtype: PMMail """ return PMMail( api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject='Your Email Congress contact information has changed.', html_body=render_without_request( 'emails/address_changed.html', context={ 'link': user.address_change_link(), 'user': user, 'moc': user.default_info.members_of_congress }))
def signup_success(cls, user, msg): """ @param user: the user to send the email to @type user: models.User @return: a python representation of a postmark object @rtype: PMMail """ return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="You are successfully signed up for OpenCongress email congress.", html_body=render_without_request('emails/signup_success.html', context={'link': user.address_change_link(), 'user': user, 'moc': user.default_info.members_of_congress}), custom_headers={ 'In-Reply-To': msg.email_uid, 'References': msg.email_uid, } )
def validate_user(cls, user, msg): """ Handles the case of a first time user or a user who needs to renew this contact infomration. @param user: the user to send the email to @type user: models.User @param veri_link: the verification link to enter in their information @type veri_link: string @return: a python representation of a postmark object @rtype: PMMail """ veri_link = msg.verification_link() return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject="Complete your email to Congress", html_body=render_without_request("emails/validate_user.html", context={'verification_link': veri_link, 'user': user}), track_opens=True )
def message_receipt(cls, user, legs, msg): """ Handles the follow-up email for every time a user sends an email message. @param user: the user to send the email to @type user: models.User @param legs: dictionary of different cases of contactability with lists of legislators @type legs: dict @param veri_link: the verification link if a captcha is required @type veri_link: string @param rls: the rate limit status @type rls: string @return: a python representation of a postmark object @rtype: PMMail """ rls = msg.status subject = { None: 'Your message to your representatives will be sent.', 'free': 'Your message to your representatives is schedule to be sent.', 'captcha': "You must solve a captcha to complete your message to congress", 'g_captcha': 'You must complete your message to Congress.', 'block': 'Unable to send your message to congress at this time.' }.get(rls) return PMMail(api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject=subject, html_body=render_without_request("emails/message_receipt.html", context={'legislators': legs, 'msg': msg, 'user': user, 'rls': rls}), track_opens=True )
def successfully_reset_token(cls, user): """ Handles the case of notifying a user when they've changed their address information. @param user: the user to send the email to @type user: models.User @param umi: user message information instance @type umi: models.UserMessageInfo @return: a python representation of a postmark object @rtype: PMMail """ link = user.token.link() return PMMail( api_key=settings.POSTMARK_API_KEY, sender=cls.SENDER_EMAIL, to=user.email, subject='Your Email Congress token has been successfully reset.', html_body=render_without_request( 'emails/successfully_reset_token.html', context={ 'user': user, 'link': link }))
def __html__(self): return render_without_request('snippets/user.html', user=self)