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 = {}