Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ayon_api/_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -706,6 +706,7 @@ def get_server_version_tuple() -> Tuple[int, int, int, str, str]:
def get_users(
project_name: Optional[str] = None,
usernames: Optional[Iterable[str]] = None,
emails: Optional[Iterable[str]] = None,
fields: Optional[Iterable[str]] = None,
) -> Generator[Dict[str, Any], None, None]:
"""Get Users.
Expand All @@ -716,6 +717,7 @@ def get_users(
Args:
project_name (Optional[str]): Project name.
usernames (Optional[Iterable[str]]): Filter by usernames.
emails (Optional[Iterable[str]]): Filter by emails.
fields (Optional[Iterable[str]]): Fields to be queried
for users.

Expand All @@ -727,6 +729,7 @@ def get_users(
return con.get_users(
project_name=project_name,
usernames=usernames,
emails=emails,
fields=fields,
)

Expand Down
2 changes: 2 additions & 0 deletions ayon_api/graphql_queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -619,10 +619,12 @@ def events_graphql_query(fields, order, use_states=False):
def users_graphql_query(fields):
query = GraphQlQuery("Users")
names_var = query.add_variable("userNames", "[String!]")
emails_var = query.add_variable("emails", "[String!]")
project_name_var = query.add_variable("projectName", "String!")

users_field = query.add_field_with_edges("users")
users_field.set_filter("names", names_var)
users_field.set_filter("emails", emails_var)
users_field.set_filter("projectName", project_name_var)

nested_fields = fields_to_dict(set(fields))
Expand Down
18 changes: 18 additions & 0 deletions ayon_api/server_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1143,6 +1143,7 @@ def get_users(
self,
project_name: Optional[str] = None,
usernames: Optional[Iterable[str]] = None,
emails: Optional[Iterable[str]] = None,
fields: Optional[Iterable[str]] = None,
) -> Generator[Dict[str, Any], None, None]:
"""Get Users.
Expand All @@ -1153,6 +1154,7 @@ def get_users(
Args:
project_name (Optional[str]): Project name.
usernames (Optional[Iterable[str]]): Filter by usernames.
emails (Optional[Iterable[str]]): Filter by emails.
fields (Optional[Iterable[str]]): Fields to be queried
for users.

Expand All @@ -1167,6 +1169,22 @@ def get_users(
return
filters["userNames"] = list(usernames)

if emails is not None:
emails = set(emails)
if not emails:
return

major, minor, patch, _, _ = self.server_version_tuple
emails_filter_available = (major, minor, patch) > (1, 7, 3)
if not emails_filter_available:
server_version = self.get_server_version()
raise ValueError(
"Filtering by emails is not supported by"
f" server version {server_version}."
)

filters["emails"] = list(emails)

if project_name is not None:
filters["projectName"] = project_name

Expand Down