diff --git a/hc/api/admin.py b/hc/api/admin.py index 3a2975ac..8b57463a 100644 --- a/hc/api/admin.py +++ b/hc/api/admin.py @@ -83,6 +83,20 @@ class MethodListFilter(admin.SimpleListFilter): return queryset +class KindListFilter(admin.SimpleListFilter): + title = "Kind" + parameter_name = 'kind' + kinds = ["start", "fail"] + + def lookups(self, request, model_admin): + return zip(self.kinds, self.kinds) + + def queryset(self, request, queryset): + if self.value(): + queryset = queryset.filter(kind=self.value()) + return queryset + + # Adapted from: https://djangosnippets.org/snippets/2593/ class LargeTablePaginator(Paginator): """ Overrides the count method to get an estimate instead of actual count @@ -129,7 +143,7 @@ class PingsAdmin(admin.ModelAdmin): list_display = ("id", "created", "owner", "email", "scheme", "method", "ua") list_filter = ("created", SchemeListFilter, MethodListFilter, - "start", "fail") + KindListFilter) paginator = LargeTablePaginator diff --git a/hc/api/models.py b/hc/api/models.py index 982a9949..f814fe78 100644 --- a/hc/api/models.py +++ b/hc/api/models.py @@ -230,13 +230,8 @@ class Check(models.Model): ping = Ping(owner=self) ping.n = self.n_pings - - if action == "start": - ping.start = True - ping.kind = "start" - elif action == "fail": - ping.fail = True - ping.kind = "fail" + if action in ("start", "fail"): + ping.kind = action ping.remote_addr = remote_addr ping.scheme = scheme diff --git a/hc/api/tests/test_ping.py b/hc/api/tests/test_ping.py index ff40452c..11b689e2 100644 --- a/hc/api/tests/test_ping.py +++ b/hc/api/tests/test_ping.py @@ -139,7 +139,6 @@ class PingTestCase(BaseTestCase): self.assertEqual(self.check.alert_after, None) ping = Ping.objects.get() - self.assertTrue(ping.fail) self.assertEqual(ping.kind, "fail") flip = Flip.objects.get() @@ -159,7 +158,6 @@ class PingTestCase(BaseTestCase): self.assertEqual(self.check.last_ping, last_ping) ping = Ping.objects.get() - self.assertTrue(ping.start) self.assertEqual(ping.kind, "start") def test_start_does_not_change_status_of_paused_check(self):