def test_post_fails_when_story_is_not_published_in_story_mode(self): topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) csrf_token = self.get_new_csrf_token() with self.swap(constants, 'ENABLE_NEW_STRUCTURE_VIEWER_UPDATES', True): self.post_json('%s/%s/%s' % (feconf.STORY_PROGRESS_URL_PREFIX, self.STORY_ID, self.NODE_ID_2), {}, csrf_token=csrf_token, expected_status_int=404)
def test_unpublish_story_rejects_translation_suggestions(self): self.add_exploration_0_to_story() self.create_translation_suggestion_for_exploration_0_and_verify() topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) suggestion = suggestion_services.get_suggestion_by_id(self.THREAD_ID) self.assertEqual(suggestion.status, suggestion_models.STATUS_REJECTED)
def test_accessibility_of_unpublished_story_viewer_page(self): topic_services.unpublish_story( self.TOPIC_ID, self.STORY_ID, self.admin_id) self.get_html_response( '/learn/staging/topic/story/%s' % self.STORY_URL_FRAGMENT, expected_status_int=404) self.login(self.ADMIN_EMAIL) self.get_html_response( '/learn/staging/topic/story/%s' % self.STORY_URL_FRAGMENT) self.logout()
def test_accessibility_of_unpublished_story_viewer_page(self): topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) with self.swap(constants, 'ENABLE_NEW_STRUCTURE_PLAYERS', True): self.get_html_response('/learn/staging/topic/story/%s' % self.STORY_URL_FRAGMENT, expected_status_int=404) self.login(self.ADMIN_EMAIL) self.get_html_response('/learn/staging/topic/story/%s' % self.STORY_URL_FRAGMENT) self.logout()
def test_accessibility_of_unpublished_story_viewer_page(self): topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) with self.swap(constants, 'ENABLE_NEW_STRUCTURE_PLAYERS', True): self.get_html_response( '%s/%s' % (feconf.STORY_VIEWER_URL_PREFIX, self.STORY_ID), expected_status_int=404) self.login(self.ADMIN_EMAIL) self.get_html_response( '%s/%s' % (feconf.STORY_VIEWER_URL_PREFIX, self.STORY_ID)) self.logout()
def test_unpublish_story_deletes_exploration_opportunity(self): self.add_exploration_0_to_story() translation_opportunities, _, _ = ( opportunity_services.get_translation_opportunities('hi', None)) self.assertEqual(len(translation_opportunities), 1) topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) translation_opportunities, _, _ = ( opportunity_services.get_translation_opportunities('hi', None)) self.assertEqual(len(translation_opportunities), 0)
def put(self, story_id): """Published/unpublished given story.""" story = story_fetchers.get_story_by_id(story_id, strict=False) topic_id = story.corresponding_topic_id new_story_status_is_public = self.normalized_payload.get( 'new_story_status_is_public') if new_story_status_is_public: topic_services.publish_story(topic_id, story_id, self.user_id) else: topic_services.unpublish_story(topic_id, story_id, self.user_id) self.render_json(self.values)
def test_publish_story_creates_exploration_opportunity(self): self.add_exploration_0_to_story() # Story is already published, so unpublish first. topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) translation_opportunities, _, _ = ( opportunity_services.get_translation_opportunities('hi', None)) self.assertEqual(len(translation_opportunities), 0) topic_services.publish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) translation_opportunities, _, _ = ( opportunity_services.get_translation_opportunities('hi', None)) self.assertEqual(len(translation_opportunities), 1)
def test_publish_topic_does_not_create_exploration_opportunity_if_story_is_not_published( # pylint: disable=line-too-long self): self.add_exploration_0_to_story() # Story and topic are already published, so unpublish first. topic_services.unpublish_story(self.TOPIC_ID, self.STORY_ID, self.admin_id) topic_services.unpublish_topic(self.TOPIC_ID, self.admin_id) translation_opportunities, _, _ = ( opportunity_services.get_translation_opportunities('hi', None)) self.assertEqual(len(translation_opportunities), 0) topic_services.publish_topic(self.TOPIC_ID, self.admin_id) translation_opportunities, _, _ = ( opportunity_services.get_translation_opportunities('hi', None)) self.assertEqual(len(translation_opportunities), 0)
def put(self, story_id): """Published/unpublished given story.""" story = story_fetchers.get_story_by_id(story_id, strict=False) topic_id = story.corresponding_topic_id new_story_status_is_public = self.payload.get( 'new_story_status_is_public') if not isinstance(new_story_status_is_public, bool): raise self.InvalidInputException if new_story_status_is_public: topic_services.publish_story(topic_id, story_id, self.user_id) else: topic_services.unpublish_story(topic_id, story_id, self.user_id) self.render_json(self.values)
def put(self, topic_id, story_id): """Published/unpublished given story.""" story_domain.Story.require_valid_story_id(story_id) topic_domain.Topic.require_valid_topic_id(topic_id) story = story_fetchers.get_story_by_id(story_id, strict=False) if story is None: raise self.PageNotFoundException topic = topic_services.get_topic_by_id(topic_id, strict=False) canonical_story_ids = topic.get_canonical_story_ids() if topic is None or story_id not in canonical_story_ids: raise self.PageNotFoundException new_story_status_is_public = self.payload.get( 'new_story_status_is_public') if not isinstance(new_story_status_is_public, bool): raise self.InvalidInputException if new_story_status_is_public: topic_services.publish_story(topic_id, story_id, self.user_id) else: topic_services.unpublish_story(topic_id, story_id, self.user_id) self.render_json(self.values)