From f63ca6b08e988d02aa682e24aa1206a12b4cf255 Mon Sep 17 00:00:00 2001 From: Victoria Earl Date: Fri, 15 Mar 2024 22:22:55 -0400 Subject: [PATCH] Update dealer and panel emails for 2024 Changes requested via Slack! --- magwest/automated_emails.py | 37 +++++++++++++++++-- magwest/models.py | 6 +++ .../templates/emails/dealers/approved.html | 8 ++-- magwest/templates/emails/dealers/declined.txt | 6 +++ .../emails/dealers/payment_reminder.txt | 9 +++++ .../templates/emails/dealers/waitlisted.txt | 12 ++++++ .../emails/panels/panel_app_accepted.txt | 17 +++++++++ .../emails/panels/panel_app_declined.txt | 11 ++++++ .../emails/panels/panel_app_scheduled.txt | 13 +++++++ .../emails/panels/panel_app_waitlisted.txt | 9 +++++ .../emails/panels/panelist_schedule.txt | 5 +++ .../emails/placeholders/panelist.txt | 7 ++++ .../preregistration/dealer_confirmation.html | 1 - 13 files changed, 133 insertions(+), 8 deletions(-) create mode 100644 magwest/templates/emails/dealers/declined.txt create mode 100644 magwest/templates/emails/dealers/payment_reminder.txt create mode 100644 magwest/templates/emails/dealers/waitlisted.txt create mode 100644 magwest/templates/emails/panels/panel_app_accepted.txt create mode 100644 magwest/templates/emails/panels/panel_app_declined.txt create mode 100644 magwest/templates/emails/panels/panel_app_scheduled.txt create mode 100644 magwest/templates/emails/panels/panel_app_waitlisted.txt create mode 100644 magwest/templates/emails/panels/panelist_schedule.txt create mode 100644 magwest/templates/emails/placeholders/panelist.txt diff --git a/magwest/automated_emails.py b/magwest/automated_emails.py index 4658e28..e8866a4 100644 --- a/magwest/automated_emails.py +++ b/magwest/automated_emails.py @@ -1,11 +1,28 @@ from datetime import timedelta -from uber.automated_emails import AutomatedEmailFixture, BandEmailFixture, StopsEmailFixture +from uber.automated_emails import AutomatedEmailFixture, MarketplaceEmailFixture, StopsEmailFixture from uber.config import c -from uber.models import Attendee +from uber.models import Attendee, AutomatedEmail from uber.utils import before, days_before, days_after +MarketplaceEmailFixture( + f'Waitlisted - {c.EVENT_NAME_AND_YEAR}', + 'dealers/waitlisted.txt', + lambda g: g.status == c.WAITLISTED, + # query=Group.status == c.WAITLISTED, + needs_approval=True, + ident='dealer_reg_waitlisted') + +MarketplaceEmailFixture( + f'About your Declined Dealer\'s Application - {c.EVENT_NAME_AND_YEAR}', + 'dealers/declined.txt', + lambda g: g.status == c.DECLINED, + # query=Group.status == c.DECLINED, + needs_approval=True, + ident='dealer_reg_declined') + + AutomatedEmailFixture( Attendee, '{EVENT_NAME} food for guests', @@ -14,6 +31,7 @@ ident='magwest_guest_food_restrictions', sender="MAGWest Tea Room ") + AutomatedEmailFixture( Attendee, '{EVENT_NAME} hospitality suite information', @@ -22,6 +40,7 @@ ident='magwest_guest_food_info', sender="MAGWest Tea Room ") + AutomatedEmailFixture( Attendee, '{EVENT_NAME} Volunteer Food', @@ -30,6 +49,7 @@ ident='magwest_volunteer_food_info', sender="MAGWest Tea Room ") + AutomatedEmailFixture( Attendee, '{EVENT_NAME} FAQ', @@ -37,15 +57,16 @@ lambda a: a.badge_status == c.COMPLETED_STATUS and days_before(7, c.FINAL_EMAIL_DEADLINE), ident='magwest_prefest_faq') + AutomatedEmailFixture( Attendee, '{EVENT_NAME} PC Gaming Survey', 'pc_gaming_survey.html', lambda a: c.LAN in a.interests_ints, ident='pc_gaming_survey', - needs_approval=True, sender="MAGWest LAN Staff ") + StopsEmailFixture( 'CORRECTION to the {EVENT_NAME} ({EVENT_DATE}) Shift Schedule Email', 'shifts/schedule_correction.html', @@ -53,6 +74,7 @@ when=days_before(1, c.FINAL_EMAIL_DEADLINE), ident='volunteer_shift_schedule_correction') + AutomatedEmailFixture( Attendee, 'Last Chance for MAGWest {EVENT_YEAR} bonus swag!', @@ -62,3 +84,12 @@ when=before(c.EPOCH - timedelta(days=2)), sender='MAGWest Merch Team ', ident='magwest_bonus_swag_reminder_last_chance') + + +AutomatedEmail.email_overrides.extend([ + ('panel_accepted', 'subject', f"Approved - {c.EVENT_NAME_AND_YEAR} Panel Application"), + ('panel_declined', 'subject', f"Declined - {c.EVENT_NAME_AND_YEAR} Panel Application"), + ('panel_waitlisted', 'subject', f"Waitlisted - {c.EVENT_NAME_AND_YEAR} Panel Application"), + ('panel_accept_reminder', 'subject', f"Last Chance to Confirm Your Panel - {c.EVENT_NAME_AND_YEAR}"), + ('panel_scheduled', 'subject', f"Your Panel has been Scheduled - {c.EVENT_NAME_AND_YEAR}") + ]) \ No newline at end of file diff --git a/magwest/models.py b/magwest/models.py index a47fab7..57f66ff 100644 --- a/magwest/models.py +++ b/magwest/models.py @@ -2,12 +2,18 @@ from uber.models.types import DefaultColumn as Column, MultiChoice from uber.config import c + @Session.model_mixin class Attendee: @property def num_free_event_shirts(self): return 1 if self.badge_type == c.STAFF_BADGE else self.volunteer_event_shirt_eligible + @property + def approved_panel_apps(self): + return [panel.name for panel in self.panel_applications if panel.status == c.ACCEPTED] + + @Session.model_mixin class GuestMerch: extra_merch_time = Column(MultiChoice(c.EXTRA_MERCH_TIME_OPTS)) \ No newline at end of file diff --git a/magwest/templates/emails/dealers/approved.html b/magwest/templates/emails/dealers/approved.html index 9af7f30..5031ad6 100644 --- a/magwest/templates/emails/dealers/approved.html +++ b/magwest/templates/emails/dealers/approved.html @@ -1,11 +1,9 @@

-

Thank you for your interest in the MAGWest Marketplace. Your group ({{ group.name }}) has been approved as a {{ c.EVENT_NAME }} Dealer for this coming {{ event_dates() }}!

+

Hello there! Thank you for submitting your dealer's application for this year's MAGWest Marketplace. Your group ({{ group.name }}) has been approved as a {{ c.EVENT_NAME }} Dealer for this coming {{ event_dates() }}!

-

Please note that we are still in process of finalizing the Marketplace contract for this year and will be sending a second email with a link to the contract shortly.

- -

Once you have looked over the contract, please go ahead and pay the ${{ group.cost }} you owe using the credit card button on this page.

+

By proceeding with the purchase of your table(s), you are implicitly agreeing to comply with both the MAGWest Marketplace agreement and the event's code of conduct. To view the MAGWest Marketplace agreement and purchase your approved tables, go ahead and pay the ${{ group.cost }} you owe using the credit card button on this page.

Payment is expected by: {{ c.DEALER_PAYMENT_DUE|datetime_local }}. Failure to pay by this date may result in removal of your application and your tables being filled by another applicant.

@@ -17,6 +15,8 @@
  • {{ group.badges }} badge{{ group.badges|pluralize }} ({{ group.default_badge_cost|format_currency }})
  • +

    Looking forward to working with you! Cheers!

    + {{ c.MARKETPLACE_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/dealers/declined.txt b/magwest/templates/emails/dealers/declined.txt new file mode 100644 index 0000000..08b5a52 --- /dev/null +++ b/magwest/templates/emails/dealers/declined.txt @@ -0,0 +1,6 @@ +Dear {{ c.DEALER_TERM }}, + + +Thank you for submitting your dealer's application to MAGWest. We appreciate your interest in our event and thank you for considering us as an avenue for your business. After careful review, we have decided that we are unable to accept your submission at this time. Please know that this decision was not a reflection of your skills or abilities, as we received many unique and incredible submissions and had to make some tough choices. We absolutely encourage you to apply next year and we welcome you to attend MAGWest regardless. + +{{ c.MARKETPLACE_EMAIL_SIGNATURE }} \ No newline at end of file diff --git a/magwest/templates/emails/dealers/payment_reminder.txt b/magwest/templates/emails/dealers/payment_reminder.txt new file mode 100644 index 0000000..eb74d7b --- /dev/null +++ b/magwest/templates/emails/dealers/payment_reminder.txt @@ -0,0 +1,9 @@ +{{ group.leader.first_name }}, + +Thanks again for registering as a {{ c.DEALER_TERM }} for this year's {{ c.EVENT_NAME }}. Our records indicate that your Dealer registration ({{ group.name }}) is still unpaid, and if we do not receive payment by {{ c.DEALER_PAYMENT_DUE|datetime_local }} then will be unapproved and your your table(s) will be unapproved and your spot will open for those on the waitlist.{% if c.DEALER_PAYMENT_DUE|timedelta(days=-7) > now_localized() %} You will receive 1 more reminder the week before your payment is due.{% endif %} + +You can use the credit card button on your group's page to pay the {{ group.amount_unpaid|format_currency }} that you owe: {{ c.URL_BASE }}/preregistration/group_members?id={{ group.id }} + +Let us know if you have any questions! We’re more than happy to help! + +{{ c.MARKETPLACE_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/dealers/waitlisted.txt b/magwest/templates/emails/dealers/waitlisted.txt new file mode 100644 index 0000000..edd1b97 --- /dev/null +++ b/magwest/templates/emails/dealers/waitlisted.txt @@ -0,0 +1,12 @@ +Dear {{ c.DEALER_TERM }} + +Thank you for submitting your dealer's application to MAGWest. We appreciate your interest in our event and thank you for considering us as an avenue for your business. + +After careful review and consideration, we have decided to place your submission on a waitlist. This means that while we are unable to accept your submission at this time, we may consider it in the future should a suitable opportunity arise. Although we cannot accept all submissions received, we were astounded by the number of unique and wonderful entries that were sent in. + +Please note that sometimes opportunities arise at the last minute, and we may need to make a decision quickly. In the event that a spot becomes available for your business, we will notify you as soon as possible, which may be as little as a day before the event. + +Regardless of your status, we welcome you to attend the event and hope to see you there! + +Best regards, +{{ c.MARKETPLACE_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/panels/panel_app_accepted.txt b/magwest/templates/emails/panels/panel_app_accepted.txt new file mode 100644 index 0000000..b50ad8a --- /dev/null +++ b/magwest/templates/emails/panels/panel_app_accepted.txt @@ -0,0 +1,17 @@ +{{ app.submitter.first_name }}, + +Congratulations, "{{ app.name }}", the panel you submitted for {{ c.EVENT_NAME_AND_YEAR }}, has been approved. IT IS IMPORTANT TO MAKE SURE YOU CHECK YOUR SPAM/JUNK/QUARANTINE FOLDERS FOR OUR UPDATES.{% if app.confirm_deadline %} + +You must confirm you can still run the panel or your submission will automatically be put on the waitlist on {{ app.confirm_deadline|datetime_local }}. You can confirm by clicking this link: {{ c.URL_BASE }}/panels/confirm_panel?id={{ app.id }}{% endif %} + +After you confirm your attendance, we will send you another e-mail to confirm your availability on our schedule. Note that your day and time will be manually scheduled based on the availability you specified on your submission. If this availability has changed, please let us know as soon as possible, as we will not be reaching out again for availability before scheduling. + +Yourself and all panelists will receive a complimentary badge for each person pre-submitted on the panel application. If you have not yet registered you will receive a notification that we have begun registering you for the event, and you will need to follow the instruction in that email to finish your registration. + +Important: If you or any others on your panel have purchased badges, {{ c.EVENT_NAME }} will refund the purchase price. Please let us know if this is the case so we can get your refund sooner. As a reminder {{ c.EVENT_NAME }} will be held {{ c.EPOCH|datetime_local("%A, %B %-d") }} through {{ c.ESCHATON|datetime_local("%A, %B %-d") }} at {{ c.EVENT_VENUE }}. + +If you have any questions or concerns, please don't hesitate to send them to {{ c.PANELS_EMAIL|email_only }}. + +Congratulations again, and we look forward to seeing you at {{ c.EVENT_NAME }}! + +{{ c.PANELS_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/panels/panel_app_declined.txt b/magwest/templates/emails/panels/panel_app_declined.txt new file mode 100644 index 0000000..5702e14 --- /dev/null +++ b/magwest/templates/emails/panels/panel_app_declined.txt @@ -0,0 +1,11 @@ +{{ app.submitter.first_name }}, + +Thank you for submitting your panel, "{{ app.name }}", for {{ c.EVENT_NAME }} {{ c.EVENT_YEAR }}. {{ c.EVENT_NAME }} is growing and changing every year, and due to our time and space constraints we have to decline the majority of submissions that we receive, including many we wish we could accept. Unfortunately, we did not have enough space in our schedule this year to accommodate your panel. + +Regardless, we still would love to see you at MAGWest as you're welcomed to enjoy the event. There are many opportunities to get involved (whether performing, jamming, or hanging) so please make sure to monitor our social media for when an opportunity arises. + +Finally, as always, we encourage you to please apply again next year! + +If you have any questions or concerns, please don't hesitate to send them to {{ c.PANELS_EMAIL|email_only }}. + +{{ c.PANELS_EMAIL_SIGNATURE }} \ No newline at end of file diff --git a/magwest/templates/emails/panels/panel_app_scheduled.txt b/magwest/templates/emails/panels/panel_app_scheduled.txt new file mode 100644 index 0000000..4d9d83e --- /dev/null +++ b/magwest/templates/emails/panels/panel_app_scheduled.txt @@ -0,0 +1,13 @@ +{{ app.submitter.first_name }}, + +"{{ app.name }}", the panel you submitted for {{ c.EVENT_NAME }}, has been scheduled. {{ c.EVENT_NAME }} is {{ c.EPOCH|datetime_local("%A, %B %-d") }} through {{ c.ESCHATON|datetime_local("%A, %B %-d") }}, and your panel is currently scheduled for {{ app.event.timespan(minute_increment=30) }}. + +This scheduling can potentially be changed in the event of a cancellation or other request to switch, but was chosen based on yours and others' declared availability from your submission. + +In the meantime, please review our Welcome Packet on how to navigate the event as a panelist! + +If you have any questions or concerns, please don't hesitate to send them to {{ c.PANELS_EMAIL|email_only }}. + +Congratulations again, and we look forward to seeing you at {{ c.EVENT_NAME }}! + +{{ c.PANELS_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/panels/panel_app_waitlisted.txt b/magwest/templates/emails/panels/panel_app_waitlisted.txt new file mode 100644 index 0000000..08c67fb --- /dev/null +++ b/magwest/templates/emails/panels/panel_app_waitlisted.txt @@ -0,0 +1,9 @@ +{{ app.submitter.first_name }}, + +Thanks for your interest in putting on a panel for {{ c.EVENT_NAME_AND_YEAR }}! {% if app.after_confirm_deadline %}Because you did not confirm your accepted panel, your panel has been automatically waitlisted.{% else %}Due to the volume of applications we were unable to find a place on our schedule for your panel ({{ app.name }}), but we liked it enough to add it to our waiting list. Wait-listed candidates will be considered if any of our other panels are cancelled.{% endif %} + +Regardless, we still would love to see you at MAGWest as you're welcomed to enjoy the event. There are many opportunities to get involved (whether performing, jamming, or hanging) so please make sure to monitor our social media for when an opportunity arises. + +Please don't hesitate to let us know if you have any questions or concerns. Otherwise, we look forward to seeing you at {{ c.EVENT_NAME }}! + +{{ c.PANELS_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/panels/panelist_schedule.txt b/magwest/templates/emails/panels/panelist_schedule.txt new file mode 100644 index 0000000..7105704 --- /dev/null +++ b/magwest/templates/emails/panels/panelist_schedule.txt @@ -0,0 +1,5 @@ +{{ attendee.first_name }}, + +You are signed up to present {{ attendee.assigned_panelists|length }} panel{{ attendee.assigned_panelists|length|pluralize }} at this coming {{ c.EVENT_NAME }}. You can find a printable panel schedule at {{ c.URL_BASE }}/schedule/panelist_schedule?id={{ attendee.id }} Also please follow our scheduling app “Sched” and subscribe to MAGWest. From there you can find the most up-to-date information on your panel. + +{{ c.PANELS_EMAIL_SIGNATURE }} diff --git a/magwest/templates/emails/placeholders/panelist.txt b/magwest/templates/emails/placeholders/panelist.txt new file mode 100644 index 0000000..403434f --- /dev/null +++ b/magwest/templates/emails/placeholders/panelist.txt @@ -0,0 +1,7 @@ +{% if attendee.first_name %}{{ attendee.first_name }}, + +{% endif %}Thanks for coming out to {{ c.EVENT_NAME }} to present on {{ attendee.approved_panel_apps|readable_join }}! We've added you to our registration database for your complementary badge, but we don't have all of your personal information. To ensure that you can pick up your badge with no hassles at our registration desk, please fill out the rest of your info at {{ c.URL_BASE }}/preregistration/confirm?id={{ attendee.id }} and then simply bring a photo ID{{ c.EXTRA_CHECKIN_DOCS }} to {{ c.EVENT_NAME }}. + +Please let us know if you have any questions. + +{{ c.PANELS_EMAIL_SIGNATURE }} diff --git a/magwest/templates/preregistration/dealer_confirmation.html b/magwest/templates/preregistration/dealer_confirmation.html index 47f07e8..fd56041 100644 --- a/magwest/templates/preregistration/dealer_confirmation.html +++ b/magwest/templates/preregistration/dealer_confirmation.html @@ -2,7 +2,6 @@ {% block title %}Dealer Application Received{% endblock %} {% block backlink %}{% endblock %} {% block content %} -{% include 'prereg_masthead.html' %}

    {% if group.status == c.WAITLISTED %}You've been added to our waitlist!{% else %}Thanks for applying as a Dealer!{% endif %}