diff --git a/lms/djangoapps/instructor/management/commands/openended_post.py b/lms/djangoapps/instructor/management/commands/openended_post.py index b1f22c7bc2d6..12bd4fda55b6 100644 --- a/lms/djangoapps/instructor/management/commands/openended_post.py +++ b/lms/djangoapps/instructor/management/commands/openended_post.py @@ -19,7 +19,7 @@ class Command(BaseCommand): Command to manually re-post open ended submissions to the grader. """ - help = ("Usage: openended_post --dry-run --task-number=\n" + help = ("Usage: openended_post --dry-run --task-number=\n" "The text file should contain a User.id in each line.") option_list = BaseCommand.option_list + ( @@ -36,10 +36,11 @@ def handle(self, *args, **options): dry_run = options['dry_run'] task_number = options['task_number'] - if len(args) == 3: + if len(args) == 4: course_id = args[0] location = args[1] students_ids = [line.strip() for line in open(args[2])] + hostname = args[3] else: print self.help return @@ -62,15 +63,20 @@ def handle(self, *args, **options): print "Number of students: {0}".format(students.count()) for student in students: - post_submission_for_student(student, course, location, task_number, dry_run=dry_run) + post_submission_for_student(student, course, location, task_number, dry_run=dry_run, hostname=hostname) -def post_submission_for_student(student, course, location, task_number, dry_run=True): +def post_submission_for_student(student, course, location, task_number, dry_run=True, hostname=None): """If the student's task child_state is ASSESSING post submission to grader.""" print "{0}:{1}".format(student.id, student.username) + + request = DummyRequest() + request.user = student + request.host = hostname + try: - module = get_module_for_student(student, course, location) + module = get_module_for_student(student, course, location, request=request) if module is None: print " WARNING: No state found." return False @@ -104,3 +110,22 @@ def post_submission_for_student(student, course, location, task_number, dry_run= print err return False + +class DummyRequest(object): + """Dummy request""" + + META = {} + + def __init__(self): + self.session = {} + self.user = None + self.host = None + self.secure = True + + def get_host(self): + """Return a default host.""" + return self.host + + def is_secure(self): + """Always secure.""" + return self.secure diff --git a/lms/djangoapps/instructor/utils.py b/lms/djangoapps/instructor/utils.py index 72eea1895132..4445f9e34d1e 100644 --- a/lms/djangoapps/instructor/utils.py +++ b/lms/djangoapps/instructor/utils.py @@ -27,10 +27,11 @@ def is_secure(self): return False -def get_module_for_student(student, course, location): +def get_module_for_student(student, course, location, request=None): """Return the module for the (student, location) using a DummyRequest.""" - request = DummyRequest() - request.user = student + if request is None: + request = DummyRequest() + request.user = student descriptor = modulestore().get_instance(course.id, location, depth=0) field_data_cache = FieldDataCache([descriptor], course.id, student)