def create_category( self, trans, **kwd ): message = kwd.get( 'message', '' ) status = kwd.get( 'status', 'done' ) name = kwd.get( 'name', '' ).strip() description = kwd.get( 'description', '' ).strip() if kwd.get( 'create_category_button', False ): if not name or not description: message = 'Enter a valid name and a description' status = 'error' elif suc.get_category_by_name( trans.app, name ): message = 'A category with that name already exists' status = 'error' else: # Create the category category = trans.app.model.Category( name=name, description=description ) trans.sa_session.add( category ) trans.sa_session.flush() # Update the Tool Shed's repository registry. trans.app.repository_registry.add_category_entry( category ) message = "Category '%s' has been created" % category.name status = 'done' trans.response.send_redirect( web.url_for( controller='admin', action='manage_categories', message=message, status=status ) ) return trans.fill_template( '/webapps/tool_shed/category/create_category.mako', name=name, description=description, message=message, status=status )
def create_category(self, trans, **kwd): message = escape(kwd.get('message', '')) status = kwd.get('status', 'done') name = kwd.get('name', '').strip() description = kwd.get('description', '').strip() if kwd.get('create_category_button', False): if not name or not description: message = 'Enter a valid name and a description' status = 'error' elif suc.get_category_by_name(trans.app, name): message = 'A category with that name already exists' status = 'error' else: # Create the category category = trans.app.model.Category(name=name, description=description) trans.sa_session.add(category) trans.sa_session.flush() # Update the Tool Shed's repository registry. trans.app.repository_registry.add_category_entry(category) message = "Category '%s' has been created" % escape( category.name) status = 'done' trans.response.send_redirect( web.url_for(controller='admin', action='manage_categories', message=message, status=status)) return trans.fill_template( '/webapps/tool_shed/category/create_category.mako', name=name, description=description, message=message, status=status)
def create_category(self, trans, **kwd): message = escape(kwd.get("message", "")) status = kwd.get("status", "done") name = kwd.get("name", "").strip() description = kwd.get("description", "").strip() if kwd.get("create_category_button", False): if not name or not description: message = "Enter a valid name and a description" status = "error" elif suc.get_category_by_name(trans.app, name): message = "A category with that name already exists" status = "error" else: # Create the category category = trans.app.model.Category(name=name, description=description) trans.sa_session.add(category) trans.sa_session.flush() # Update the Tool Shed's repository registry. trans.app.repository_registry.add_category_entry(category) message = "Category '%s' has been created" % escape(category.name) status = "done" trans.response.send_redirect( web.url_for(controller="admin", action="manage_categories", message=message, status=status) ) return trans.fill_template( "/webapps/tool_shed/category/create_category.mako", name=name, description=description, message=message, status=status, )
def create_repository_and_import_archive( trans, repository_archive_dict, import_results_tups ): """ Create a new repository in the tool shed and populate it with the contents of a gzip compressed tar archive that was exported as part or all of the contents of a capsule. """ results_message = '' name = repository_archive_dict.get( 'name', None ) username = repository_archive_dict.get( 'owner', None ) if name is None or username is None: results_message += 'Import failed: required repository name <b>%s</b> or owner <b>%s</b> is missing.' % ( str( name ), str( username )) import_results_tups.append( ( ( str( name ), str( username ) ), results_message ) ) else: if repository_archive_dict[ 'status' ] is None: # The repository does not yet exist in this Tool Shed and the current user is authorized to import # the current archive file. type = repository_archive_dict.get( 'type', 'unrestricted' ) description = repository_archive_dict.get( 'description', '' ) long_description = repository_archive_dict.get( 'long_description', '' ) # The owner entry in the repository_archive_dict is the public username of the user associated with # the exported repository archive. user = suc.get_user_by_username( trans.app, username ) if user is None: results_message += 'Import failed: repository owner <b>%s</b> does not have an account in this Tool Shed.' % str( username ) import_results_tups.append( ( ( str( name ), str( username ) ), results_message ) ) else: user_id = user.id # The categories entry in the repository_archive_dict is a list of category names. If a name does not # exist in the current Tool Shed, the category will not be created, so it will not be associated with # the repository. category_ids = [] category_names = repository_archive_dict[ 'category_names' ] for category_name in category_names: category = suc.get_category_by_name( trans, category_name ) if category is None: results_message += 'This Tool Shed does not have the category <b>%s</b> so it will not be associated with this repository.' % \ str( category_name ) else: category_ids.append( trans.security.encode_id( category.id ) ) # Create the repository record in the database. repository, create_message = create_repository( trans, name, type, description, long_description, user_id=user_id, category_ids=category_ids ) if create_message: results_message += create_message # Populate the new repository with the contents of exported repository archive. results_dict = import_util.import_repository_archive( trans, repository, repository_archive_dict ) import_results_tups.append( ( ( str( name ), str( username ) ), results_message ) ) else: # The repository either already exists in this Tool Shed or the current user is not authorized to create it. results_message += 'Import not necessary: repository status for this Tool Shed is: %s.' % str( repository_archive_dict[ 'status' ] ) import_results_tups.append( ( ( str( name ), str( username ) ), results_message ) ) return import_results_tups
def edit_category(self, trans, **kwd): '''Handle requests to edit TS category name or description''' message = escape(kwd.get('message', '')) status = kwd.get('status', 'done') id = kwd.get('id', None) if not id: message = "No category ids received for editing" trans.response.send_redirect( web.url_for(controller='admin', action='manage_categories', message=message, status='error')) category = suc.get_category(trans.app, id) original_category_name = str(category.name) original_category_description = str(category.description) if kwd.get('edit_category_button', False): flush_needed = False new_name = kwd.get('name', '').strip() new_description = kwd.get('description', '').strip() if original_category_name != new_name: if not new_name: message = 'Enter a valid name' status = 'error' elif original_category_name != new_name and suc.get_category_by_name( trans.app, new_name): message = 'A category with that name already exists' status = 'error' else: category.name = new_name flush_needed = True if original_category_description != new_description: category.description = new_description if not flush_needed: flush_needed = True if flush_needed: trans.sa_session.add(category) trans.sa_session.flush() if original_category_name != new_name: # Update the Tool Shed's repository registry. trans.app.repository_registry.edit_category_entry( original_category_name, new_name) message = "The information has been saved for category '%s'" % escape( category.name) status = 'done' return trans.response.send_redirect( web.url_for(controller='admin', action='manage_categories', message=message, status=status)) return trans.fill_template( '/webapps/tool_shed/category/edit_category.mako', category=category, message=message, status=status)
def create(self, trans, payload, **kwd): """ POST /api/categories Returns a dictionary of information about the created category. : param key: the current Galaxy admin user's API key The following parameters are included in the payload. :param name (required): the name of the category :param description (optional): the description of the category (if not provided, the name will be used) """ category_dict = dict(message='', status='ok') # Make sure the current user's API key proves he is an admin user in this Tool Shed. if trans.user_is_admin(): # Get the information about the category to be created from the payload. name = payload.get('name', '') if name: description = payload.get('description', '') if not description: # Default the description to the name. description = name if suc.get_category_by_name(trans.app, name): category_dict[ 'message'] = 'A category with that name already exists' category_dict['status'] = 'error' else: # Create the category category = trans.app.model.Category( name=name, description=description) trans.sa_session.add(category) trans.sa_session.flush() category_dict = category.to_dict( view='element', value_mapper=self.__get_value_mapper(trans)) category_dict[ 'message'] = "Category '%s' has been created" % str( category.name) category_dict['url'] = web.url_for( controller='categories', action='show', id=trans.security.encode_id(category.id)) else: category_dict['message'] = "Missing required parameter 'name'." category_dict['status'] = 'error' else: category_dict[ 'message'] = 'You are not authorized to create a category in this Tool Shed.' category_dict['status'] = 'error' return category_dict
def edit_category(self, trans, **kwd): '''Handle requests to edit TS category name or description''' message = escape(kwd.get('message', '')) status = kwd.get('status', 'done') id = kwd.get('id', None) if not id: message = "No category ids received for editing" trans.response.send_redirect(web.url_for(controller='admin', action='manage_categories', message=message, status='error')) category = suc.get_category(trans.app, id) original_category_name = str(category.name) original_category_description = str(category.description) if kwd.get('edit_category_button', False): flush_needed = False new_name = kwd.get('name', '').strip() new_description = kwd.get('description', '').strip() if original_category_name != new_name: if not new_name: message = 'Enter a valid name' status = 'error' elif original_category_name != new_name and suc.get_category_by_name(trans.app, new_name): message = 'A category with that name already exists' status = 'error' else: category.name = new_name flush_needed = True if original_category_description != new_description: category.description = new_description if not flush_needed: flush_needed = True if flush_needed: trans.sa_session.add(category) trans.sa_session.flush() if original_category_name != new_name: # Update the Tool Shed's repository registry. trans.app.repository_registry.edit_category_entry(original_category_name, new_name) message = "The information has been saved for category '%s'" % escape(category.name) status = 'done' return trans.response.send_redirect(web.url_for(controller='admin', action='manage_categories', message=message, status=status)) return trans.fill_template('/webapps/tool_shed/category/edit_category.mako', category=category, message=message, status=status)
def edit_category(self, trans, **kwd): message = escape(kwd.get("message", "")) status = kwd.get("status", "done") id = kwd.get("id", None) if not id: message = "No category ids received for editing" trans.response.send_redirect( web.url_for(controller="admin", action="manage_categories", message=message, status="error") ) category = suc.get_category(trans.app, id) original_category_name = str(category.name) original_category_description = str(category.description) if kwd.get("edit_category_button", False): flush_needed = False new_name = kwd.get("name", "").strip() new_description = kwd.get("description", "").strip() if original_category_name != new_name: if not new_name: message = "Enter a valid name" status = "error" elif original_category_name != new_name and suc.get_category_by_name(trans.app, new_name): message = "A category with that name already exists" status = "error" else: category.name = new_name flush_needed = True if original_category_description != new_description: category.description = new_description if not flush_needed: flush_needed = True if flush_needed: trans.sa_session.add(category) trans.sa_session.flush() if original_category_name != new_name: # Update the Tool Shed's repository registry. trans.app.repository_registry.edit_category_entry(original_category_name, new_name) message = "The information has been saved for category '%s'" % escape(category.name) status = "done" return trans.response.send_redirect( web.url_for(controller="admin", action="manage_categories", message=message, status=status) ) return trans.fill_template( "/webapps/tool_shed/category/edit_category.mako", category=category, message=message, status=status )
def create(self, trans, payload, **kwd): """ POST /api/categories Return a dictionary of information about the created category. The following parameters are included in the payload: :param name (required): the name of the category :param description (optional): the description of the category (if not provided, the name will be used) Example: POST /api/categories/?key=XXXYYYXXXYYY Content-Disposition: form-data; name="name" Category_Name Content-Disposition: form-data; name="description" Category_Description """ category_dict = dict(message='', status='ok') name = payload.get('name', '') if name: description = payload.get('description', '') if not description: # Default the description to the name. description = name if suc.get_category_by_name(self.app, name): raise exceptions.Conflict( 'A category with that name already exists.') else: # Create the category category = self.app.model.Category(name=name, description=description) trans.sa_session.add(category) trans.sa_session.flush() category_dict = category.to_dict( view='element', value_mapper=self.__get_value_mapper(trans)) category_dict[ 'message'] = "Category '%s' has been created" % str( category.name) category_dict['url'] = web.url_for(controller='categories', action='show', id=trans.security.encode_id( category.id)) else: raise exceptions.RequestParameterMissingException( 'Missing required parameter "name".') return category_dict
def create( self, trans, payload, **kwd ): """ POST /api/categories Returns a dictionary of information about the created category. : param key: the current Galaxy admin user's API key The following parameters are included in the payload. :param name (required): the name of the category :param description (optional): the description of the category (if not provided, the name will be used) """ category_dict = dict( message = '', status = 'ok' ) # Make sure the current user's API key proves he is an admin user in this Tool Shed. if trans.user_is_admin(): # Get the information about the category to be created from the payload. name = payload.get( 'name', '' ) if name: description = payload.get( 'description', '' ) if not description: # Default the description to the name. description = name if suc.get_category_by_name( trans.app, name ): category_dict[ 'message' ] = 'A category with that name already exists' category_dict[ 'status' ] = 'error' else: # Create the category category = trans.app.model.Category( name=name, description=description ) trans.sa_session.add( category ) trans.sa_session.flush() category_dict = category.to_dict( view='element', value_mapper=self.__get_value_mapper( trans ) ) category_dict[ 'message' ] = "Category '%s' has been created" % str( category.name ) category_dict[ 'url' ] = web.url_for( controller='categories', action='show', id=trans.security.encode_id( category.id ) ) else: category_dict[ 'message' ] = "Missing required parameter 'name'." category_dict[ 'status' ] = 'error' else: category_dict[ 'message' ] = 'You are not authorized to create a category in this Tool Shed.' category_dict[ 'status' ] = 'error' return category_dict
def create( self, trans, payload, **kwd ): """ POST /api/categories Return a dictionary of information about the created category. The following parameters are included in the payload: :param name (required): the name of the category :param description (optional): the description of the category (if not provided, the name will be used) Example: POST /api/categories/?key=XXXYYYXXXYYY Content-Disposition: form-data; name="name" Category_Name Content-Disposition: form-data; name="description" Category_Description """ category_dict = dict( message='', status='ok' ) name = payload.get( 'name', '' ) if name: description = payload.get( 'description', '' ) if not description: # Default the description to the name. description = name if suc.get_category_by_name( self.app, name ): raise exceptions.Conflict( 'A category with that name already exists.' ) else: # Create the category category = self.app.model.Category( name=name, description=description ) trans.sa_session.add( category ) trans.sa_session.flush() category_dict = category.to_dict( view='element', value_mapper=self.__get_value_mapper( trans ) ) category_dict[ 'message' ] = "Category '%s' has been created" % str( category.name ) category_dict[ 'url' ] = web.url_for( controller='categories', action='show', id=trans.security.encode_id( category.id ) ) else: raise exceptions.RequestParameterMissingException( 'Missing required parameter "name".' ) return category_dict
def edit_category( self, trans, **kwd ): message = kwd.get( 'message', '' ) status = kwd.get( 'status', 'done' ) id = kwd.get( 'id', None ) if not id: message = "No category ids received for editing" trans.response.send_redirect( web.url_for( controller='admin', action='manage_categories', message=message, status='error' ) ) category = suc.get_category( trans, id ) if kwd.get( 'edit_category_button', False ): new_name = kwd.get( 'name', '' ).strip() new_description = kwd.get( 'description', '' ).strip() if category.name != new_name or category.description != new_description: if not new_name: message = 'Enter a valid name' status = 'error' elif category.name != new_name and suc.get_category_by_name( trans, new_name ): message = 'A category with that name already exists' status = 'error' else: category.name = new_name category.description = new_description trans.sa_session.add( category ) trans.sa_session.flush() message = "The information has been saved for category '%s'" % ( category.name ) status = 'done' return trans.response.send_redirect( web.url_for( controller='admin', action='manage_categories', message=message, status=status ) ) return trans.fill_template( '/webapps/tool_shed/category/edit_category.mako', category=category, message=message, status=status )