def post(self): """Handles POST requests.""" title = self.payload.get('title', feconf.DEFAULT_EXPLORATION_TITLE) new_exploration_id = exp_services.get_new_exploration_id() exploration = exp_domain.Exploration.create_default_exploration( new_exploration_id, title=title) exp_services.save_new_exploration(self.user_id, exploration) self.render_json({EXPLORATION_ID_KEY: new_exploration_id})
def post(self): """Handles POST requests.""" yaml_content = self.request.get('yaml_file') new_exploration_id = exp_services.get_new_exploration_id() if feconf.ALLOW_YAML_FILE_UPLOAD: exp_services.save_new_exploration_from_yaml_and_assets( self.user_id, yaml_content, new_exploration_id, []) self.render_json({EXPLORATION_ID_KEY: new_exploration_id}) else: raise self.InvalidInputException( 'This server does not allow file uploads.')
def post(self): """Handles POST requests.""" title = self.payload.get('title', feconf.DEFAULT_EXPLORATION_TITLE) new_exploration_id = exp_services.get_new_exploration_id() exploration = exp_domain.Exploration.create_default_exploration( new_exploration_id, title=title) exp_services.save_new_exploration(self.user_id, exploration) self.render_json({ EXPLORATION_ID_KEY: new_exploration_id })
def test_can_not_unpublish_collection_with_invalid_payload_version(self): self.set_collection_editors([self.OWNER_USERNAME]) # Login as owner and publish a collection with a public exploration. self.login(self.OWNER_EMAIL) collection_id = collection_services.get_new_collection_id() exploration_id = exp_services.get_new_exploration_id() self.save_new_valid_exploration(exploration_id, self.owner_id) self.save_new_valid_collection(collection_id, self.owner_id, exploration_id=exploration_id) rights_manager.publish_exploration(self.owner, exploration_id) collection = collection_services.get_collection_by_id(collection_id) response = self.get_html_response( '%s/%s' % (feconf.COLLECTION_URL_PREFIX, self.COLLECTION_ID)) csrf_token = self.get_csrf_token_from_response(response) response_dict = self.put_json('/collection_editor_handler/publish/%s' % collection_id, {'version': collection.version}, csrf_token=csrf_token) self.assertFalse(response_dict['is_private']) self.logout() # Login as admin and try to unpublish the collection. self.login(self.ADMIN_EMAIL) response = self.get_html_response( '%s/%s' % (feconf.COLLECTION_URL_PREFIX, self.COLLECTION_ID)) csrf_token = self.get_csrf_token_from_response(response) # Raises error as version is None. response_dict = self.put_json( '/collection_editor_handler/unpublish/%s' % collection_id, {'version': None}, csrf_token=csrf_token, expected_status_int=400) self.assertEqual(response_dict['error'], 'Invalid POST request: a version must be specified.') # Raises error as version from payload does not match the collection # version. response_dict = self.put_json( '/collection_editor_handler/unpublish/%s' % collection_id, {'version': 2}, csrf_token=csrf_token, expected_status_int=400) self.assertEqual( response_dict['error'], 'Trying to update version 1 of collection from version 2, ' 'which is too old. Please reload the page and try again.') self.logout()
def post(self): """Handles POST requests.""" yaml_content = self.request.get('yaml_file') new_exploration_id = exp_services.get_new_exploration_id() if feconf.ALLOW_YAML_FILE_UPLOAD: exp_services.save_new_exploration_from_yaml_and_assets( self.user_id, yaml_content, new_exploration_id, []) self.render_json({ EXPLORATION_ID_KEY: new_exploration_id }) else: raise self.InvalidInputException( 'This server does not allow file uploads.')
def post(self): """Handles POST requests.""" title = self.payload.get('title') category = self.payload.get('category') if not title: raise self.InvalidInputException('No title supplied.') if not category: raise self.InvalidInputException('No category chosen.') new_exploration_id = exp_services.get_new_exploration_id() exploration = exp_domain.Exploration.create_default_exploration( new_exploration_id, title, category) exp_services.save_new_exploration(self.user_id, exploration) self.render_json({EXPLORATION_ID_KEY: new_exploration_id})
def _generate_dummy_explorations(self, num_dummy_exps_to_generate, num_dummy_exps_to_publish): """ Generates and publishes the given number of dummy explorations. Args: num_dummy_exps_to_generate: int. Count of dummy explorations to be generated. num_dummy_exps_to_publish: int. Count of explorations to be published. Raises: Exception: Environment is not DEVMODE. """ if feconf.DEV_MODE: logging.info( '[ADMIN] %s generated %s number of dummy explorations' % (self.user_id, num_dummy_exps_to_generate)) possible_titles = [ 'Hulk Neuroscience', 'Quantum Starks', 'Wonder Anatomy', 'Elvish, language of "Lord of the Rings', 'The Science of Superheroes' ] exploration_ids_to_publish = [] for i in range(num_dummy_exps_to_generate): title = random.choice(possible_titles) category = random.choice(feconf.SEARCH_DROPDOWN_CATEGORIES) new_exploration_id = exp_services.get_new_exploration_id() exploration = exp_domain.Exploration.create_default_exploration( new_exploration_id, title=title, category=category, objective='Dummy Objective') exp_services.save_new_exploration(self.user_id, exploration) if i <= num_dummy_exps_to_publish - 1: exploration_ids_to_publish.append(new_exploration_id) rights_manager.publish_exploration(self.user, new_exploration_id) exp_services.index_explorations_given_ids( exploration_ids_to_publish) else: raise Exception( 'Cannot generate dummy explorations in production.')
def test_library_handler_with_given_category_and_language_code(self): self.login(self.ADMIN_EMAIL) exp_id = exp_services.get_new_exploration_id() self.save_new_valid_exploration(exp_id, self.admin_id) self.publish_exploration(self.admin_id, exp_id) exp_services.index_explorations_given_ids([exp_id]) response_dict = self.get_json(feconf.LIBRARY_SEARCH_DATA_URL, params={ 'category': 'A category', 'language_code': 'en' }) activity_list = ( summary_services.get_displayable_exp_summary_dicts_matching_ids( [exp_id])) self.assertEqual(response_dict['activity_list'], activity_list) self.logout()
def post(self): """Handles POST requests.""" title = self.payload.get('title') category = self.payload.get('category') yaml_content = self.request.get('yaml_file') if not title: raise self.InvalidInputException('No title supplied.') if not category: raise self.InvalidInputException('No category chosen.') new_exploration_id = exp_services.get_new_exploration_id() if ALLOW_YAML_FILE_UPLOAD.value: exp_services.save_new_exploration_from_yaml_and_assets( self.user_id, yaml_content, title, category, new_exploration_id, []) self.render_json({EXPLORATION_ID_KEY: new_exploration_id}) else: raise self.InvalidInputException( 'This server does not allow file uploads.')
def test_can_not_publish_collection_with_invalid_payload_version(self): self.set_collection_editors([self.OWNER_USERNAME]) # Login as owner and try to publish a collection with a public # exploration. self.login(self.OWNER_EMAIL) collection_id = collection_services.get_new_collection_id() exploration_id = exp_services.get_new_exploration_id() self.save_new_valid_exploration(exploration_id, self.owner_id) self.save_new_valid_collection(collection_id, self.owner_id, exploration_id=exploration_id) rights_manager.publish_exploration(self.owner, exploration_id) csrf_token = self.get_new_csrf_token() # Raises error as version is None. response_dict = self.put_json('/collection_editor_handler/publish/%s' % collection_id, {'version': None}, csrf_token=csrf_token, expected_status_int=400) self.assertEqual(response_dict['error'], 'Invalid POST request: a version must be specified.') # Raises error as version from payload does not match the collection # version. response_dict = self.put_json('/collection_editor_handler/publish/%s' % collection_id, {'version': 2}, csrf_token=csrf_token, expected_status_int=400) self.assertEqual( response_dict['error'], 'Trying to update version 1 of collection from version 2, ' 'which is too old. Please reload the page and try again.') self.logout()