Skip to content

Commit 0f9aba4

Browse files
authored
Merge pull request #38 from al4/master
Add ability to filter by none/null
2 parents 7c0ae2f + f49bdd0 commit 0f9aba4

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

orlo/queries.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,17 @@ def releases(**kwargs):
183183
if any(field.startswith('package_') for field in kwargs.keys()) \
184184
or "status" in kwargs.keys():
185185
# Package attributes need the join, as does status as it's really a
186-
# package
187-
# attribute
186+
# package attribute
188187
query = db.session.query(Release).join(Package)
189188
else:
190189
# No need to join on package if none of our params need it
191190
query = db.session.query(Release)
192191

192+
for key in kwargs.keys():
193+
if isinstance(kwargs[key], bool):
194+
continue
195+
if kwargs[key].lower() in ['null', 'none']:
196+
kwargs[key] = None
193197
try:
194198
query = apply_filters(query, kwargs)
195199
except AttributeError as e:

tests/test_contract.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -487,8 +487,12 @@ def _get_releases_time_filter(self, field, finished=False):
487487
yesterday = (now - timedelta(days=1)).strftime(t_format)
488488
tomorrow = (now + timedelta(days=1)).strftime(t_format)
489489

490-
r_yesterday = self._get_releases(filters=['{}={}'.format(field, yesterday)])
491-
r_tomorrow = self._get_releases(filters=['{}={}'.format(field, tomorrow)])
490+
r_yesterday = self._get_releases(
491+
filters=['{}={}'.format(field, yesterday)]
492+
)
493+
r_tomorrow = self._get_releases(
494+
filters=['{}={}'.format(field, tomorrow)]
495+
)
492496

493497
return r_yesterday, r_tomorrow
494498

@@ -501,6 +505,15 @@ def test_get_release_filter_stime_before(self):
501505
self.assertEqual(3, len(r_tomorrow['releases']))
502506
self.assertEqual(0, len(r_yesterday['releases']))
503507

508+
def test_get_release_filter_ftime_null(self):
509+
"""
510+
Filter on releases that don't have a finish time
511+
"""
512+
releases = self._get_releases(
513+
filters=['{}={}'.format('ftime', 'null')]
514+
)
515+
self.assertEqual(len(releases['releases']), 0)
516+
504517
def test_get_release_filter_stime_after(self):
505518
"""
506519
Filter on releases that started after a particular time

0 commit comments

Comments
 (0)