Skip to content

Commit f7fef5e

Browse files
authored
Merge pull request #318 from ynput/enhancement/events-graphql-update
Events: More filter options
2 parents df7159f + f0d7d21 commit f7fef5e

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

ayon_api/_api.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3245,13 +3245,16 @@ def get_events(
32453245
project_names: Optional[Iterable[str]] = None,
32463246
statuses: Optional[Iterable[EventStatus]] = None,
32473247
users: Optional[Iterable[str]] = None,
3248+
text_filter: Optional[str] = None,
32483249
include_logs: Optional[bool] = None,
32493250
has_children: Optional[bool] = None,
32503251
newer_than: Optional[str] = None,
32513252
older_than: Optional[str] = None,
32523253
fields: Optional[Iterable[str]] = None,
32533254
limit: Optional[int] = None,
32543255
order: Optional[SortOrder] = None,
3256+
first: Optional[int] = None,
3257+
last: Optional[int] = None,
32553258
states: Optional[Iterable[str]] = None,
32563259
) -> Generator[dict[str, Any], None, None]:
32573260
"""Get events from server with filtering options.
@@ -3267,6 +3270,7 @@ def get_events(
32673270
statuses (Optional[Iterable[EventStatus]]): Filtering by statuses.
32683271
users (Optional[Iterable[str]]): Filtering by users
32693272
who created/triggered an event.
3273+
text_filter (Optional[str]): Filtering by text in event payload.
32703274
include_logs (Optional[bool]): Query also log events.
32713275
has_children (Optional[bool]): Event is with/without children
32723276
events. If 'None' then all events are returned, default.
@@ -3280,6 +3284,8 @@ def get_events(
32803284
order (Optional[SortOrder]): Order events in ascending
32813285
or descending order. It is recommended to set 'limit'
32823286
when used descending.
3287+
first (Optional[int]): Get first n events.
3288+
last (Optional[int]): Get last n events.
32833289
states (Optional[Iterable[str]]): DEPRECATED Filtering by states.
32843290
Use 'statuses' instead.
32853291
@@ -3294,13 +3300,16 @@ def get_events(
32943300
project_names=project_names,
32953301
statuses=statuses,
32963302
users=users,
3303+
text_filter=text_filter,
32973304
include_logs=include_logs,
32983305
has_children=has_children,
32993306
newer_than=newer_than,
33003307
older_than=older_than,
33013308
fields=fields,
33023309
limit=limit,
33033310
order=order,
3311+
first=first,
3312+
last=last,
33043313
states=states,
33053314
)
33063315

ayon_api/_api_helpers/events.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,16 @@ def get_events(
4040
project_names: Optional[Iterable[str]] = None,
4141
statuses: Optional[Iterable[EventStatus]] = None,
4242
users: Optional[Iterable[str]] = None,
43+
text_filter: Optional[str] = None,
4344
include_logs: Optional[bool] = None,
4445
has_children: Optional[bool] = None,
4546
newer_than: Optional[str] = None,
4647
older_than: Optional[str] = None,
4748
fields: Optional[Iterable[str]] = None,
4849
limit: Optional[int] = None,
4950
order: Optional[SortOrder] = None,
51+
first: Optional[int] = None,
52+
last: Optional[int] = None,
5053
states: Optional[Iterable[str]] = None,
5154
) -> Generator[dict[str, Any], None, None]:
5255
"""Get events from server with filtering options.
@@ -62,6 +65,7 @@ def get_events(
6265
statuses (Optional[Iterable[EventStatus]]): Filtering by statuses.
6366
users (Optional[Iterable[str]]): Filtering by users
6467
who created/triggered an event.
68+
text_filter (Optional[str]): Filtering by text in event payload.
6569
include_logs (Optional[bool]): Query also log events.
6670
has_children (Optional[bool]): Event is with/without children
6771
events. If 'None' then all events are returned, default.
@@ -75,6 +79,8 @@ def get_events(
7579
order (Optional[SortOrder]): Order events in ascending
7680
or descending order. It is recommended to set 'limit'
7781
when used descending.
82+
first (Optional[int]): Get first n events.
83+
last (Optional[int]): Get last n events.
7884
states (Optional[Iterable[str]]): DEPRECATED Filtering by states.
7985
Use 'statuses' instead.
8086
@@ -111,6 +117,7 @@ def get_events(
111117
("hasChildrenFilter", has_children),
112118
("newerThanFilter", newer_than),
113119
("olderThanFilter", older_than),
120+
("textFilter", text_filter),
114121
):
115122
if filter_value is not None:
116123
filters[filter_key] = filter_value
@@ -125,6 +132,14 @@ def get_events(
125132
for attr, filter_value in filters.items():
126133
query.set_variable_value(attr, filter_value)
127134

135+
events_field = query.get_field_by_path("events")
136+
if last is not None:
137+
events_field.set_limit(last)
138+
events_field.set_order(SortOrder.descending)
139+
elif first is not None:
140+
events_field.set_limit(first)
141+
events_field.set_order(SortOrder.ascending)
142+
128143
if limit:
129144
events_field = query.get_field_by_path("events")
130145
events_field.set_limit(limit)

ayon_api/graphql_queries.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,7 @@ def events_graphql_query(fields, order, use_states=False):
593593
has_children_var = query.add_variable("hasChildrenFilter", "Boolean!")
594594
newer_than_var = query.add_variable("newerThanFilter", "String!")
595595
older_than_var = query.add_variable("olderThanFilter", "String!")
596+
text_filter_var = query.add_variable("textFilter", "String!")
596597

597598
statuses_filter_name = "statuses"
598599
if use_states:
@@ -607,6 +608,7 @@ def events_graphql_query(fields, order, use_states=False):
607608
events_field.set_filter("hasChildren", has_children_var)
608609
events_field.set_filter("newerThan", newer_than_var)
609610
events_field.set_filter("olderThan", older_than_var)
611+
events_field.set_filter("filter", text_filter_var)
610612

611613
nested_fields = fields_to_dict(set(fields))
612614

0 commit comments

Comments
 (0)