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 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 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) 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 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, }