mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 09:27:36 -02:30
Hook in the webhook receiver views into the urlconf
This commit is contained in:
@@ -137,6 +137,8 @@ v2_urls = [
|
|||||||
url(r'^activity_stream/', include(activity_stream_urls)),
|
url(r'^activity_stream/', include(activity_stream_urls)),
|
||||||
url(r'^workflow_approval_templates/', include(workflow_approval_template_urls)),
|
url(r'^workflow_approval_templates/', include(workflow_approval_template_urls)),
|
||||||
url(r'^workflow_approvals/', include(workflow_approval_urls)),
|
url(r'^workflow_approvals/', include(workflow_approval_urls)),
|
||||||
|
url(r'^(?P<model_kwarg>job_templates|workflow_job_templates)/(?P<pk>[0-9]+)/',
|
||||||
|
include('awx.api.urls.webhooks')),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
14
awx/api/urls/webhooks.py
Normal file
14
awx/api/urls/webhooks.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from django.conf.urls import url
|
||||||
|
|
||||||
|
from awx.api.views import (
|
||||||
|
GithubWebhookReceiver,
|
||||||
|
GitlabWebhookReceiver,
|
||||||
|
BitbucketWebhookReceiver,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
url(r'^github/$', GithubWebhookReceiver.as_view(), name='webhook_receiver_github'),
|
||||||
|
url(r'^gitlab/$', GitlabWebhookReceiver.as_view(), name='webhook_receiver_gitlab'),
|
||||||
|
url(r'^bitbucket/$', BitbucketWebhookReceiver.as_view(), name='webhook_receiver_bitbucket'),
|
||||||
|
]
|
||||||
@@ -150,6 +150,11 @@ from awx.api.views.root import ( # noqa
|
|||||||
ApiV2ConfigView,
|
ApiV2ConfigView,
|
||||||
ApiV2SubscriptionView,
|
ApiV2SubscriptionView,
|
||||||
)
|
)
|
||||||
|
from awx.api.views.webhooks import ( # noqa
|
||||||
|
GithubWebhookReceiver,
|
||||||
|
GitlabWebhookReceiver,
|
||||||
|
BitbucketWebhookReceiver,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger('awx.api.views')
|
logger = logging.getLogger('awx.api.views')
|
||||||
|
|||||||
@@ -5,11 +5,26 @@ from django.utils.encoding import force_bytes
|
|||||||
from rest_framework.exceptions import PermissionDenied
|
from rest_framework.exceptions import PermissionDenied
|
||||||
|
|
||||||
from awx.api.generics import APIView
|
from awx.api.generics import APIView
|
||||||
|
from awx.main.models import JobTemplate, WorkflowJobTemplate
|
||||||
|
|
||||||
|
|
||||||
class WebhookReceiverBase(APIView):
|
class WebhookReceiverBase(APIView):
|
||||||
|
lookup_url_kwarg = None
|
||||||
|
lookup_field = 'pk'
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
queryset = self.queryset.filter(webhook_service=self.service)
|
queryset = self.get_queryset()
|
||||||
lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
|
lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
|
||||||
filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
|
filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user