コード例 #1
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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()
コード例 #2
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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,
    }
コード例 #3
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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,
    }
コード例 #4
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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,
    }
コード例 #5
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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}
コード例 #6
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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
コード例 #7
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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,
    }
コード例 #8
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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
        },
    }
コード例 #9
0
ファイル: mailing.py プロジェクト: Soulou/pass-culture-api
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}'
        },
    }