def setUp(self): """ Fixtures. """ due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc) course = CourseFactory.create() week1 = ItemFactory.create(due=due, parent=course) week2 = ItemFactory.create(due=due, parent=course) homework = ItemFactory.create(parent=week1, due=due) user = UserFactory.create() StudentModule(state='{}', student_id=user.id, course_id=course.id, module_state_key=week1.location).save() StudentModule(state='{}', student_id=user.id, course_id=course.id, module_state_key=homework.location).save() self.course = course self.week1 = week1 self.homework = homework self.week2 = week2 self.user = user self.extended_due = functools.partial(get_extended_due, course, student=user)
def setUp(self): """ Fixtures. """ super(TestDataDumps, self).setUp() due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc) course = CourseFactory.create() week1 = ItemFactory.create(due=due, parent=course) week2 = ItemFactory.create(due=due, parent=course) week3 = ItemFactory.create(due=due, parent=course) homework = ItemFactory.create(parent=week1, due=due) user1 = UserFactory.create() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=week1.location).save() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=week2.location).save() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=week3.location).save() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=homework.location).save() user2 = UserFactory.create() StudentModule(state='{}', student_id=user2.id, course_id=course.id, module_state_key=week1.location).save() StudentModule(state='{}', student_id=user2.id, course_id=course.id, module_state_key=homework.location).save() user3 = UserFactory.create() StudentModule(state='{}', student_id=user3.id, course_id=course.id, module_state_key=week1.location).save() StudentModule(state='{}', student_id=user3.id, course_id=course.id, module_state_key=homework.location).save() self.course = course self.week1 = week1 self.homework = homework self.week2 = week2 self.user1 = user1 self.user2 = user2
def create_course_reference_data(course_key): """ Populates DB with test data """ user = UserFactory() group = GroupFactory() CourseGroupRelationship(course_id=course_key, group=group).save() StudentGradebook( user=user, course_id=course_key, grade=0.9, proforma_grade=0.91, progress_summary='test', grade_summary='test', grading_policy='test', ).save() StudentProgress(user=user, course_id=course_key, completions=1).save() CourseModuleCompletion(user=user, course_id=course_key, content_id='test', stage='test').save() CourseEnrollment(user=user, course_id=course_key).save() CourseAccessRole(user=user, course_id=course_key, org='test', role='TA').save() handouts_usage_key = course_key.make_usage_key('course_info', 'handouts') StudentModule(student=user, course_id=course_key, module_state_key=handouts_usage_key).save() CourseAggregatedMetaData(id=course_key, total_assessments=10, total_modules=20).save() structure_json = '{"test": true}' course_structure, created = CourseStructure.objects.get_or_create( course_id=course_key, defaults={'structure_json': structure_json} ) if not created: course_structure.structure_json = structure_json course_structure.save() CourseOverview.get_from_id(course_key)
def make_student(self, block, name, make_state=True, **state): """ Create a student along with submission state. """ answer = {} module = None for key in ('sha1', 'mimetype', 'filename', 'finalized'): if key in state: answer[key] = state.pop(key) score = state.pop('score', None) with transaction.atomic(): user = User(username=name, email='{}@example.com'.format(name)) user.save() profile = UserProfile(user=user, name=name) profile.save() if make_state: module = StudentModule( module_state_key=block.location, student=user, course_id=self.course_id, state=json.dumps(state)) module.save() anonymous_id = anonymous_id_for_user(user, self.course_id) item = StudentItem( student_id=anonymous_id, course_id=self.course_id, item_id=block.block_id, item_type='sga') item.save() if answer: student_id = block.get_student_item_dict(anonymous_id) submission = submissions_api.create_submission(student_id, answer) if score is not None: submissions_api.set_score( submission['uuid'], score, block.max_score()) else: submission = None self.addCleanup(item.delete) self.addCleanup(profile.delete) self.addCleanup(user.delete) if make_state: self.addCleanup(module.delete) return { 'module': module, 'item': item, 'submission': submission } return { 'item': item, 'submission': submission }
def generate_dummy_submission(student, block, course_key): """ Generates a random answers for a specified user and block The currently supported blocks are poll and survey """ location = block.location answer = {} if block.category == 'poll': # Possible answers come in this format: # ('G', {'img': None, 'img_alt': None, 'label': 'Green'}) # and we only need the 'G' bit for saving the answer possible_answers = [answer for answer, _ in block.answers] # Answer format for StudentModule model: # {"submissions_count": 1, "choice": "R"} choice = random.choice(possible_answers) answer = { "submissions_count": 1, "choice": choice, } elif block.category == 'survey': # Questions come in this format: # ('enjoy', {'img': None, 'img_alt': None, 'label': 'Are you enjoying the course?'}) # and we only need the 'enjoy' part questions = [question for question, _ in block.questions] # This happens similarly with answers possible_answers = [answer for answer, _ in block.answers] # Answer format for StudentModule model: # {"submissions_count": 1, "choices": {"enjoy": "Y", "learn": "Y", "recommend": "N"}} choices = { key: random.choice(possible_answers) for key in questions } answer = { "submissions_count": 1, "choices": choices, } return StudentModule( module_type='problem', module_state_key=location, student=student, course_id=course_key, state=json.dumps(answer), )
def make_student_module(self, block, name, **state): user = User(username=name) user.save() profile = UserProfile(user=user, name=name) profile.save() module = StudentModule( module_state_key=block.location, student=user, course_id=self.course_id, state=json.dumps(state)) module.save() self.addCleanup(profile.delete) self.addCleanup(module.delete) self.addCleanup(user.delete) return module
def make_student(self, block, name, **state): answer = {} for key in ('sha1', 'mimetype', 'filename'): if key in state: answer[key] = state.pop(key) score = state.pop('score', None) user = User(username=name) user.save() profile = UserProfile(user=user, name=name) profile.save() module = StudentModule( module_state_key=block.location, student=user, course_id=self.course_id, state=json.dumps(state)) module.save() anonymous_id = anonymous_id_for_user(user, self.course_id) item = StudentItem( student_id=anonymous_id, course_id=self.course_id, item_id=block.block_id, item_type='sga') item.save() if answer: student_id = block.student_submission_id(anonymous_id) submission = submissions_api.create_submission(student_id, answer) if score is not None: submissions_api.set_score( submission['uuid'], score, block.max_score()) else: submission = None self.addCleanup(item.delete) self.addCleanup(profile.delete) self.addCleanup(module.delete) self.addCleanup(user.delete) return { 'module': module, 'item': item, 'submission': submission, }
def setUp(self): """ Fixtures. """ due = datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc) course = CourseFactory.create() week1 = ItemFactory.create(due=due) week2 = ItemFactory.create(due=due) week3 = ItemFactory.create(due=due) course.children = [ week1.location.url(), week2.location.url(), week3.location.url() ] homework = ItemFactory.create(parent_location=week1.location, due=due) week1.children = [homework.location.url()] user1 = UserFactory.create() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=week1.location.url()).save() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=week2.location.url()).save() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=week3.location.url()).save() StudentModule(state='{}', student_id=user1.id, course_id=course.id, module_state_key=homework.location.url()).save() user2 = UserFactory.create() StudentModule(state='{}', student_id=user2.id, course_id=course.id, module_state_key=week1.location.url()).save() StudentModule(state='{}', student_id=user2.id, course_id=course.id, module_state_key=homework.location.url()).save() user3 = UserFactory.create() StudentModule(state='{}', student_id=user3.id, course_id=course.id, module_state_key=week1.location.url()).save() StudentModule(state='{}', student_id=user3.id, course_id=course.id, module_state_key=homework.location.url()).save() self.course = course self.week1 = week1 self.homework = homework self.week2 = week2 self.user1 = user1 self.user2 = user2