Esempio n. 1
0
"""
Send the enterprise code assignment nudge emails.
"""
import logging
from datetime import datetime

from django.core.management import BaseCommand
from django.utils import timezone
from ecommerce_worker.sailthru.v1.tasks import send_code_assignment_nudge_email

from ecommerce.programs.custom import get_model

CodeAssignmentNudgeEmails = get_model('offer', 'CodeAssignmentNudgeEmails')
CodeAssignmentNudgeEmailTemplates = get_model('offer', 'CodeAssignmentNudgeEmailTemplates')
OfferAssignment = get_model('offer', 'OfferAssignment')

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


class Command(BaseCommand):
    """
    Send the code assignment nudge emails.
    """

    @staticmethod
    def _get_nudge_emails():
        """
        Return the CodeAssignmentNudgeEmails objects which are scheduled to be sent today.
        """
        # TODO: Removing this filter for testing purpose "email_date__date=datetime.now().date()"
Esempio n. 2
0
from __future__ import unicode_literals

import logging
from time import sleep

from django.contrib.sites.models import Site
from django.core.management import BaseCommand

from ecommerce.enterprise.benefits import BENEFIT_MAP
from ecommerce.enterprise.conditions import EnterpriseCustomerCondition
from ecommerce.enterprise.utils import get_enterprise_customer
from ecommerce.extensions.offer.models import OFFER_PRIORITY_VOUCHER
from ecommerce.extensions.voucher.models import Voucher
from ecommerce.programs.custom import class_path, get_model

Condition = get_model('offer', 'Condition')
Benefit = get_model('offer', 'Benefit')
ConditionalOffer = get_model('offer', 'ConditionalOffer')

logger = logging.getLogger(__name__)


class Command(BaseCommand):
    """
    Migrates conditional offers for enterprise coupons to enterprise conditional offer implementation.
    """

    site = None
    enterprise_customer_map = {}
    help = ('This command migrates the conditional offers for enterprise coupons '
            'to the enterprise conditional offer implementation.')
# encoding: utf-8
"""
Contains the tests for updating effective_contract_discount_percentage and discounted_price for order lines created by
Manual Order Offers via the Enrollment API
"""
from django.core.management import call_command
from oscar.test.factories import ConditionalOfferFactory, OrderDiscountFactory, OrderFactory, OrderLineFactory

from ecommerce.extensions.test.factories import ManualEnrollmentOrderDiscountConditionFactory
from ecommerce.programs.custom import get_model
from ecommerce.tests.testcases import TestCase

Condition = get_model('offer', 'Condition')
ConditionalOffer = get_model('offer', 'ConditionalOffer')
OrderDiscount = get_model('order', 'OrderDiscount')
OrderLine = get_model('order', 'Line')


class UpdateEffectiveContractDiscountTests(TestCase):
    """
    Tests the enrollment code creation command.
    """

    def setUp(self):
        """
        Create test data.
        """
        super(UpdateEffectiveContractDiscountTests, self).setUp()

        # Set up orders with a enterprise_customer
        self.enterprise_customer_uuid = '123e4567-e89b-12d3-a456-426655440000'
Esempio n. 4
0
"""
from __future__ import absolute_import, unicode_literals

import csv
import logging
from collections import Counter, defaultdict
from time import sleep
from uuid import UUID

from django.core.management import BaseCommand

from ecommerce.core.constants import COUPON_PRODUCT_CLASS_NAME
from ecommerce.extensions.offer.models import OFFER_PRIORITY_ENTERPRISE, OFFER_PRIORITY_MANUAL_ORDER
from ecommerce.programs.custom import get_model

ConditionalOffer = get_model('offer', 'ConditionalOffer')
Product = get_model('catalogue', 'Product')

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


class Command(BaseCommand):
    """
    Backfill opportunity ids for Enterprise Coupons, Enterprise Offers and Manual Order Offers.
    """

    def add_arguments(self, parser):
        parser.add_argument(
            '--data-csv',
            action='store',
# encoding: utf-8
"""Contains the tests for migrate enterprise conditional offers command."""
import logging

from django.core.management import call_command
from mock import patch
from oscar.test.factories import (BenefitFactory, ConditionalOfferFactory,
                                  ConditionFactory, RangeFactory,
                                  VoucherFactory)

from ecommerce.enterprise.management.commands.migrate_enterprise_conditional_offers import Command
from ecommerce.programs.custom import get_model
from ecommerce.tests.testcases import TestCase

Benefit = get_model('offer', 'Benefit')
Condition = get_model('offer', 'Condition')
ConditionalOffer = get_model('offer', 'ConditionalOffer')
Range = get_model('offer', 'Range')
Voucher = get_model('voucher', 'Voucher')

logger = logging.getLogger(__name__)
LOGGER_NAME = 'ecommerce.enterprise.management.commands.migrate_enterprise_conditional_offers'


class MigrateEnterpriseConditionalOffersTests(TestCase):
    """
    Tests the enrollment code creation command.
    """
    def setUp(self):
        """
        Create test data.
import logging

import mock
import pytz
from dateutil.relativedelta import relativedelta
from django.core.management import call_command
from django.utils import timezone
from testfixtures import LogCapture

from ecommerce.extensions.test.factories import (
    CodeAssignmentNudgeEmailsFactory, EnterpriseOfferFactory,
    OfferAssignmentFactory, VoucherFactory)
from ecommerce.programs.custom import get_model
from ecommerce.tests.testcases import TestCase

CodeAssignmentNudgeEmails = get_model('offer', 'CodeAssignmentNudgeEmails')
OfferAssignment = get_model('offer', 'OfferAssignment')
OfferAssignmentEmailSentRecord = get_model('offer',
                                           'OfferAssignmentEmailSentRecord')

LOGGER_NAME = 'ecommerce.enterprise.management.commands.send_code_assignment_nudge_emails'
MODEL_LOGGER_NAME = 'ecommerce.extensions.offer.models'


