Exemplo n.º 1
0
def send_course_purchase_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            products = order.lines.all()
            product_titles = ""
            for product in products:
                product_titles = product_titles + " " + product.product.title
            #product = order.lines.first().product

         
            receipt_page_url = get_receipt_page_url(
                order_number=order.number,
                site_configuration=order.site.siteconfiguration
            )

            send_notification(
                 order.user,
                 'COURSE_PURCHASED',
                 {
                            'course_title': product_titles,
                            'order_number': order.number,
                            'receipt_page_url': receipt_page_url,
                 },
                        order.site
               )

        else:
            logger.info('Currently support receipt emails for order with one item.')
Exemplo n.º 2
0
 def send_email(self, order):
     """ Sends an email with enrollment code order information. """
     # Note (multi-courses): Change from a course_name to a list of course names.
     product = order.lines.first().product
     course = Course.objects.get(id=product.attr.course_key)
     receipt_page_url = get_receipt_page_url(
         order_number=order.number,
         site_configuration=order.site.siteconfiguration
     )
     send_notification(
         order.user,
         'ORDER_WITH_CSV',
         context={
             'contact_url': order.site.siteconfiguration.build_lms_url('/contact'),
             'course_name': course.name,
             'download_csv_link': order.site.siteconfiguration.build_ecommerce_url(
                 reverse('coupons:enrollment_code_csv', args=[order.number])
             ),
             'enrollment_code_title': product.title,
             'lms_url': order.site.siteconfiguration.build_lms_url(),
             'order_number': order.number,
             'partner_name': order.site.siteconfiguration.partner.name,
             'receipt_page_url': receipt_page_url,
         },
         site=order.site
     )
Exemplo n.º 3
0
def send_course_purchase_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            product = order.lines.first().product
            provider_id = getattr(product.attr, 'credit_provider', None)
            if not provider_id:
                logger.error(
                    'Failed to send credit receipt notification. Credit seat product [%s] has not provider.',
                    product.id)
                return
            elif product.get_product_class().name == 'Seat':
                provider_data = get_provider_data(provider_id)
                if provider_data:
                    send_notification(
                        order.user, 'CREDIT_RECEIPT', {
                            'course_title':
                            product.title,
                            'receipt_page_url':
                            get_lms_url(
                                '/commerce/checkout/receipt/?orderNum={}'.
                                format(order.number)),
                            'credit_hours':
                            product.attr.credit_hours,
                            'credit_provider':
                            provider_data['display_name'],
                        })

        else:
            logger.info(
                'Currently support receipt emails for order with one item.')
Exemplo n.º 4
0
def send_course_purchase_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            product = order.lines.first().product
            provider_id = getattr(product.attr, 'credit_provider', None)
            if not provider_id:
                logger.error(
                    'Failed to send credit receipt notification. Credit seat product [%s] has not provider.', product.id
                )
                return
            elif product.get_product_class().name == 'Seat':
                provider_data = get_provider_data(provider_id)
                if provider_data:
                    send_notification(
                        order.user,
                        'CREDIT_RECEIPT',
                        {
                            'course_title': product.title,
                            'receipt_page_url': get_lms_url(
                                '/commerce/checkout/receipt/?basket_id={}'.format(order.basket.id)
                            ),
                            'credit_hours': product.attr.credit_hours,
                            'credit_provider': provider_data['display_name'],
                        }
                    )

        else:
            logger.info('Currently support receipt emails for order with one item.')
