Fix SA2.0 usage in tool_shed.util.shed_index

This commit is contained in:
John Davis
2023-10-12 10:57:59 -04:00
parent 1711e96dac
commit d4a0cce034
+29 -15
View File
@@ -5,6 +5,10 @@ from mercurial import (
hg,
ui,
)
from sqlalchemy import (
false,
select,
)
from whoosh.writing import AsyncWriter
import tool_shed.webapp.model.mapping as ts_mapping
@@ -91,21 +95,11 @@ def get_repos(sa_session, file_path, hgweb_config_dir, **kwargs):
"""
hgwcm = hgweb_config_manager
hgwcm.hgweb_config_dir = hgweb_config_dir
# Do not index deleted, deprecated, or "tool_dependency_definition" type repositories.
q = (
sa_session.query(model.Repository)
.filter_by(deleted=False)
.filter_by(deprecated=False)
.order_by(model.Repository.update_time.desc())
)
q = q.filter(model.Repository.type != "tool_dependency_definition")
for repo in q:
for repo in get_repositories_for_indexing(sa_session):
category_names = []
for rca in sa_session.query(model.RepositoryCategoryAssociation).filter(
model.RepositoryCategoryAssociation.repository_id == repo.id
):
for category in sa_session.query(model.Category).filter(model.Category.id == rca.category.id):
category_names.append(category.name.lower())
for rca in get_repo_cat_associations(sa_session, repo.id):
category = sa_session.get(model.Category, rca.category.id)
category_names.append(category.name.lower())
categories = (",").join(category_names)
repo_id = repo.id
name = repo.name
@@ -118,7 +112,7 @@ def get_repos(sa_session, file_path, hgweb_config_dir, **kwargs):
repo_owner_username = ""
if repo.user_id is not None:
user = sa_session.query(model.User).filter(model.User.id == repo.user_id).one()
user = sa_session.get(model.User, repo.user_id)
repo_owner_username = user.username.lower()
last_updated = pretty_print_time_interval(repo.update_time)
@@ -196,3 +190,23 @@ def load_one_dir(path):
)
tools_in_dir.append(tool)
return tools_in_dir
def get_repositories_for_indexing(session):
# Do not index deleted, deprecated, or "tool_dependency_definition" type repositories.
Repository = model.Repository
stmt = (
select(Repository)
.where(Repository.deleted == false())
.where(Repository.deprecated == false())
.where(Repository.type != "tool_dependency_definition")
.order_by(Repository.update_time.desc())
)
return session.scalars(stmt)
def get_repo_cat_associations(session, repository_id):
stmt = select(model.RepositoryCategoryAssociation).where(
model.RepositoryCategoryAssociation.repository_id == repository_id
)
return session.scalars(stmt)