def get(self): """Respond to the REST GET verb with the contents of the group.""" key = self.request.get('key') if not CourseOutlineRights.can_view(self): transforms.send_json_response( self, 401, 'Access denied.', {'key': key}) return if key: question_group = QuestionGroupDAO.load(key) version = question_group.dict.get('version') if self.SCHEMA_VERSION != version: transforms.send_json_response( self, 403, 'Cannot edit a Version %s group.' % version, {'key': key}) return payload_dict = question_group.dict else: payload_dict = { 'version': self.SCHEMA_VERSION, 'items': [{'weight': ''}, {'weight': ''}, {'weight': ''}]} transforms.send_json_response( self, 200, 'Success', payload_dict=payload_dict, xsrf_token=XsrfTokenManager.create_xsrf_token(self.XSRF_TOKEN))
def post_add_to_question_group(self): try: question_id = long(self.request.get('question_id')) question_dto = QuestionDAO.load(question_id) if question_dto is None: raise ValueError() except ValueError: transforms.send_json_response( self, 500, 'Invalid question id.', {'question-id': self.request.get('question_id')} ) return try: group_id = long(self.request.get('group_id')) group_dto = QuestionGroupDAO.load(group_id) if group_dto is None: raise ValueError() except ValueError: transforms.send_json_response( self, 500, 'Invalid question group id.', {'group-id': self.request.get('group_id')} ) return weight = self.request.get('weight') try: float(weight) except ValueError: transforms.send_json_response( self, 500, 'Invalid weight. Must be a numeric value.', { 'weight': weight}) return group_dto.add_question(question_id, weight) QuestionGroupDAO.save(group_dto) transforms.send_json_response( self, 200, '%s added to %s.' % ( question_dto.description, group_dto.description ), { 'group-id': group_dto.id, 'question-id': question_dto.id } ) return
def _get_questions_by_question_id(cls, questions_by_usage_id): ret = {} ret['single'] = {} ret['grouped'] = {} for question in questions_by_usage_id.values(): question_single = QuestionDAO.load(question['id']) if question_single: ret['single'][question['id']] = question_single else: question_group = QuestionGroupDAO.load(question['id']) if question_group: ret['grouped'][question['id']] = {} for item in question_group.items: ret['grouped'][question['id']][item['question']] = QuestionDAO.load(item['question']) return ret
def post_add_to_question_group(self): try: question_id = long(self.request.get('question_id')) question_dto = QuestionDAO.load(question_id) if question_dto is None: raise ValueError() except ValueError: transforms.send_json_response( self, 500, 'Invalid question id.', {'question-id': self.request.get('question_id')}) return try: group_id = long(self.request.get('group_id')) group_dto = QuestionGroupDAO.load(group_id) if group_dto is None: raise ValueError() except ValueError: transforms.send_json_response( self, 500, 'Invalid question group id.', {'group-id': self.request.get('group_id')}) return weight = self.request.get('weight') try: float(weight) except ValueError: transforms.send_json_response( self, 500, 'Invalid weight. Must be a numeric value.', {'weight': weight}) return group_dto.add_question(question_id, weight) QuestionGroupDAO.save(group_dto) transforms.send_json_response( self, 200, '%s added to %s.' % (question_dto.description, group_dto.description), { 'group-id': group_dto.id, 'question-id': question_dto.id }) return
def delete(self): """Delete the question_group in response to REST request.""" key = self.request.get('key') if not self.assert_xsrf_token_or_fail( self.request, self.XSRF_TOKEN, {'key': key}): return if not CourseOutlineRights.can_delete(self): transforms.send_json_response( self, 401, 'Access denied.', {'key': key}) return question_group = QuestionGroupDAO.load(key) if not question_group: transforms.send_json_response( self, 404, 'Question Group not found.', {'key': key}) return QuestionGroupDAO.delete(question_group) transforms.send_json_response(self, 200, 'Deleted.')
def _get_questions_by_question_id(cls, questions_by_usage_id): ''' Retrieves every question in the course returning them in a dict: { id:questionDAO, ... } @param questions_by_usage_id.values() is a dict: {unit, lesson, sequence, weight, quid} ''' ret = {} ret['single'] = {} ret['grouped'] = {} for question in questions_by_usage_id.values(): question_single = QuestionDAO.load(question['id']) if question_single: ret['single'][question['id']] = question_single else: question_group = QuestionGroupDAO.load(question['id']) if question_group: ret['grouped'][question['id']] = {} for item in question_group.items: ret['grouped'][question['id']][item['question']] = QuestionDAO.load(item['question']) return ret
def _get_questions_by_question_id(cls, questions_by_usage_id): ''' Retrieves every question in the course returning them in a dict: { id:questionDAO, ... } @param questions_by_usage_id.values() is a dict: {unit, lesson, sequence, weight, quid} ''' ret = {} ret['single'] = {} ret['grouped'] = {} for question in questions_by_usage_id.values(): question_single = QuestionDAO.load(question['id']) if question_single: ret['single'][question['id']] = question_single else: question_group = QuestionGroupDAO.load(question['id']) if question_group: ret['grouped'][question['id']] = {} for item in question_group.items: ret['grouped'][question['id']][ item['question']] = QuestionDAO.load( item['question']) return ret