From 685f5650a77d009f3b1111b89b9ac0cff07078b5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:15:17 +0200 Subject: [PATCH 1/3] added text filter and first or last filter options --- ayon_api/_api_helpers/events.py | 9 +++++++++ ayon_api/graphql_queries.py | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/ayon_api/_api_helpers/events.py b/ayon_api/_api_helpers/events.py index 19e12c6b8..516f54617 100644 --- a/ayon_api/_api_helpers/events.py +++ b/ayon_api/_api_helpers/events.py @@ -40,6 +40,7 @@ def get_events( project_names: Optional[Iterable[str]] = None, statuses: Optional[Iterable[EventStatus]] = None, users: Optional[Iterable[str]] = None, + text_filter: Optional[str] = None, include_logs: Optional[bool] = None, has_children: Optional[bool] = None, newer_than: Optional[str] = None, @@ -47,6 +48,8 @@ def get_events( fields: Optional[Iterable[str]] = None, limit: Optional[int] = None, order: Optional[SortOrder] = None, + first: Optional[int] = None, + last: Optional[int] = None, states: Optional[Iterable[str]] = None, ) -> Generator[dict[str, Any], None, None]: """Get events from server with filtering options. @@ -62,6 +65,7 @@ def get_events( statuses (Optional[Iterable[EventStatus]]): Filtering by statuses. users (Optional[Iterable[str]]): Filtering by users who created/triggered an event. + text_filter (Optional[str]): Filtering by text in event payload. include_logs (Optional[bool]): Query also log events. has_children (Optional[bool]): Event is with/without children events. If 'None' then all events are returned, default. @@ -75,6 +79,8 @@ def get_events( order (Optional[SortOrder]): Order events in ascending or descending order. It is recommended to set 'limit' when used descending. + first (Optional[int]): Get first n events. + last (Optional[int]): Get last n events. states (Optional[Iterable[str]]): DEPRECATED Filtering by states. Use 'statuses' instead. @@ -111,6 +117,9 @@ def get_events( ("hasChildrenFilter", has_children), ("newerThanFilter", newer_than), ("olderThanFilter", older_than), + ("textFilter", text_filter), + ("firstFilter", first), + ("lastFilter", last), ): if filter_value is not None: filters[filter_key] = filter_value diff --git a/ayon_api/graphql_queries.py b/ayon_api/graphql_queries.py index 27719d389..6d299c674 100644 --- a/ayon_api/graphql_queries.py +++ b/ayon_api/graphql_queries.py @@ -593,6 +593,9 @@ def events_graphql_query(fields, order, use_states=False): has_children_var = query.add_variable("hasChildrenFilter", "Boolean!") newer_than_var = query.add_variable("newerThanFilter", "String!") older_than_var = query.add_variable("olderThanFilter", "String!") + text_filter_var = query.add_variable("textFilter", "String!") + first_n_var = query.add_variable("firstFilter", "Int!") + last_n_var = query.add_variable("lastFilter", "Int!") statuses_filter_name = "statuses" if use_states: @@ -607,6 +610,9 @@ def events_graphql_query(fields, order, use_states=False): events_field.set_filter("hasChildren", has_children_var) events_field.set_filter("newerThan", newer_than_var) events_field.set_filter("olderThan", older_than_var) + events_field.set_filter("filter", text_filter_var) + events_field.set_filter("first", first_n_var) + events_field.set_filter("last", last_n_var) nested_fields = fields_to_dict(set(fields)) From cfd51f022e95e77f863af03eb8bb691ef4511a51 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:56:48 +0200 Subject: [PATCH 2/3] update public api --- ayon_api/_api.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ayon_api/_api.py b/ayon_api/_api.py index a00bb04c0..f323a82ca 100644 --- a/ayon_api/_api.py +++ b/ayon_api/_api.py @@ -3248,6 +3248,7 @@ def get_events( project_names: Optional[Iterable[str]] = None, statuses: Optional[Iterable[EventStatus]] = None, users: Optional[Iterable[str]] = None, + text_filter: Optional[str] = None, include_logs: Optional[bool] = None, has_children: Optional[bool] = None, newer_than: Optional[str] = None, @@ -3255,6 +3256,8 @@ def get_events( fields: Optional[Iterable[str]] = None, limit: Optional[int] = None, order: Optional[SortOrder] = None, + first: Optional[int] = None, + last: Optional[int] = None, states: Optional[Iterable[str]] = None, ) -> Generator[dict[str, Any], None, None]: """Get events from server with filtering options. @@ -3270,6 +3273,7 @@ def get_events( statuses (Optional[Iterable[EventStatus]]): Filtering by statuses. users (Optional[Iterable[str]]): Filtering by users who created/triggered an event. + text_filter (Optional[str]): Filtering by text in event payload. include_logs (Optional[bool]): Query also log events. has_children (Optional[bool]): Event is with/without children events. If 'None' then all events are returned, default. @@ -3283,6 +3287,8 @@ def get_events( order (Optional[SortOrder]): Order events in ascending or descending order. It is recommended to set 'limit' when used descending. + first (Optional[int]): Get first n events. + last (Optional[int]): Get last n events. states (Optional[Iterable[str]]): DEPRECATED Filtering by states. Use 'statuses' instead. @@ -3297,6 +3303,7 @@ def get_events( project_names=project_names, statuses=statuses, users=users, + text_filter=text_filter, include_logs=include_logs, has_children=has_children, newer_than=newer_than, @@ -3304,6 +3311,8 @@ def get_events( fields=fields, limit=limit, order=order, + first=first, + last=last, states=states, ) From f0d7d21a5213c80458104c367886a4a4150a8941 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:21:14 +0200 Subject: [PATCH 3/3] fix first and last fitlers --- ayon_api/_api_helpers/events.py | 10 ++++++++-- ayon_api/graphql_queries.py | 4 ---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ayon_api/_api_helpers/events.py b/ayon_api/_api_helpers/events.py index 516f54617..03aaf77d2 100644 --- a/ayon_api/_api_helpers/events.py +++ b/ayon_api/_api_helpers/events.py @@ -118,8 +118,6 @@ def get_events( ("newerThanFilter", newer_than), ("olderThanFilter", older_than), ("textFilter", text_filter), - ("firstFilter", first), - ("lastFilter", last), ): if filter_value is not None: filters[filter_key] = filter_value @@ -134,6 +132,14 @@ def get_events( for attr, filter_value in filters.items(): query.set_variable_value(attr, filter_value) + events_field = query.get_field_by_path("events") + if last is not None: + events_field.set_limit(last) + events_field.set_order(SortOrder.descending) + elif first is not None: + events_field.set_limit(first) + events_field.set_order(SortOrder.ascending) + if limit: events_field = query.get_field_by_path("events") events_field.set_limit(limit) diff --git a/ayon_api/graphql_queries.py b/ayon_api/graphql_queries.py index 6d299c674..100c0aa9d 100644 --- a/ayon_api/graphql_queries.py +++ b/ayon_api/graphql_queries.py @@ -594,8 +594,6 @@ def events_graphql_query(fields, order, use_states=False): newer_than_var = query.add_variable("newerThanFilter", "String!") older_than_var = query.add_variable("olderThanFilter", "String!") text_filter_var = query.add_variable("textFilter", "String!") - first_n_var = query.add_variable("firstFilter", "Int!") - last_n_var = query.add_variable("lastFilter", "Int!") statuses_filter_name = "statuses" if use_states: @@ -611,8 +609,6 @@ def events_graphql_query(fields, order, use_states=False): events_field.set_filter("newerThan", newer_than_var) events_field.set_filter("olderThan", older_than_var) events_field.set_filter("filter", text_filter_var) - events_field.set_filter("first", first_n_var) - events_field.set_filter("last", last_n_var) nested_fields = fields_to_dict(set(fields))