diff --git a/lms/djangoapps/mailing/management/commands/mailchimp_id.py b/lms/djangoapps/mailing/management/commands/mailchimp_id.py index 8b8f9fccea..dfc24f2a78 100644 --- a/lms/djangoapps/mailing/management/commands/mailchimp_id.py +++ b/lms/djangoapps/mailing/management/commands/mailchimp_id.py @@ -2,10 +2,11 @@ mailchimp_id: Returns whether or not a given mailchimp key represents a valid list. """ -import sys -from optparse import make_option +from __future__ import print_function -from django.core.management.base import BaseCommand, CommandError +import sys + +from django.core.management.base import BaseCommand from mailsnake import MailSnake @@ -14,30 +15,24 @@ class Command(BaseCommand): Given a mailchimp key, validates that a list with that key exists in mailchimp. """ - args = '' help = 'Get the list id from a web_id' - option_list = BaseCommand.option_list + ( - make_option('--key', action='store', help='mailchimp api key'), - make_option('--webid', action='store', dest='web_id', type=int, - help='mailchimp list web id'), - ) - - def parse_options(self, options): - """Parses `options` of the command.""" - if not options['key']: - raise CommandError('missing key') - - if not options['web_id']: - raise CommandError('missing list web id') - - return options['key'], options['web_id'] + def add_arguments(self, parser): + parser.add_argument('--key', + required=True, + help='mailchimp api key') + parser.add_argument('--webid', + dest='web_id', + type=int, + required=True, + help='mailchimp list web id') def handle(self, *args, **options): """ Validates that the id passed in exists in mailchimp. """ - key, web_id = self.parse_options(options) + key = options['key'] + web_id = options['web_id'] mailchimp = MailSnake(key) @@ -47,8 +42,8 @@ class Command(BaseCommand): list_with_id = by_web_id.get(web_id, None) if list_with_id: - print "id: {} for web_id: {}".format(list_with_id['id'], web_id) - print "list name: {}".format(list_with_id['name']) + print("id: {} for web_id: {}".format(list_with_id['id'], web_id)) + print("list name: {}".format(list_with_id['name'])) else: - print "list with web_id: {} not found.".format(web_id) + print("list with web_id: {} not found.".format(web_id)) sys.exit(1) diff --git a/lms/djangoapps/mailing/management/commands/mailchimp_sync_announcements.py b/lms/djangoapps/mailing/management/commands/mailchimp_sync_announcements.py index 188cc54b30..d68e22b610 100644 --- a/lms/djangoapps/mailing/management/commands/mailchimp_sync_announcements.py +++ b/lms/djangoapps/mailing/management/commands/mailchimp_sync_announcements.py @@ -2,10 +2,9 @@ Synchronizes the announcement list with all active students. """ import logging -from optparse import make_option from django.contrib.auth.models import User -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from .mailchimp_sync_course import connect_mailchimp, get_cleaned, get_subscribed, get_unsubscribed, subscribe_with_data @@ -16,27 +15,20 @@ class Command(BaseCommand): """ Synchronizes the announcement list with all active students. """ - args = '' help = 'Synchronizes the announcement list with all active students.' - option_list = BaseCommand.option_list + ( - make_option('--key', action='store', help='mailchimp api key'), - make_option('--list', action='store', dest='list_id', - help='mailchimp list id'), - ) - - def parse_options(self, options): - """Parses `options` of the command.""" - if not options['key']: - raise CommandError('missing key') - - if not options['list_id']: - raise CommandError('missing list id') - - return (options['key'], options['list_id']) + def add_arguments(self, parser): + parser.add_argument('--key', + required=True, + help='mailchimp api key') + parser.add_argument('--list', + dest='list_id', + required=True, + help='mailchimp list id') def handle(self, *args, **options): - key, list_id = self.parse_options(options) + key = options['key'] + list_id = options['list_id'] log.info('Syncronizing announcement mailing list') diff --git a/lms/djangoapps/mailing/management/commands/mailchimp_sync_course.py b/lms/djangoapps/mailing/management/commands/mailchimp_sync_course.py index 1abc9b4498..e7ee5070ce 100644 --- a/lms/djangoapps/mailing/management/commands/mailchimp_sync_course.py +++ b/lms/djangoapps/mailing/management/commands/mailchimp_sync_course.py @@ -7,12 +7,10 @@ import math import random from collections import namedtuple from itertools import chain -from optparse import make_option -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from mailsnake import MailSnake from opaque_keys.edx.keys import CourseKey - from student.models import UserProfile, unique_id_for_user BATCH_SIZE = 15000 @@ -29,38 +27,32 @@ class Command(BaseCommand): """ Synchronizes a mailchimp list with the students of a course. """ - args = '' help = 'Synchronizes a mailchimp list with the students of a course.' - option_list = BaseCommand.option_list + ( - make_option('--key', action='store', help='mailchimp api key'), - make_option('--list', action='store', dest='list_id', - help='mailchimp list id'), - make_option('--course', action='store', dest='course_id', - help='xmodule course_id'), - - make_option('--segments', action='store', dest='segments', - default=0, type=int, - help='number of static random segments to create'), - ) - - def parse_options(self, options): - """Parses `options` of the command.""" - if not options['key']: - raise CommandError('missing key') - - if not options['list_id']: - raise CommandError('missing list id') - - if not options['course_id']: - raise CommandError('missing course id') - - return (options['key'], options['list_id'], - options['course_id'], options['segments']) + def add_arguments(self, parser): + parser.add_argument('--key', + required=True, + help='mailchimp api key') + parser.add_argument('--list', + dest='list_id', + required=True, + help='mailchimp list id') + parser.add_argument('--course', + dest='course_id', + required=True, + help='edx course_id') + parser.add_argument('--segments', + dest='num_segments', + type=int, + default=0, + help='number of static random segments to create') def handle(self, *args, **options): """Synchronizes a mailchimp list with the students of a course.""" - key, list_id, course_id, nsegments = self.parse_options(options) + key = options['key'] + list_id = options['list_id'] + course_id = options['course_id'] + num_segments = options['num_segments'] log.info('Syncronizing email list for %s', course_id) @@ -87,7 +79,7 @@ class Command(BaseCommand): unsubscribe(mailchimp, list_id, non_enrolled_emails) subscribed = subscribed.union(set(d['EMAIL'] for d in to_subscribe)) - make_segments(mailchimp, list_id, nsegments, subscribed) + make_segments(mailchimp, list_id, num_segments, subscribed) def connect_mailchimp(api_key):