mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-30 18:13:23 +08:00
Handle Tool Shed category administration in the Tool Shed's repository registry.
This commit is contained in:
@@ -132,6 +132,8 @@ class AdminController( BaseUIController, Admin ):
|
||||
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',
|
||||
@@ -224,21 +226,32 @@ class AdminController( BaseUIController, Admin ):
|
||||
message=message,
|
||||
status='error' ) )
|
||||
category = suc.get_category( trans, 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 category.name != new_name or category.description != new_description:
|
||||
if original_category_name != new_name:
|
||||
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 ):
|
||||
elif original_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
|
||||
flush_needed = True
|
||||
if original_category_description != new_description:
|
||||
category.description = new_description
|
||||
if not flus_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'" % ( category.name )
|
||||
status = 'done'
|
||||
return trans.response.send_redirect( web.url_for( controller='admin',
|
||||
@@ -403,6 +416,8 @@ class AdminController( BaseUIController, Admin ):
|
||||
category.deleted = True
|
||||
trans.sa_session.add( category )
|
||||
trans.sa_session.flush()
|
||||
# Update the Tool Shed's repository registry.
|
||||
trans.app.repository_registry.remove_category_entry( category )
|
||||
message += " %s " % category.name
|
||||
else:
|
||||
message = "No category ids received for deleting."
|
||||
@@ -459,6 +474,8 @@ class AdminController( BaseUIController, Admin ):
|
||||
category.deleted = False
|
||||
trans.sa_session.add( category )
|
||||
trans.sa_session.flush()
|
||||
# Update the Tool Shed's repository registry.
|
||||
trans.app.repository_registry.add_category_entry( category )
|
||||
count += 1
|
||||
undeleted_categories += " %s" % category.name
|
||||
message = "Undeleted %d categories: %s" % ( count, undeleted_categories )
|
||||
|
||||
@@ -41,6 +41,21 @@ class Registry( object ):
|
||||
self.load_viewable_repositories_and_suites_by_category()
|
||||
self.load_repository_and_suite_tuples()
|
||||
|
||||
def add_category_entry( self, category ):
|
||||
category_name = str( category.name )
|
||||
if category_name not in self.viewable_repositories_and_suites_by_category:
|
||||
self.viewable_repositories_and_suites_by_category[ category_name ] = 0
|
||||
if category_name not in self.viewable_suites_by_category:
|
||||
self.viewable_suites_by_category[ category_name ] = 0
|
||||
if category_name not in self.viewable_valid_repositories_and_suites_by_category:
|
||||
self.viewable_valid_repositories_and_suites_by_category[ category_name ] = 0
|
||||
if category_name not in self.viewable_valid_suites_by_category:
|
||||
self.viewable_valid_suites_by_category[ category_name ] = 0
|
||||
if category_name not in self.certified_level_one_viewable_repositories_and_suites_by_category:
|
||||
self.certified_level_one_viewable_repositories_and_suites_by_category[ category_name ] = 0
|
||||
if category_name not in self.certified_level_one_viewable_suites_by_category:
|
||||
self.certified_level_one_viewable_suites_by_category[ category_name ] = 0
|
||||
|
||||
def add_entry( self, repository ):
|
||||
try:
|
||||
if repository:
|
||||
@@ -88,6 +103,44 @@ class Registry( object ):
|
||||
# will be corrected at next server start.
|
||||
log.exception( "Handled error adding entry to repository registry: %s." % str( e ) )
|
||||
|
||||
def edit_category_entry( self, old_name, new_name ):
|
||||
if old_name in self.viewable_repositories_and_suites_by_category:
|
||||
val = self.viewable_repositories_and_suites_by_category[ old_name ]
|
||||
del self.viewable_repositories_and_suites_by_category[ old_name ]
|
||||
self.viewable_repositories_and_suites_by_category[ new_name ] = val
|
||||
else:
|
||||
self.viewable_repositories_and_suites_by_category[ new_name ] = 0
|
||||
if old_name in self.viewable_valid_repositories_and_suites_by_category:
|
||||
val = self.viewable_valid_repositories_and_suites_by_category[ old_name ]
|
||||
del self.viewable_valid_repositories_and_suites_by_category[ old_name ]
|
||||
self.viewable_valid_repositories_and_suites_by_category[ new_name ] = val
|
||||
else:
|
||||
self.viewable_valid_repositories_and_suites_by_category[ new_name ] = 0
|
||||
if old_name in self.viewable_suites_by_category:
|
||||
val = self.viewable_suites_by_category[ old_name ]
|
||||
del self.viewable_suites_by_category[ old_name ]
|
||||
self.viewable_suites_by_category[ new_name ] = val
|
||||
else:
|
||||
self.viewable_suites_by_category[ new_name ] = 0
|
||||
if old_name in self.viewable_valid_suites_by_category:
|
||||
val = self.viewable_valid_suites_by_category[ old_name ]
|
||||
del self.viewable_valid_suites_by_category[ old_name ]
|
||||
self.viewable_valid_suites_by_category[ new_name ] = val
|
||||
else:
|
||||
self.viewable_valid_suites_by_category[ new_name ] = 0
|
||||
if old_name in self.certified_level_one_viewable_repositories_and_suites_by_category:
|
||||
val = self.certified_level_one_viewable_repositories_and_suites_by_category[ old_name ]
|
||||
del self.certified_level_one_viewable_repositories_and_suites_by_category[ old_name ]
|
||||
self.certified_level_one_viewable_repositories_and_suites_by_category[ new_name ] = val
|
||||
else:
|
||||
self.certified_level_one_viewable_repositories_and_suites_by_category[ new_name ] = 0
|
||||
if old_name in self.certified_level_one_viewable_suites_by_category:
|
||||
val = self.certified_level_one_viewable_suites_by_category[ old_name ]
|
||||
del self.certified_level_one_viewable_suites_by_category[ old_name ]
|
||||
self.certified_level_one_viewable_suites_by_category[ new_name ] = val
|
||||
else:
|
||||
self.certified_level_one_viewable_suites_by_category[ new_name ] = 0
|
||||
|
||||
def get_certified_level_one_clause_list( self ):
|
||||
certified_level_one_tuples = []
|
||||
clause_list = []
|
||||
@@ -266,6 +319,21 @@ class Registry( object ):
|
||||
if repository.type in [ rt_util.REPOSITORY_SUITE_DEFINITION ]:
|
||||
self.certified_level_one_viewable_suites_by_category[ category_name ] += 1
|
||||
|
||||
def remove_category_entry( self, category ):
|
||||
catgeory_name = str( category.name )
|
||||
if catgeory_name in self.viewable_repositories_and_suites_by_category:
|
||||
del self.viewable_repositories_and_suites_by_category[ catgeory_name ]
|
||||
if catgeory_name in self.viewable_valid_repositories_and_suites_by_category:
|
||||
del self.viewable_valid_repositories_and_suites_by_category[ catgeory_name ]
|
||||
if catgeory_name in self.viewable_suites_by_category:
|
||||
del self.viewable_suites_by_category[ catgeory_name ]
|
||||
if catgeory_name in self.viewable_valid_suites_by_category:
|
||||
del self.viewable_valid_suites_by_category[ catgeory_name ]
|
||||
if catgeory_name in self.certified_level_one_viewable_repositories_and_suites_by_category:
|
||||
del self.certified_level_one_viewable_repositories_and_suites_by_category[ catgeory_name ]
|
||||
if catgeory_name in self.certified_level_one_viewable_suites_by_category:
|
||||
del self.certified_level_one_viewable_suites_by_category[ catgeory_name ]
|
||||
|
||||
def remove_entry( self, repository ):
|
||||
try:
|
||||
if repository:
|
||||
|
||||
Reference in New Issue
Block a user