Bases: CommonModelViewSet
Source code in src/apps/core/views/nested_views.py
| class DatasetNestedViewSet(CommonModelViewSet):
access_policy = DatasetNestedAccessPolicy
def get_queryset(self):
if getattr(
self, "swagger_fake_view", None
): # kwargs are not available in swagger inspection
return self.serializer_class.Meta.model.available_objects.none()
dataset = self.get_dataset_instance()
return self.serializer_class.Meta.model.available_objects.filter(dataset=dataset)
def create(self, request, *args, **kwargs):
resp = super().create(request, *args, **kwargs)
self.get_dataset_instance().signal_update()
return resp
def update(self, request, *args, **kwargs):
resp = super().update(request, *args, **kwargs)
self.get_dataset_instance().signal_update()
return resp
def perform_create(self, serializer):
dataset = self.get_dataset_instance()
return serializer.save(dataset_id=dataset.id)
def get_serializer_context(self):
context = super().get_serializer_context()
if getattr(self, "swagger_fake_view", None):
# kwargs are not available in swagger inspection
return context
context["dataset"] = self.get_dataset_instance()
return context
def get_dataset_instance(self) -> Dataset:
dataset_qs = Dataset.available_objects.filter(id=self.kwargs["dataset_pk"])
dataset_qs = DatasetAccessPolicy().scope_queryset(self.request, dataset_qs)
return get_object_or_404(dataset_qs)
|