PR#2132: listSideTags returns also user info

Merges #2132
https://pagure.io/koji/pull-request/2132

Fixes: #2131
https://pagure.io/koji/issue/2131
Provide owner name in listSideTags API call
This commit is contained in:
Tomas Kopecek 2020-05-06 14:55:40 +02:00
commit c818da85b8

View file

@ -163,6 +163,8 @@ def listSideTags(basetag=None, user=None, queryOpts=None):
:param queryOpts: additional query options
{countOnly, order, offset, limit}
:type queryOpts: dict
:returns: list of dicts: id, name, user_id, user_name
"""
# te1.sidetag
# te2.user_id
@ -176,17 +178,20 @@ def listSideTags(basetag=None, user=None, queryOpts=None):
else:
basetag_id = None
joins = ["LEFT JOIN tag_extra AS te1 ON tag.id = te1.tag_id"]
clauses = ["te1.active IS TRUE", "te1.key = 'sidetag'", "te1.value = 'true'"]
joins = [
"LEFT JOIN tag_extra AS te1 ON tag.id = te1.tag_id",
"LEFT JOIN tag_extra AS te2 ON tag.id = te2.tag_id",
"LEFT JOIN users ON CAST(te2.value AS INTEGER) = users.id",
]
clauses = [
"te1.active IS TRUE",
"te1.key = 'sidetag'",
"te1.value = 'true'",
"te2.active IS TRUE",
"te2.key = 'sidetag_user_id'"
]
if user_id:
joins.append("LEFT JOIN tag_extra AS te2 ON tag.id = te2.tag_id")
clauses.extend(
[
"te2.active IS TRUE",
"te2.key = 'sidetag_user_id'",
"te2.value = %(user_id)s",
]
)
clauses.append("te2.value = %(user_id)s")
if basetag_id:
joins.append("LEFT JOIN tag_inheritance ON tag.id = tag_inheritance.tag_id")
clauses.extend(
@ -199,8 +204,8 @@ def listSideTags(basetag=None, user=None, queryOpts=None):
query = QueryProcessor(
tables=["tag"],
clauses=clauses,
columns=["tag.id", "tag.name"],
aliases=["id", "name"],
columns=["tag.id", "tag.name", "te2.value", "users.name"],
aliases=["id", "name", "user_id", "user_name"],
joins=joins,
values={"basetag_id": basetag_id, "user_id": user_id},
opts=queryOpts,