Fix problem with the tests by dynamically setting the view model

instead of using a model @property or lookup method.
This commit is contained in:
Jeff Bradberry
2019-08-16 14:56:25 -04:00
parent edb9d6b16c
commit 2310413dc0
3 changed files with 8 additions and 28 deletions

View File

@@ -11,29 +11,15 @@ from rest_framework.response import Response
from awx.api import serializers
from awx.api.generics import APIView, GenericAPIView
from awx.api.permissions import WebhookKeyPermission
from awx.main.models import JobTemplate, WorkflowJobTemplate
# NOTE: The model class attribute for these views must be added
# dynamically when including urls/webhooks.py
class WebhookKeyView(GenericAPIView):
serializer_class = serializers.EmptySerializer
permission_classes = (WebhookKeyPermission,)
@property
def model(self):
qs_models = {
'job_templates': JobTemplate,
'workflow_job_templates': WorkflowJobTemplate,
}
model = qs_models.get(self.kwargs['model_kwarg'])
return model
def get_queryset(self):
model = self.model
if model:
return self.request.user.get_queryset(model)
# Provide a fallback do-nothing queryset so that get_object() has something to work with.
return JobTemplate.objects.none()
def get(self, request, *args, **kwargs):
obj = self.get_object()
@@ -55,15 +41,7 @@ class WebhookReceiverBase(APIView):
return super().dispatch(*args, **kwargs)
def get_queryset(self):
qs_models = {
'job_templates': JobTemplate,
'workflow_job_templates': WorkflowJobTemplate,
}
model = qs_models.get(self.kwargs['model_kwarg'])
if model is None:
raise PermissionDenied
return model.objects.filter(webhook_service=self.service)
return self.model.objects.filter(webhook_service=self.service)
def get_object(self):
queryset = self.get_queryset()