def get(self, thread_id): """Handles GET requests.""" messages = feedback_services.get_messages(thread_id) author_ids = [m.author_id for m in messages] authors_settings = user_services.get_users_settings(author_ids) message_ids = [m.message_id for m in messages] feedback_services.update_messages_read_by_the_user( self.user_id, thread_id, message_ids) message_summary_list = [] suggestion = suggestion_services.get_suggestion_by_id(thread_id) suggestion_thread = feedback_services.get_thread(thread_id) exploration_id = feedback_services.get_exp_id_from_thread_id(thread_id) if suggestion: exploration = exp_fetchers.get_exploration_by_id(exploration_id) current_content_html = ( exploration.states[suggestion.change.state_name].content.html) suggestion_summary = { 'suggestion_html': suggestion.change.new_value['html'], 'current_content_html': current_content_html, 'description': suggestion_thread.subject, 'author_username': authors_settings[0].username, 'author_picture_data_url': (authors_settings[0].profile_picture_data_url), 'created_on_msecs': utils.get_time_in_millisecs(messages[0].created_on) } message_summary_list.append(suggestion_summary) messages.pop(0) authors_settings.pop(0) for m, author_settings in python_utils.ZIP(messages, authors_settings): if author_settings is None: author_username = None author_picture_data_url = None else: author_username = author_settings.username author_picture_data_url = ( author_settings.profile_picture_data_url) message_summary = { 'message_id': m.message_id, 'text': m.text, 'updated_status': m.updated_status, 'author_username': author_username, 'author_picture_data_url': author_picture_data_url, 'created_on_msecs': utils.get_time_in_millisecs(m.created_on) } message_summary_list.append(message_summary) self.render_json({'message_summary_list': message_summary_list})
def get(self, thread_id): suggestion_id = thread_id suggestion = suggestion_services.get_suggestion_by_id(suggestion_id) messages = [m.to_dict() for m in feedback_services.get_messages( thread_id)] message_ids = [message['message_id'] for message in messages] feedback_services.update_messages_read_by_the_user( self.user_id, thread_id, message_ids) self.values.update({ 'messages': messages, 'suggestion': suggestion.to_dict() if suggestion else None }) self.render_json(self.values)
def get(self, exploration_id, thread_id): # pylint: disable=unused-argument suggestion = feedback_services.get_suggestion(exploration_id, thread_id) messages = [ m.to_dict() for m in feedback_services.get_messages(exploration_id, thread_id) ] message_ids = [message['message_id'] for message in messages] feedback_services.update_messages_read_by_the_user( self.user_id, exploration_id, thread_id, message_ids) self.values.update({ 'messages': messages, 'suggestion': suggestion.to_dict() if suggestion else None }) self.render_json(self.values)
def get(self, thread_id): if constants.USE_NEW_SUGGESTION_FRAMEWORK: suggestion = suggestion_services.get_suggestion_by_id(thread_id) else: suggestion = feedback_services.get_suggestion(thread_id) messages = [ m.to_dict() for m in feedback_services.get_messages(thread_id) ] message_ids = [message['message_id'] for message in messages] feedback_services.update_messages_read_by_the_user( self.user_id, thread_id, message_ids) self.values.update({ 'messages': messages, 'suggestion': suggestion.to_dict() if suggestion else None }) self.render_json(self.values)
def get(self, thread_id): if not constants.ENABLE_GENERALIZED_FEEDBACK_THREADS: suggestion_id = 'exploration.%s' % thread_id else: suggestion_id = thread_id suggestion = suggestion_services.get_suggestion_by_id(suggestion_id) messages = [ m.to_dict() for m in feedback_services.get_messages(thread_id) ] message_ids = [message['message_id'] for message in messages] feedback_services.update_messages_read_by_the_user( self.user_id, thread_id, message_ids) self.values.update({ 'messages': messages, 'suggestion': suggestion.to_dict() if suggestion else None }) self.render_json(self.values)
def get(self, thread_id): suggestion_id = thread_id suggestion = suggestion_services.get_suggestion_by_id(suggestion_id) message_dicts = [ message.to_dict() for message in feedback_services.get_messages(thread_id) ] message_ids = [message['message_id'] for message in message_dicts] if self.user_id: feedback_services.update_messages_read_by_the_user( self.user_id, thread_id, message_ids) self.values.update({ 'messages': replace_user_id_with_username_in_dict( message_dicts, [('author_id', 'author_username')]), 'suggestion': suggestion.to_dict() if suggestion else None }) self.render_json(self.values)
def test_update_messages_read_by_the_user(self): feedback_services.create_thread( 'exploration', self.EXP_ID_1, self.user_id, self.EXPECTED_THREAD_DICT['subject'], 'not used here') threads = feedback_services.get_all_threads( 'exploration', self.EXP_ID_1, False) thread_id = threads[0].id messages = feedback_services.get_messages(thread_id) message_ids = [message.message_id for message in messages] # The viewer has not read in messages yet. self.assertEqual(self._get_all_messages_read( self.viewer_id, thread_id), []) feedback_services.update_messages_read_by_the_user( self.viewer_id, thread_id, message_ids) # Check if the message is added to the read section of the viewer. self.assertEqual(self._get_all_messages_read( self.viewer_id, thread_id), message_ids)