mirror of
https://github.com/ansible/awx.git
synced 2026-05-14 12:57:40 -02:30
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:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
|
|
||||||
|
from awx.main.models import JobTemplate
|
||||||
from awx.api.views import (
|
from awx.api.views import (
|
||||||
JobTemplateList,
|
JobTemplateList,
|
||||||
JobTemplateDetail,
|
JobTemplateDetail,
|
||||||
@@ -45,7 +46,7 @@ urls = [
|
|||||||
url(r'^(?P<pk>[0-9]+)/object_roles/$', JobTemplateObjectRolesList.as_view(), name='job_template_object_roles_list'),
|
url(r'^(?P<pk>[0-9]+)/object_roles/$', JobTemplateObjectRolesList.as_view(), name='job_template_object_roles_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/labels/$', JobTemplateLabelList.as_view(), name='job_template_label_list'),
|
url(r'^(?P<pk>[0-9]+)/labels/$', JobTemplateLabelList.as_view(), name='job_template_label_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/copy/$', JobTemplateCopy.as_view(), name='job_template_copy'),
|
url(r'^(?P<pk>[0-9]+)/copy/$', JobTemplateCopy.as_view(), name='job_template_copy'),
|
||||||
url(r'^(?P<pk>[0-9]+)/', include('awx.api.urls.webhooks'), {'model_kwarg': 'job_templates'}),
|
url(r'^(?P<pk>[0-9]+)/', include('awx.api.urls.webhooks'), {'model_kwarg': 'job_templates', 'model': JobTemplate}),
|
||||||
]
|
]
|
||||||
|
|
||||||
__all__ = ['urls']
|
__all__ = ['urls']
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
|
|
||||||
|
from awx.main.models import WorkflowJobTemplate
|
||||||
from awx.api.views import (
|
from awx.api.views import (
|
||||||
WorkflowJobTemplateList,
|
WorkflowJobTemplateList,
|
||||||
WorkflowJobTemplateDetail,
|
WorkflowJobTemplateDetail,
|
||||||
@@ -44,7 +45,7 @@ urls = [
|
|||||||
url(r'^(?P<pk>[0-9]+)/access_list/$', WorkflowJobTemplateAccessList.as_view(), name='workflow_job_template_access_list'),
|
url(r'^(?P<pk>[0-9]+)/access_list/$', WorkflowJobTemplateAccessList.as_view(), name='workflow_job_template_access_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/object_roles/$', WorkflowJobTemplateObjectRolesList.as_view(), name='workflow_job_template_object_roles_list'),
|
url(r'^(?P<pk>[0-9]+)/object_roles/$', WorkflowJobTemplateObjectRolesList.as_view(), name='workflow_job_template_object_roles_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/labels/$', WorkflowJobTemplateLabelList.as_view(), name='workflow_job_template_label_list'),
|
url(r'^(?P<pk>[0-9]+)/labels/$', WorkflowJobTemplateLabelList.as_view(), name='workflow_job_template_label_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/', include('awx.api.urls.webhooks'), {'model_kwarg': 'workflow_job_templates'}),
|
url(r'^(?P<pk>[0-9]+)/', include('awx.api.urls.webhooks'), {'model_kwarg': 'workflow_job_templates', 'model': WorkflowJobTemplate}),
|
||||||
]
|
]
|
||||||
|
|
||||||
__all__ = ['urls']
|
__all__ = ['urls']
|
||||||
|
|||||||
@@ -11,29 +11,15 @@ from rest_framework.response import Response
|
|||||||
from awx.api import serializers
|
from awx.api import serializers
|
||||||
from awx.api.generics import APIView, GenericAPIView
|
from awx.api.generics import APIView, GenericAPIView
|
||||||
from awx.api.permissions import WebhookKeyPermission
|
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):
|
class WebhookKeyView(GenericAPIView):
|
||||||
serializer_class = serializers.EmptySerializer
|
serializer_class = serializers.EmptySerializer
|
||||||
permission_classes = (WebhookKeyPermission,)
|
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):
|
def get(self, request, *args, **kwargs):
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
|
|
||||||
@@ -55,15 +41,7 @@ class WebhookReceiverBase(APIView):
|
|||||||
return super().dispatch(*args, **kwargs)
|
return super().dispatch(*args, **kwargs)
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
qs_models = {
|
return self.model.objects.filter(webhook_service=self.service)
|
||||||
'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)
|
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
queryset = self.get_queryset()
|
queryset = self.get_queryset()
|
||||||
|
|||||||
Reference in New Issue
Block a user