Fix SA2.0 usage in tool_shed.webapp.api.groups

This commit is contained in:
John Davis
2023-10-12 10:57:59 -04:00
parent 852cb9f00b
commit 49cafd053e
+23 -10
View File
@@ -4,6 +4,8 @@ from typing import (
Dict,
)
from sqlalchemy import select
from galaxy import (
util,
web,
@@ -24,6 +26,13 @@ from galaxy.web import (
)
from tool_shed.managers import groups
from tool_shed.structured_app import ToolShedApp
from tool_shed.webapp.model import (
Category,
Repository,
RepositoryCategoryAssociation,
RepositoryMetadata,
User,
)
from . import BaseShedAPIController
log = logging.getLogger(__name__)
@@ -109,22 +118,14 @@ class GroupsController(BaseShedAPIController):
Turn the given group information from DB into a dict
and add other characteristics like members and repositories.
"""
model = trans.app.model
group_dict = group.to_dict(view="collection", value_mapper=self.__get_value_mapper(trans))
group_members = []
group_repos = []
total_downloads = 0
for uga in group.users:
user = trans.sa_session.query(model.User).filter(model.User.table.c.id == uga.user_id).one()
user = trans.sa_session.get(User, uga.user_id)
user_repos_count = 0
for repo in (
trans.sa_session.query(model.Repository)
.filter(model.Repository.table.c.user_id == uga.user_id)
.join(model.RepositoryMetadata.table)
.join(model.User.table)
.outerjoin(model.RepositoryCategoryAssociation.table)
.outerjoin(model.Category.table)
):
for repo in get_user_repositories(trans.sa_session, uga.user_id):
categories = []
for rca in repo.categories:
cat_dict = dict(name=rca.category.name, id=trans.app.security.encode_id(rca.category.id))
@@ -169,3 +170,15 @@ class GroupsController(BaseShedAPIController):
group_dict["total_repos"] = len(group_repos)
group_dict["total_downloads"] = total_downloads
return group_dict
def get_user_repositories(session, user_id):
stmt = (
select(Repository)
.where(Repository.user_id == user_id)
.join(RepositoryMetadata)
.join(User)
.outerjoin(RepositoryCategoryAssociation)
.outerjoin(Category)
)
return session.scalars(stmt)