diff --git a/ayon_api/_api.py b/ayon_api/_api.py index 249ffb07f..d18d00e74 100644 --- a/ayon_api/_api.py +++ b/ayon_api/_api.py @@ -3245,6 +3245,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, @@ -3252,6 +3253,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. @@ -3267,6 +3270,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. @@ -3280,6 +3284,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. @@ -3294,6 +3300,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, @@ -3301,6 +3308,8 @@ def get_events( fields=fields, limit=limit, order=order, + first=first, + last=last, states=states, ) diff --git a/ayon_api/_api_helpers/events.py b/ayon_api/_api_helpers/events.py index 19e12c6b8..03aaf77d2 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,7 @@ def get_events( ("hasChildrenFilter", has_children), ("newerThanFilter", newer_than), ("olderThanFilter", older_than), + ("textFilter", text_filter), ): if filter_value is not None: filters[filter_key] = filter_value @@ -125,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 27719d389..100c0aa9d 100644 --- a/ayon_api/graphql_queries.py +++ b/ayon_api/graphql_queries.py @@ -593,6 +593,7 @@ 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!") statuses_filter_name = "statuses" if use_states: @@ -607,6 +608,7 @@ 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) nested_fields = fields_to_dict(set(fields))