Straight copy of hook_github() to hook_bitbucket().

parent 9de2d0a7
......@@ -61,6 +61,40 @@ def update_project(request, project):
return HttpResponse('update triggered')
@csrf_exempt
def bitbucket_hook(request):
'''
API to handle commit hooks from Bitbucket.
'''
if not appsettings.ENABLE_HOOKS:
return HttpResponseNotAllowed([])
if request.method != 'POST':
return HttpResponseNotAllowed(['POST'])
try:
data = json.loads(request.POST['payload'])
except (ValueError, KeyError):
return HttpResponseBadRequest('could not parse json!')
try:
repo = 'https://bitbucket.org/%s/%s.git' % (
data['repository']['owner']['name'],
data['repository']['name'],
)
branch = data['ref'].split('/')[-1]
except KeyError:
return HttpResponseBadRequest('could not parse json!')
logger.info(
'received Bitbucket notification on repository %s, branch %s',
repo,
branch
)
for obj in SubProject.objects.filter(repo=repo, branch=branch):
logger.info('Bitbucket notification will update %s', obj)
thread = threading.Thread(target=obj.do_update)
thread.start()
return HttpResponse('update triggered')
@csrf_exempt
def github_hook(request):
'''
......
......@@ -183,6 +183,7 @@ urlpatterns = patterns('',
url(r'^hooks/update/(?P<project>[^/]*)/(?P<subproject>[^/]*)/$', 'weblate.trans.api.update_subproject'),
url(r'^hooks/update/(?P<project>[^/]*)/$', 'weblate.trans.api.update_project'),
url(r'^hooks/github/$', 'weblate.trans.api.github_hook'),
url(r'^hooks/bitbucket/$', 'weblate.trans.api.bitbucket_hook'),
url(r'^exports/stats/(?P<project>[^/]*)/(?P<subproject>[^/]*)/$', 'weblate.trans.api.export_stats', name='export-stats'),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment