Exemple #1
0
 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()
Exemple #5
0
 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)
Exemple #7
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)
Exemple #10
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)
Exemple #11
0
    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)