class SendCodeAssignmentNudgeEmailsTests(TestCase):
    """
    Tests the sending code assignment nudge emails command.
    """
    def setUp(self):
        """
        Setup the test data
# encoding: utf-8
"""
Contains the tests for sending the enterprise offer limit emails command.
"""
import datetime
import logging

import mock
from django.core.management import call_command
from testfixtures import LogCapture

from ecommerce.extensions.test.factories import EnterpriseOfferFactory
from ecommerce.programs.custom import get_model
from ecommerce.tests.testcases import TestCase

ConditionalOffer = get_model('offer', 'ConditionalOffer')
OfferUsageEmail = get_model('offer', 'OfferUsageEmail')

LOGGER_NAME = 'ecommerce.enterprise.management.commands.send_enterprise_offer_limit_emails'


class SendEnterpriseOfferLimitEmailsTests(TestCase):
    """
    Tests the sending the enterprise offer limit emails command.
    """
    def setUp(self):
        """
        Create test data.
        """
        super(SendEnterpriseOfferLimitEmailsTests, self).setUp()
from django.contrib.sites.models import Site
from django.core.management import BaseCommand
from django.utils import timezone
from ecommerce_worker.email.v1.api import send_code_assignment_nudge_email

from ecommerce.core.models import User
from ecommerce.enterprise.utils import (
    get_enterprise_customer_reply_to_email,
    get_enterprise_customer_sender_alias,
    get_enterprise_customer_uuid
)
from ecommerce.extensions.offer.constants import AUTOMATIC_EMAIL
from ecommerce.extensions.voucher.utils import get_cached_voucher
from ecommerce.programs.custom import get_model

CodeAssignmentNudgeEmails = get_model('offer', 'CodeAssignmentNudgeEmails')
CodeAssignmentNudgeEmailTemplates = get_model('offer', 'CodeAssignmentNudgeEmailTemplates')
OfferAssignment = get_model('offer', 'OfferAssignment')
OfferAssignmentEmailSentRecord = get_model('offer', 'OfferAssignmentEmailSentRecord')
Voucher = get_model('voucher', 'Voucher')

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


class Command(BaseCommand):
    """
    Send the code assignment nudge emails.
    """

    @staticmethod
Esempio n. 9
0
# encoding: utf-8
"""
Contains the tests for updating offer assignment email bounce status command.
"""

import mock
from django.core.management import call_command

from ecommerce.extensions.offer.constants import OFFER_ASSIGNED, OFFER_ASSIGNMENT_EMAIL_BOUNCED
from ecommerce.extensions.test.factories import OfferAssignmentFactory
from ecommerce.programs.custom import get_model
from ecommerce.tests.testcases import TestCase

OfferAssignment = get_model('offer', 'OfferAssignment')


class UpdateOfferAssignmentEmailBounceStatusTests(TestCase):
    """
    Tests the update offer assignment email bounce status command.
    """
    def setUp(self):
        """
        Setup the test data
        """
        super(UpdateOfferAssignmentEmailBounceStatusTests, self).setUp()
        for x in range(3):
            assignment = OfferAssignmentFactory(
                code='test-code{}'.format(x),
                user_email='test{}@example.com'.format(x))
            assignment.status = OFFER_ASSIGNED
            assignment.save()
Esempio n. 10
0
"""
Update offer Assignment Email Bounce Status.
"""
import logging
from datetime import datetime, timedelta

from django.core.management import BaseCommand
from ecommerce_worker.braze.v1.client import get_braze_client

from ecommerce.extensions.offer.constants import OFFER_ASSIGNED, OFFER_ASSIGNMENT_EMAIL_BOUNCED
from ecommerce.programs.custom import get_model

OfferAssignment = get_model('offer', 'OfferAssignment')
OfferAssignmentEmailSentRecord = get_model('offer',
                                           'OfferAssignmentEmailSentRecord')

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


class Command(BaseCommand):
    """
    Update bounce status for offer assignments.
    """
    help = ('This command runs periodically every day and updates '
            'offer assignment emails with their hard bounce status.')

    def add_arguments(self, parser):
        parser.add_argument(
            '--site-code',
            action='store',
Esempio n. 11
0
"""
Send the enterprise offer limits emails.
"""
import logging
from datetime import datetime

from django.core.management import BaseCommand
from django.db.models import Sum
from ecommerce_worker.email.v1.api import send_offer_usage_email

from ecommerce.extensions.fulfillment.status import ORDER
from ecommerce.programs.custom import get_model

ConditionalOffer = get_model('offer', 'ConditionalOffer')
OfferUsageEmail = get_model('offer', 'OfferUsageEmail')
OrderDiscount = get_model('order', 'OrderDiscount')

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# pylint: disable=line-too-long
EMAIL_BODY = """
You have used {percentage_usage}% of the {offer_type} Limit associated with the entitlement offer called "{offer_name}"
{offer_type}s Redeemed: {current_usage}
{offer_type}s Limit: {total_limit}
Please reach out to [email protected], or to your Account Manager or Customer Success representative, if you have any questions.
"""
EMAIL_SUBJECT = 'Offer Usage Notification'


class Command(BaseCommand):
"""
Update opportunity id for specific enterprise manual enrollment order offers.
"""

import csv
import logging
from uuid import UUID

from django.core.management import BaseCommand

from ecommerce.extensions.offer.models import OFFER_PRIORITY_MANUAL_ORDER
from ecommerce.programs.custom import get_model

ConditionalOffer = get_model('offer', 'ConditionalOffer')

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


class Command(BaseCommand):
    """
    Update opportunity id for specific enterprise manual enrollment order offers.

    Read enterprise uuid and its opportunity for a CSV and update the data accordingly.

    Management command can be executed like below
    >>> ./manage.py update_enterprise_offer_opportunity_id --data-csv data.csv
    """
    def add_arguments(self, parser):
        parser.add_argument(
            '--data-csv',