Hook in the webhook receiver views into the urlconf

This commit is contained in:
Jeff Bradberry 2019-08-06 16:00:59 -04:00
parent a7a99ed141
commit 8f97dbf781
4 changed files with 37 additions and 1 deletions

View File

@ -137,6 +137,8 @@ v2_urls = [
url(r'^activity_stream/', include(activity_stream_urls)),
url(r'^workflow_approval_templates/', include(workflow_approval_template_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
View 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'),
]

View File

@ -150,6 +150,11 @@ from awx.api.views.root import ( # noqa
ApiV2ConfigView,
ApiV2SubscriptionView,
)
from awx.api.views.webhooks import ( # noqa
GithubWebhookReceiver,
GitlabWebhookReceiver,
BitbucketWebhookReceiver,
)
logger = logging.getLogger('awx.api.views')

View File

@ -5,11 +5,26 @@ from django.utils.encoding import force_bytes
from rest_framework.exceptions import PermissionDenied
from awx.api.generics import APIView
from awx.main.models import JobTemplate, WorkflowJobTemplate
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):
queryset = self.queryset.filter(webhook_service=self.service)
queryset = self.get_queryset()
lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}