Skip to content

Commit 52d1165

Browse files
committed
Adding traditional date filter parameter names (date_from and date_to in addition to before/after).
1 parent 1d949ca commit 52d1165

File tree

3 files changed

+63
-24
lines changed

3 files changed

+63
-24
lines changed

c8y_api/model/_base.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,11 @@ def _prepare_query_params(
482482
device_id=None, agent_id=None, bulk_id=None, ids=None,
483483
text=None,
484484
before=None, after=None,
485+
date_from=None, date_to=None,
485486
created_before=None, created_after=None,
487+
created_from=None, created_to=None,
486488
updated_before=None, updated_after=None,
489+
last_updated_from=None, last_updated_to=None,
487490
min_age=None, max_age=None,
488491
reverse=None, page_size=None,
489492
page_number=None, # (must not be part of the prepared query)
@@ -492,24 +495,24 @@ def _prepare_query_params(
492495
# min_age/max_age should be timedelta objects that can be used for
493496
# alternative calculation of the before/after parameters
494497
if min_age:
495-
if before:
496-
raise ValueError("Only one of 'min_age' and 'before' query parameters must be used.")
498+
if before or date_to:
499+
raise ValueError("Only one of 'min_age', 'before' and 'date_to' query parameters must be used.")
497500
min_age = _DateUtil.ensure_timedelta(min_age)
498501
before = _DateUtil.now() - min_age
499502
if max_age:
500-
if after:
501-
raise ValueError("Only one of 'max_age' and 'after' query parameters must be used.")
503+
if after or date_from:
504+
raise ValueError("Only one of 'max_age', 'after' and 'date_from' query parameters must be used.")
502505
max_age = _DateUtil.ensure_timedelta(max_age)
503506
after = _DateUtil.now() - max_age
504507

505508
# before/after can also be datetime objects,
506509
# if so they need to be timezone aware
507-
before = _DateUtil.ensure_timestring(before)
508-
after = _DateUtil.ensure_timestring(after)
509-
created_before = _DateUtil.ensure_timestring(created_before)
510-
created_after = _DateUtil.ensure_timestring(created_after)
511-
updated_before = _DateUtil.ensure_timestring(updated_before)
512-
updated_after = _DateUtil.ensure_timestring(updated_after)
510+
date_from = _DateUtil.ensure_timestring(date_from) or _DateUtil.ensure_timestring(after)
511+
date_to = _DateUtil.ensure_timestring(date_to) or _DateUtil.ensure_timestring(before)
512+
created_from = _DateUtil.ensure_timestring(created_from) or _DateUtil.ensure_timestring(created_after)
513+
created_to = _DateUtil.ensure_timestring(created_to) or _DateUtil.ensure_timestring(created_before)
514+
updated_from = _DateUtil.ensure_timestring(last_updated_from) or _DateUtil.ensure_timestring(updated_after)
515+
updated_to = _DateUtil.ensure_timestring(last_updated_to) or _DateUtil.ensure_timestring(updated_before)
513516

514517
params = {
515518
'type': type,
@@ -525,12 +528,12 @@ def _prepare_query_params(
525528
'text': text,
526529
'ids': ','.join(ids) if ids else None,
527530
'bulkOperationId': bulk_id,
528-
'dateFrom': after,
529-
'dateTo': before,
530-
'createdFrom': created_after,
531-
'createdTo': created_before,
532-
'lastUpdatedFrom': updated_after,
533-
'lastUpdatedTo': updated_before,
531+
'dateFrom': date_from,
532+
'dateTo': date_to,
533+
'createdFrom': created_from,
534+
'createdTo': created_to,
535+
'lastUpdatedFrom': updated_from,
536+
'lastUpdatedTo': updated_to,
534537
'revert': str(reverse) if reverse else None,
535538
'pageSize': page_size}
536539
params = {k: v for k, v in params.items() if v}

c8y_api/model/alarms.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,11 @@ def get(self, id: str) -> Alarm: # noqa (id)
245245
def select(self, type: str = None, source: str = None, fragment: str = None, # noqa (type)
246246
status: str = None, severity: str = None, resolved: str = None,
247247
before: str | datetime = None, after: str | datetime = None,
248+
date_from: str | datetime = None, date_to: str | datetime = None,
248249
created_before: str | datetime = None, created_after: str | datetime = None,
250+
created_from: str | datetime = None, created_to: str | datetime = None,
249251
updated_before: str | datetime = None, updated_after: str | datetime = None,
252+
last_updated_from: str | datetime = None, last_updated_to: str | datetime = None,
250253
min_age: timedelta = None, max_age: timedelta = None,
251254
reverse: bool = False, limit: int = None,
252255
page_size: int = 1000, page_number: int = None) -> Generator[Alarm]:
@@ -280,6 +283,12 @@ def select(self, type: str = None, source: str = None, fragment: str = None, # n
280283
Only alarms changed at a time after this date are returned.
281284
min_age (timedelta): Matches only alarms of at least this age
282285
max_age (timedelta): Matches only alarms with at most this age
286+
date_from (str|datetime): Same as `after`
287+
date_to (str|datetime): Same as `before`
288+
created_from (str|datetime): Same as `created_after`
289+
created_to(str|datetime): Same as `created_before`
290+
last_updated_from (str|datetime): Same as `updated_after`
291+
last_updated_to (str|datetime): Same as `updated_before`
283292
reverse (bool): Invert the order of results, starting with the
284293
most recent one
285294
limit (int): Limit the number of results to this number.
@@ -294,17 +303,23 @@ def select(self, type: str = None, source: str = None, fragment: str = None, # n
294303
base_query = self._build_base_query(type=type, source=source, fragment=fragment,
295304
status=status, severity=severity, resolved=resolved,
296305
before=before, after=after,
306+
date_from=date_from, date_to=date_to,
297307
created_before=created_before, created_after=created_after,
308+
created_from=created_from, created_to=created_to,
298309
updated_before=updated_before, updated_after=updated_after,
310+
last_updated_from=last_updated_from, last_updated_to=last_updated_to,
299311
min_age=min_age, max_age=max_age,
300312
reverse=reverse, page_size=page_size)
301313
return super()._iterate(base_query, page_number, limit, Alarm.from_json)
302314

303315
def get_all(self, type: str = None, source: str = None, fragment: str = None, # noqa (type)
304316
status: str = None, severity: str = None, resolved: str = None,
305317
before: str | datetime = None, after: str | datetime = None,
318+
date_from: str | datetime = None, date_to: str | datetime = None,
306319
created_before: str | datetime = None, created_after: str | datetime = None,
320+
created_from: str | datetime = None, created_to: str | datetime = None,
307321
updated_before: str | datetime = None, updated_after: str | datetime = None,
322+
last_updated_from: str | datetime = None, last_updated_to: str | datetime = None,
308323
min_age: timedelta = None, max_age: timedelta = None,
309324
reverse: bool = False, limit: int = None,
310325
page_size: int = 1000, page_number: int = None) -> List[Alarm]:
@@ -321,15 +336,18 @@ def get_all(self, type: str = None, source: str = None, fragment: str = None, #
321336
return list(self.select(type=type, source=source, fragment=fragment,
322337
status=status, severity=severity, resolved=resolved,
323338
before=before, after=after,
339+
date_from=date_from, date_to=date_to,
324340
created_before=created_before, created_after=created_after,
341+
created_from=created_from, created_to=created_to,
325342
updated_before=updated_before, updated_after=updated_after,
343+
last_updated_from=last_updated_from, last_updated_to=last_updated_to,
326344
min_age=min_age, max_age=max_age, reverse=reverse,
327345
limit=limit, page_size=page_size, page_number=page_number))
328346

329347
def count(self, type: str = None, source: str = None, fragment: str = None, # noqa (type)
330-
status: str = None, severity: str = None, resolved: str = None,
331-
before: str | datetime = None, after: str | datetime = None,
332-
min_age: timedelta = None, max_age: timedelta = None) -> int:
348+
status: str = None, severity: str = None, resolved: str = None,
349+
before: str | datetime = None, after: str | datetime = None,
350+
min_age: timedelta = None, max_age: timedelta = None) -> int:
333351
"""Count the number of certain alarms.
334352
335353
Args:

c8y_api/model/events.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ def download_attachment(self) -> bytes:
174174
super()._assert_id()
175175
return self.c8y.get_file(self._build_attachment_path())
176176

177-
def create_attachment(self, file: str|BinaryIO, content_type: str = None) -> dict:
177+
def create_attachment(self, file: str | BinaryIO, content_type: str = None) -> dict:
178178
"""Create the binary attachment.
179179
180180
Args:
@@ -190,7 +190,7 @@ def create_attachment(self, file: str|BinaryIO, content_type: str = None) -> dic
190190
return self.c8y.post_file(self._build_attachment_path(), file,
191191
accept='application/json', content_type=content_type)
192192

193-
def update_attachment(self, file: str|BinaryIO, content_type: str = None) -> dict:
193+
def update_attachment(self, file: str | BinaryIO, content_type: str = None) -> dict:
194194
"""Update the binary attachment.
195195
196196
Args:
@@ -251,8 +251,11 @@ def get(self, event_id: str) -> Event: # noqa (id)
251251

252252
def select(self, type: str = None, source: str = None, fragment: str = None, # noqa (type)
253253
before: str | datetime = None, after: str | datetime = None,
254+
date_from: str | datetime = None, date_to: str | datetime = None,
254255
created_before: str | datetime = None, created_after: str | datetime = None,
256+
created_from: str | datetime = None, created_to: str | datetime = None,
255257
updated_before: str | datetime = None, updated_after: str | datetime = None,
258+
last_updated_from: str | datetime = None, last_updated_to: str | datetime = None,
256259
min_age: timedelta = None, max_age: timedelta = None,
257260
reverse: bool = False, limit: int = None,
258261
page_size: int = 1000, page_number: int = None) -> Generator[Event]:
@@ -283,6 +286,12 @@ def select(self, type: str = None, source: str = None, fragment: str = None, #
283286
Only events changed at a time after this date are returned.
284287
min_age (timedelta): Minimum age for selected events.
285288
max_age (timedelta): Maximum age for selected events.
289+
date_from (str|datetime): Same as `after`
290+
date_to (str|datetime): Same as `before`
291+
created_from (str|datetime): Same as `created_after`
292+
created_to(str|datetime): Same as `created_before`
293+
last_updated_from (str|datetime): Same as `updated_after`
294+
last_updated_to (str|datetime): Same as `updated_before`
286295
reverse (bool): Invert the order of results, starting with the
287296
most recent one.
288297
limit (int): Limit the number of results to this number.
@@ -296,16 +305,22 @@ def select(self, type: str = None, source: str = None, fragment: str = None, #
296305
"""
297306
base_query = self._build_base_query(type=type, source=source, fragment=fragment,
298307
before=before, after=after,
308+
date_from=date_from, date_to=date_to,
299309
created_before=created_before, created_after=created_after,
310+
created_from=created_from, created_to=created_to,
300311
updated_before=updated_before, updated_after=updated_after,
312+
last_updated_from=last_updated_from, last_updated_to=last_updated_to,
301313
min_age=min_age, max_age=max_age,
302314
reverse=reverse, page_size=page_size)
303315
return super()._iterate(base_query, page_number, limit, Event.from_json)
304316

305317
def get_all(self, type: str = None, source: str = None, fragment: str = None, # noqa (type)
306318
before: str | datetime = None, after: str | datetime = None,
319+
date_from: str | datetime = None, date_to: str | datetime = None,
307320
created_before: str | datetime = None, created_after: str | datetime = None,
321+
created_from: str | datetime = None, created_to: str | datetime = None,
308322
updated_before: str | datetime = None, updated_after: str | datetime = None,
323+
last_updated_from: str | datetime = None, last_updated_to: str | datetime = None,
309324
min_age: timedelta = None, max_age: timedelta = None,
310325
reverse: bool = False, limit: int = None,
311326
page_size: int = 1000, page_number: int = None) -> List[Event]:
@@ -321,8 +336,11 @@ def get_all(self, type: str = None, source: str = None, fragment: str = None, #
321336
"""
322337
return list(self.select(type=type, source=source, fragment=fragment,
323338
before=before, after=after,
339+
date_from=date_from, date_to=date_to,
324340
created_before=created_before, created_after=created_after,
341+
created_from=created_from, created_to=created_to,
325342
updated_before=updated_before, updated_after=updated_after,
343+
last_updated_from=last_updated_from, last_updated_to=last_updated_to,
326344
min_age=min_age, max_age=max_age,
327345
reverse=reverse, limit=limit, page_size=page_size, page_number=page_number))
328346

@@ -348,7 +366,7 @@ def update(self, *events: Event):
348366
"""
349367
super()._update(Event.to_diff_json, *events)
350368

351-
def apply_to(self, event: Event|dict, *event_ids: str):
369+
def apply_to(self, event: Event | dict, *event_ids: str):
352370
"""Apply changes made to a single instance to other objects in the
353371
database.
354372
@@ -388,7 +406,7 @@ def delete_by(self, type: str = None, source: str = None, fragment: str = None,
388406
query = base_query[:base_query.rindex('&')]
389407
self.c8y.delete(query)
390408

391-
def create_attachment(self, event_id: str, file: str|BinaryIO, content_type: str = None) -> dict:
409+
def create_attachment(self, event_id: str, file: str | BinaryIO, content_type: str = None) -> dict:
392410
"""Add an event's binary attachment.
393411
394412
Args:
@@ -403,7 +421,7 @@ def create_attachment(self, event_id: str, file: str|BinaryIO, content_type: str
403421
return self.c8y.post_file(self.build_attachment_path(event_id), file,
404422
accept='application/json', content_type=content_type)
405423

406-
def update_attachment(self, event_id: str, file: str|BinaryIO, content_type: str = None) -> dict:
424+
def update_attachment(self, event_id: str, file: str | BinaryIO, content_type: str = None) -> dict:
407425
"""Update an event's binary attachment.
408426
409427
Args:

0 commit comments

Comments
 (0)