Exemplo n.º 5
0
def send_course_purchase_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            product = order.lines.first().product
            credit_provider_id = getattr(product.attr, 'credit_provider', None)
            if not credit_provider_id:
                logger.error(
                    'Failed to send credit receipt notification. Credit seat product [%s] has no provider.',
                    product.id)
                return
            elif product.is_seat_product:
                provider_data = get_credit_provider_details(
                    access_token=order.site.siteconfiguration.access_token,
                    credit_provider_id=credit_provider_id,
                    site_configuration=order.site.siteconfiguration)

                receipt_page_url = get_receipt_page_url(
                    order_number=order.number,
                    site_configuration=order.site.siteconfiguration)

                if provider_data:
                    send_notification(
                        order.user, 'CREDIT_RECEIPT', {
                            'course_title': product.title,
                            'receipt_page_url': receipt_page_url,
                            'credit_hours': product.attr.credit_hours,
                            'credit_provider': provider_data['display_name'],
                        }, order.site)

        else:
            logger.info(
                'Currently support receipt emails for order with one item.')
Exemplo n.º 6
0
 def send_email(self, order):
     """ Sends an email with enrollment code order information. """
     # Note (multi-courses): Change from a course_name to a list of course names.
     product = order.lines.first().product
     course = Course.objects.get(id=product.attr.course_key)
     receipt_page_url = get_receipt_page_url(
         order_number=order.number,
         site_configuration=order.site.siteconfiguration
     )
     send_notification(
         order.user,
         'ORDER_WITH_CSV',
         context={
             'contact_url': order.site.siteconfiguration.build_lms_url('/contact'),
             'course_name': course.name,
             'download_csv_link': order.site.siteconfiguration.build_ecommerce_url(
                 reverse('coupons:enrollment_code_csv', args=[order.number])
             ),
             'enrollment_code_title': product.title,
             'lms_url': order.site.siteconfiguration.build_lms_url(),
             'order_number': order.number,
             'partner_name': order.site.siteconfiguration.partner.name,
             'receipt_page_url': receipt_page_url,
         },
         site=order.site
     )
Exemplo n.º 7
0
def send_course_purchase_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            product = order.lines.first().product
            provider_id = getattr(product.attr, 'credit_provider', None)
            if not provider_id:
                stripped_title = product.title.replace("Seat in ", "", 1)
                stripped_title = stripped_title.replace(
                    "with professional certificate", "")
                stripped_title = stripped_title.replace(
                    "with verified certificate", "")
                send_notification(
                    order.user, 'CREDIT_RECEIPT', {
                        'course_title':
                        stripped_title,
                        'receipt_page_url':
                        get_lms_url('{}?orderNum={}'.format(
                            settings.RECEIPT_PAGE_PATH, order.number)),
                        'credit_hours':
                        str(order.total_excl_tax),
                        'credit_provider':
                        'Credit provider',
                    },
                    threadlocals.get_current_request().site)
                logger.error(
                    'Failed to send credit receipt notification. Credit seat product [%s] has no provider.',
                    product.id)
                return

            elif product.get_product_class().name == 'Seat':
                provider_data = get_provider_data(provider_id)
                if provider_data:
                    send_notification(
                        order.user, 'CREDIT_RECEIPT', {
                            'course_title':
                            product.title,
                            'receipt_page_url':
                            get_lms_url('{}?orderNum={}'.format(
                                settings.RECEIPT_PAGE_PATH, order.number)),
                            'credit_hours':
                            product.attr.credit_hours,
                            'credit_provider':
                            provider_data['display_name'],
                        },
                        threadlocals.get_current_request().site)

        else:
            logger.info(
                'Currently support receipt emails for order with one item.')
Exemplo n.º 8
0
    def send_transaction_declined_email(self, basket, transaction_status,
                                        course_title):
        """
            send email to the user after receiving a transcation notification with
            decilened/error status.

            Arguments:
                basket: transaction relevant basket.
                transaction_status: Error or Declined.
                course_title: course for which transaction was performed.
        """
        send_notification(
            basket.owner, 'TRANSACTION_REJECTED', {
                'course_title': course_title,
                'transaction_status': transaction_status,
            }, basket.site)
Exemplo n.º 9
0
def send_order_completion_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            product = order.lines.first().product
            if product.get_product_class().name == 'Seat':
                send_notification(
                    order.user, 'COURSE_PURCHASED', {
                        'course_title': product.title,
                        'full_name': order.user.get_full_name(),
                        'lms_dashboard': get_lms_url('dashboard'),
                        'lms_courses': get_lms_url('courses')
                    }, order.site)
        else:
            logger.info(
                'Currently support receipt emails for order with one item.')
