""" 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()"
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'
""" 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
# 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()
""" 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',
""" 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',