diff --git a/gracedb/superevents/api/views.py b/gracedb/superevents/api/views.py
index d98f7d650f3d1e80d07a48b6af82cca98d16048d..afd5cf7ad11dd54663b2e8406fb0c0606b905485 100644
--- a/gracedb/superevents/api/views.py
+++ b/gracedb/superevents/api/views.py
@@ -14,7 +14,7 @@ from django.shortcuts import get_object_or_404
 
 from ..models import Superevent
 from ..utils import remove_tag_from_log, remove_event_from_superevent, \
-    remove_label_from_superevent
+    remove_label_from_superevent, get_superevent_by_date_id_or_404
 
 from core.vfile import VersionedFile
 from core.http import check_and_serve_file
@@ -70,10 +70,8 @@ class SupereventViewSet(viewsets.ModelViewSet):
     def get_object(self):
         queryset = self.filter_queryset(self.get_queryset())
         superevent_id = self.kwargs.get(self.lookup_field)
-        filter_kwargs = Superevent.get_filter_kwargs_for_date_id_lookup(
-            superevent_id)
 
-        obj = get_object_or_404(queryset, **filter_kwargs)
+        obj = get_superevent_by_date_id_or_404(self.request, superevent_id)
 
         # TODO: figure this out
         self.check_object_permissions(self.request, obj)
diff --git a/gracedb/superevents/utils.py b/gracedb/superevents/utils.py
index c74f4233ffb3c45669b6470978992a2f4ed17899..78679a45cf2b18c51ceade25f19ec10aced7477a 100644
--- a/gracedb/superevents/utils.py
+++ b/gracedb/superevents/utils.py
@@ -1,3 +1,5 @@
+from django.shortcuts import get_object_or_404
+
 from .models import Superevent, Log, Labelling
 from events.models import Event, EventLog, Tag
 from events.permission_utils import assign_default_perms
@@ -372,3 +374,15 @@ def get_or_create_tags(tag_name_list, display_name_list=[]):
         tag_list.append(tag)
 
     return tag_list
+
+
+# TODO: add permissions checking?
+def get_superevent_by_date_id_or_404(request, superevent_id):
+
+    filter_kwargs = Superevent.get_filter_kwargs_for_date_id_lookup(
+        superevent_id)
+
+    # TODO: filter queryset for user here
+    queryset = Superevent.objects.all()
+
+    return get_object_or_404(queryset, **filter_kwargs)
diff --git a/gracedb/superevents/views.py b/gracedb/superevents/views.py
index b1c3be37d48859c896e7fb68d747f168e208e0a9..5d6dfbcfd04ecefa2d3ccc7ee6cd9d808da77642 100644
--- a/gracedb/superevents/views.py
+++ b/gracedb/superevents/views.py
@@ -6,6 +6,7 @@ from django.views.decorators.http import require_POST
 
 from .models import Superevent, Log
 from .forms import LogCreateForm
+from .utils import get_superevent_by_date_id_or_404
 
 from core.vfile import VersionedFile
 from events.permission_utils import internal_user_required, is_external
@@ -19,10 +20,7 @@ logger = logging.getLogger(__name__)
 def webview(request, superevent_id):
 
     # Get superevent object
-    try:
-        superevent = Superevent.get_by_date_id(superevent_id)
-    except Superevent.DoesNotExist:
-        raise Http404("Superevent matching the given query does not exist.")
+    superevent = get_superevent_by_date_id_or_404(request, superevent_id)
 
     # Get context
     context = {}