Exemplo n.º 10
0
def send_confirm_purchase_email(sender, order=None, request=None, **kwargs):
    product = order.lines.first().product
    recipient = request.POST.get('req_bill_to_email', order.user.email) if request else order.user.email
    receipt_page_url = get_receipt_page_url(
        order_number=order.number,
        site_configuration=order.site.siteconfiguration
    )
    send_notification(
        order.user,
        'CREDIT_RECEIPT',
        {
            'course_title': "Test",
            'receipt_page_url': receipt_page_url,
            'credit_hours': 20,
            'credit_provider': "test",
        },
            order.site,
            recipient
    )
Exemplo n.º 11
0
def send_course_purchase_email(sender, order=None, request=None, **kwargs):  # pylint: disable=unused-argument
    """
    Send seat purchase notification email
    """
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        if len(order.lines.all()) != ORDER_LINE_COUNT:
            logger.info(
                'Currently support receipt emails for order with one item.')
            return

        product = order.lines.first().product
        if product.is_seat_product or product.is_course_entitlement_product:
            recipient = request.POST.get(
                'req_bill_to_email',
                order.user.email) if request else order.user.email
            receipt_page_url = get_receipt_page_url(
                order_number=order.number,
                site_configuration=order.site.siteconfiguration)
            credit_provider_id = getattr(product.attr, 'credit_provider', None)
            if credit_provider_id:
                provider_data = get_credit_provider_details(
                    credit_provider_id=credit_provider_id,
                    site_configuration=order.site.siteconfiguration)

                if provider_data:
                    send_notification(
                        order.user, 'CREDIT_RECEIPT', {
                            'course_title': product.title,
                            'receipt_page_url': receipt_page_url,
                            'credit_hours': product.attr.credit_hours,
                            'credit_provider': provider_data['display_name'],
                        }, order.site, recipient)
            elif getattr(product.attr, 'certificate_type', None) == 'credit':
                logger.error(
                    'Failed to send credit receipt notification. Credit seat product [%s] has no provider.',
                    product.id)
            elif order.basket.total_incl_tax != 0:
                send_notification(
                    order.user, 'COURSE_PURCHASED', {
                        'course_title': product.title,
                        'receipt_page_url': receipt_page_url,
                    }, order.site, recipient)
Exemplo n.º 12
0
def send_course_purchase_email(sender, order=None, **kwargs):  # pylint: disable=unused-argument
    """Send course purchase notification email when a course is purchased."""
    if waffle.switch_is_active('ENABLE_NOTIFICATIONS'):
        # We do not currently support email sending for orders with more than one item.
        if len(order.lines.all()) == ORDER_LINE_COUNT:
            product = order.lines.first().product
            credit_provider_id = getattr(product.attr, 'credit_provider', None)
            if not credit_provider_id:
                logger.error(
                    'Failed to send credit receipt notification. Credit seat product [%s] has no provider.', product.id
                )
                return
            elif product.get_product_class().name == 'Seat':
                provider_data = get_credit_provider_details(
                    access_token=order.site.siteconfiguration.access_token,
                    credit_provider_id=credit_provider_id,
                    site_configuration=order.site.siteconfiguration
                )

                receipt_page_url = get_receipt_page_url(
                    order_number=order.number,
                    site_configuration=order.site.siteconfiguration
                )

                if provider_data:
                    send_notification(
                        order.user,
                        'CREDIT_RECEIPT',
                        {
                            'course_title': product.title,
                            'receipt_page_url': receipt_page_url,
                            'credit_hours': product.attr.credit_hours,
                            'credit_provider': provider_data['display_name'],
                        },
                        order.site
                    )

        else:
            logger.info('Currently support receipt emails for order with one item.')