mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-16 07:19:13 +08:00
Fix SA2.0 usage in tool_shed.webapp.api.groups
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user