def put(self, entity_type, entity_id): """"Handles the PUT requests. Stores the answer details submitted by the learner. """ if not constants.ENABLE_SOLICIT_ANSWER_DETAILS_FEATURE: raise self.PageNotFoundException interaction_id = self.payload.get('interaction_id') if entity_type == feconf.ENTITY_TYPE_EXPLORATION: state_name = self.payload.get('state_name') state_reference = ( stats_services.get_state_reference_for_exploration( entity_id, state_name)) if interaction_id != exp_services.get_interaction_id_for_state( entity_id, state_name): raise utils.InvalidInputException( 'Interaction id given does not match with the ' 'interaction id of the state') elif entity_type == feconf.ENTITY_TYPE_QUESTION: state_reference = ( stats_services.get_state_reference_for_question(entity_id)) if interaction_id != ( question_services.get_interaction_id_for_question( entity_id)): raise utils.InvalidInputException( 'Interaction id given does not match with the ' 'interaction id of the question') answer = self.payload.get('answer') answer_details = self.payload.get('answer_details') stats_services.record_learner_answer_info( entity_type, state_reference, interaction_id, answer, answer_details) self.render_json({})
def test_get_interaction_id_for_question(self): self.assertEqual( question_services.get_interaction_id_for_question( self.question_id), 'TextInput') with self.assertRaisesRegexp(Exception, 'No questions exists with'): question_services.get_interaction_id_for_question('fake_q_id')