Skip to content

Commit

Permalink
Fix SA2.0 formatting in tool_shed.repository_registry + refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
jdavcs committed Oct 12, 2023
1 parent f553b75 commit 6a6e5bf
Showing 1 changed file with 30 additions and 20 deletions.
50 changes: 30 additions & 20 deletions lib/tool_shed/repository_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
and_,
false,
or_,
select,
)

import tool_shed.repository_types.util as rt_util
Expand All @@ -12,6 +13,11 @@
metadata_util,
)
from tool_shed.webapp import model
from tool_shed.webapp.model import (
Category,
Repository,
RepositoryMetadata,
)

log = logging.getLogger(__name__)

Expand All @@ -20,7 +26,6 @@ class Registry:
def __init__(self, app):
log.debug("Loading the repository registry...")
self.app = app
self.certified_level_one_clause_list = self.get_certified_level_one_clause_list()
# The following lists contain tuples like ( repository.name, repository.user.username, changeset_revision )
# where the changeset_revision entry is always the latest installable changeset_revision..
self.certified_level_one_repository_and_suite_tuples = []
Expand Down Expand Up @@ -143,19 +148,15 @@ def edit_category_entry(self, old_name, new_name):
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 = []
for repository in self.sa_session.query(model.Repository).filter(
and_(model.Repository.table.c.deleted == false(), model.Repository.table.c.deprecated == false())
):
for repository in get_repositories(self.sa_session):
certified_level_one_tuple = self.get_certified_level_one_tuple(repository)
latest_installable_changeset_revision, is_level_one_certified = certified_level_one_tuple
if is_level_one_certified:
certified_level_one_tuples.append(certified_level_one_tuple)
clause_list.append(
and_(
model.RepositoryMetadata.table.c.repository_id == repository.id,
model.RepositoryMetadata.table.c.changeset_revision == latest_installable_changeset_revision,
RepositoryMetadata.repository_id == repository.id,
RepositoryMetadata.changeset_revision == latest_installable_changeset_revision,
)
)
return clause_list
Expand Down Expand Up @@ -234,19 +235,11 @@ def load_repository_and_suite_tuple(self, repository):

def load_repository_and_suite_tuples(self):
# Load self.certified_level_one_repository_and_suite_tuples and self.certified_level_one_suite_tuples.
for repository in (
self.sa_session.query(model.Repository)
.join(model.RepositoryMetadata.table)
.filter(or_(*self.certified_level_one_clause_list))
.join(model.User.table)
):
clauses = self.get_certified_level_one_clause_list()
for repository in get_certified_repositories_with_user(self.sa_session, clauses, model.User):
self.load_certified_level_one_repository_and_suite_tuple(repository)
# Load self.repository_and_suite_tuples and self.suite_tuples
for repository in (
self.sa_session.query(model.Repository)
.filter(and_(model.Repository.table.c.deleted == false(), model.Repository.table.c.deprecated == false()))
.join(model.User.table)
):
for repository in get_repositories_with_user(self.sa_session, model.User):
self.load_repository_and_suite_tuple(repository)

def load_viewable_repositories_and_suites_by_category(self):
Expand All @@ -259,7 +252,7 @@ def load_viewable_repositories_and_suites_by_category(self):
self.viewable_suites_by_category = {}
self.viewable_valid_repositories_and_suites_by_category = {}
self.viewable_valid_suites_by_category = {}
for category in self.sa_session.query(model.Category):
for category in self.sa_session.scalars(select(Category)):
category_name = str(category.name)
if category 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
Expand Down Expand Up @@ -393,3 +386,20 @@ def unload_repository_and_suite_tuple(self, repository):
if repository.type == rt_util.REPOSITORY_SUITE_DEFINITION:
if tuple in self.suite_tuples:
self.suite_tuples.remove(tuple)


def get_repositories(session):
stmt = select(Repository).where(Repository.deleted == false()).where(Repository.deprecated == false())
return session.scalars(stmt)


def get_repositories_with_user(session, user_model):
stmt = (
select(Repository).where(Repository.deleted == false()).where(Repository.deprecated == false()).join(user_model)
)
return session.scalars(stmt)


def get_certified_repositories_with_user(session, where_clauses, user_model):
stmt = select(Repository).join(RepositoryMetadata).where(or_(*where_clauses)).join(user_model)
return session.scalars(stmt)

0 comments on commit 6a6e5bf

Please sign in to comment.