Commit a4fc359c by Shirley He

refactor functions

parent 6aa0cbf0
...@@ -13,17 +13,17 @@ import pytz ...@@ -13,17 +13,17 @@ import pytz
import sys import sys
# course defaults # course defaults
course_number = None COURSE_NUMBER = None
course_organization = "RITX" COURSE_ORGANIZATION = "RITX"
course_run = "3T2017" COURSE_RUN = "3T2017"
course_user = "edx@example.com" COURSE_USER = "edx@example.com"
course_partner = "edx" COURSE_PARTNER = "edx"
# date configurations # date configurations
future_date = "future" FUTURE_DATE = "future"
past_date = "past" PAST_DATE = "past"
test_courses_file = "test_courses.json" TEST_COURSES_FILE = "test_courses.json"
def arg_parse(): def arg_parse():
...@@ -35,7 +35,7 @@ def arg_parse(): ...@@ -35,7 +35,7 @@ def arg_parse():
return parser.parse_args() return parser.parse_args()
def process_field_arguments(parser_args, seed_data_file, field_args): def process_field_arguments(parser_args):
try: try:
file = open(parser_args.seed_data_file) file = open(parser_args.seed_data_file)
file_data = json.load(file) file_data = json.load(file)
...@@ -43,31 +43,32 @@ def process_field_arguments(parser_args, seed_data_file, field_args): ...@@ -43,31 +43,32 @@ def process_field_arguments(parser_args, seed_data_file, field_args):
permutation_data = file_data["permutation_data"] permutation_data = file_data["permutation_data"]
default_data_keys = permutation_data.keys() default_data_keys = permutation_data.keys()
except IOError: except IOError:
print sys.exc_value print("Please fix your input file - {}".format(sys.exc_value))
sys.exit() sys.exit()
except KeyError: except KeyError:
print("Could not find key {}".format(sys.exc_value)) print("Could not find key {}".format(sys.exc_value))
sys.exit() sys.exit()
field_args = {} field_args = {}
parsed_field_args = parser_args.fields
# if no field arguments are given, just return default data # if no field arguments are given, just return default data
if not parser_args.fields: if not parsed_field_args:
field_args = file_data["default_data"] field_args = file_data["default_data"]
else: else:
num_field_args = len(parser_args.fields[0]) num_field_args = len(parsed_field_args[0])
if (num_field_args > 3): if (num_field_args > 3):
raise argparse.ArgumentTypeError("Only a max of 3 fields allowed") raise argparse.ArgumentTypeError("Only a max of 3 fields allowed")
# add each command line field to fields dict # add each command line field to fields dict
for permutation_choices in parser_args.fields: for field in parsed_field_args[0]:
for i in range(0, num_field_args): try:
try: field_args[field] = permutation_data[field]
field_args[permutation_choices[i]] = permutation_data[permutation_choices[i]] except KeyError:
except KeyError: print "{} is not a field option".format(sys.exc_value)
print "{} is not a field option".format(sys.exc_value) sys.exit()
# the difference btwn all possible fields and the chosen permutation ones # calculate the difference between all possible fields and the chosen permutation ones
default_fields = list(set(default_data_keys) - set(parser_args.fields[0])) default_fields = list(set(default_data_keys) - set(parsed_field_args[0]))
# add non permutation fields to dict # add non permutation fields to dict
for field in default_fields: for field in default_fields:
...@@ -82,8 +83,19 @@ def generate_permutations(field_args, index, results, courses_dict, field_values ...@@ -82,8 +83,19 @@ def generate_permutations(field_args, index, results, courses_dict, field_values
permutations_values = field_args[permutation_option] permutations_values = field_args[permutation_option]
for permutation_value in permutations_values: for permutation_value in permutations_values:
# add other required default fields to dict # add other required course and enrollment default fields to dict
enrollment_dict = set_course_defaults(courses_dict) # will be generated automatically by course creation script
courses_dict["number"] = COURSE_NUMBER
courses_dict["organization"] = COURSE_ORGANIZATION
courses_dict["run"] = COURSE_RUN
courses_dict["user"] = COURSE_USER
courses_dict["partner"] = COURSE_PARTNER
# configure enrollment seat settings
enrollment_dict = {}
enrollment_dict["credit"] = False
enrollment_dict["credit_provider"] = "test-credit-provider"
# add permutation fields to dict # add permutation fields to dict
field_values_dict[permutation_option] = permutation_value field_values_dict[permutation_option] = permutation_value
# generate start and end dates # generate start and end dates
...@@ -106,29 +118,20 @@ def generate_permutations(field_args, index, results, courses_dict, field_values ...@@ -106,29 +118,20 @@ def generate_permutations(field_args, index, results, courses_dict, field_values
wrapper_courses_dict = {} # needed to match course input file creation wrapper_courses_dict = {} # needed to match course input file creation
wrapper_courses_dict["courses"] = results wrapper_courses_dict["courses"] = results
with open(test_courses_file, "w") as outfile: create_courses_json_file(wrapper_courses_dict)
json.dump(wrapper_courses_dict, outfile)
def set_course_defaults(courses_dict): def create_courses_json_file(wrapper_courses_dict):
courses_dict["number"] = course_number # will be generated automatically by course creation script with open(TEST_COURSES_FILE, "w") as outfile:
courses_dict["organization"] = course_organization json.dump(wrapper_courses_dict, outfile)
courses_dict["run"] = course_run
courses_dict["user"] = course_user
courses_dict["partner"] = course_partner
# configure enrollment seat settings
enrollment_dict = {}
enrollment_dict["credit"] = False
enrollment_dict["credit_provider"] = "test-credit-provider"
return enrollment_dict
def generate_date_translation(field_values_dict, permutation_option, permutation_value): def generate_date_translation(field_values_dict, permutation_option, permutation_value):
now = datetime.datetime.now(pytz.UTC) now = datetime.datetime.now(pytz.UTC)
if permutation_value == future_date: if permutation_value == FUTURE_DATE:
future = str(now + datetime.timedelta(days=365)) future = str(now + datetime.timedelta(days=365))
field_values_dict[permutation_option] = future field_values_dict[permutation_option] = future
if permutation_value == past_date: if permutation_value == PAST_DATE:
past = str(now - datetime.timedelta(days=60)) past = str(now - datetime.timedelta(days=60))
field_values_dict[permutation_option] = past field_values_dict[permutation_option] = past
if permutation_value == None: if permutation_value == None:
...@@ -141,5 +144,5 @@ def start_field_recursion(process_field_args): ...@@ -141,5 +144,5 @@ def start_field_recursion(process_field_args):
if __name__ == "__main__": if __name__ == "__main__":
args = arg_parse() args = arg_parse()
process_field_args = process_field_arguments(args, args.seed_data_file, args.fields) process_field_args = process_field_arguments(args)
start_field_recursion(process_field_args) start_field_recursion(process_field_args)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment