def subscribe_newsletter(user): if not feature_send_mail_to_users_enabled(): logger.logger.info("Subscription in DEV or STAGING mode is disabled") return try: contact = get_contact(user) except: contact_data = { 'Email': user.email, 'Name': user.publicName } contact_json = app.mailjet_client.contact.create(data=contact_data).json() contact = contact_json['Data'][0] if 'Data' in contact_json else None if contact is None: raise MailServiceException # ('Pass Culture - Liste de diffusion', 1795144) contact_lists_data = { "ContactsLists": [ { "Action": "addnoforce", "ListID": 1795144 } ] } return app.mailjet_client.contact_managecontactslists.create( id=contact['ID'], data=contact_lists_data ).json()
def make_validation_confirmation_email(user_offerer, offerer): user_offerer_email = None user_offerer_rights = None if user_offerer is not None: user_offerer_email = find_user_offerer_email(user_offerer.id) if user_offerer.rights == RightsType.admin: user_offerer_rights = 'administrateur' else: user_offerer_rights = 'éditeur' email_html = render_template( 'mails/user_offerer_and_offerer_validation_confirmation_email.html', user_offerer_email=user_offerer_email, offerer=offerer, user_offerer_rights=user_offerer_rights ) if user_offerer and offerer: subject = 'Validation de votre structure et de compte {} rattaché'.format(user_offerer_rights) elif user_offerer: subject = 'Validation de compte {} rattaché à votre structure'.format(user_offerer_rights) else: subject = 'Validation de votre structure' return { 'FromName': 'pass Culture pro', 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS, 'Subject': subject, 'Html-part': email_html, }
def make_offerer_driven_cancellation_email_for_offerer(booking): stock_name = booking.stock.resolvedOffer.product.name venue = booking.stock.resolvedOffer.venue user_name = booking.user.publicName user_email = booking.user.email email_subject = 'Confirmation de votre annulation de réservation pour {}, proposé par {}'.format(stock_name, venue.name) ongoing_stock_bookings = find_all_ongoing_bookings_by_stock(booking.stock) stock_date_time = None booking_is_on_event = booking.stock.beginningDatetime is not None if booking_is_on_event: date_in_tz = _get_event_datetime(booking.stock) stock_date_time = format_datetime(date_in_tz) email_html = render_template('mails/offerer_recap_email_after_offerer_cancellation.html', booking_is_on_event=booking_is_on_event, user_name=user_name, user_email=user_email, stock_date_time=stock_date_time, number_of_bookings=len(ongoing_stock_bookings), stock_bookings=ongoing_stock_bookings, stock_name=stock_name, venue=venue, ) return { 'FromName': 'Pass Culture', 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS, 'Subject': email_subject, 'Html-part': email_html, }
def make_offerer_driven_cancellation_email_for_user(booking): offer_name = booking.stock.resolvedOffer.product.name offerer_name = booking.stock.resolvedOffer.venue.managingOfferer.name booking_value = booking.amount * booking.quantity booking_is_on_event = booking.stock.beginningDatetime is not None formatted_datetime = None commande_ou_reservation = 'réservation' if booking_is_on_event else 'commande' if booking_is_on_event: date_in_tz = _get_event_datetime(booking.stock) formatted_datetime = format_datetime(date_in_tz) email_html = render_template('mails/user_cancellation_by_offerer_email.html', booking_is_on_event=booking_is_on_event, user=booking.user, offer_name=offer_name, event_date=formatted_datetime, offerer_name=offerer_name, booking_value=booking_value ) email_subject = 'Votre {} pour {}, proposé par {} a été annulée par l\'offreur'.format(commande_ou_reservation, offer_name, offerer_name) return { 'FromName': 'Pass Culture', 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS, 'Subject': email_subject, 'Html-part': email_html, }
def make_webapp_user_validation_email(user: User, app_origin_url: str) -> dict: template = 'mails/webapp_user_validation_email.html' from_name = 'pass Culture' email_html = render_template(template, user=user, api_url=API_URL, app_origin_url=app_origin_url) return {'Html-part': email_html, 'To': user.email, 'Subject': 'Validation de votre adresse email pour le pass Culture', 'FromName': from_name, 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS}
def compute_email_html_part_and_recipients(email_html_part, recipients): if isinstance(recipients, list): recipients_string = ", ".join(recipients) else: recipients_string = recipients if feature_send_mail_to_users_enabled(): email_to = recipients_string else: email_html_part = '<p>This is a test (ENV={environment}). In production, email would have been sent to : {recipients}</p>{html_part}'.format( environment=ENV, recipients=recipients_string, html_part=email_html_part) email_to = DEV_EMAIL_ADDRESS return email_html_part, email_to
def make_user_booking_recap_email(booking, is_cancellation=False): stock = booking.stock user = booking.user if is_cancellation: email_html, email_subject = _generate_user_driven_cancellation_email_for_user(user, stock) else: email_html, email_subject = _generate_reservation_email_html_subject(booking) return { 'FromName': 'Pass Culture', 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS, 'Subject': email_subject, 'Html-part': email_html, }
def _pro_user_waiting_for_validation_by_admin_email(user: User, app_origin_url: str): from_name = 'pass Culture pro' offerer_name = user.publicName return { 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS, 'FromName': from_name, 'Subject': f'[pass Culture pro] Votre structure {offerer_name} est en cours de validation', 'MJ-TemplateID': '778329', 'MJ-TemplateLanguage': 'true', 'Recipients': [ { "Email": user.email, "Name": offerer_name } ], 'Vars': { 'nom_structure': offerer_name }, }
def make_pro_user_validation_email(user: User, app_origin_url: str) -> dict: from_name = 'pass Culture pro' return { 'FromEmail': SUPPORT_EMAIL_ADDRESS if feature_send_mail_to_users_enabled() else DEV_EMAIL_ADDRESS, 'FromName': from_name, 'Subject': "[pass Culture pro] Validation de votre adresse email pour le pass Culture", 'MJ-TemplateID': '778688', 'MJ-TemplateLanguage': 'true', 'Recipients': [ { "Email": user.email, "Name": user.publicName } ], 'Vars': { 'nom_structure': user.publicName, 'lien_validation_mail': f'{app_origin_url}/inscription/validation/{user.validationToken}' }, }