[IMP] runbot: only update hook on push event

Hook can represent label changes, closed pr, ....
We only want to fetch is some push or synchronize are sent.

TODO We also may want to catch retarget later in order to update branch.
This commit is contained in:
Xavier-Do 2019-08-09 12:24:51 +02:00
parent d68d0ffa81
commit 13ca8b98cf

View File

@ -2,18 +2,21 @@
import time import time
import json import json
import logging
from odoo import http, tools from odoo import http, tools
from odoo.http import request from odoo.http import request
_logger = logging.getLogger(__name__)
class RunbotHook(http.Controller): class RunbotHook(http.Controller):
@http.route(['/runbot/hook/<int:repo_id>', '/runbot/hook/org'], type='http', auth="public", website=True, csrf=False) @http.route(['/runbot/hook/<int:repo_id>', '/runbot/hook/org'], type='http', auth="public", website=True, csrf=False)
def hook(self, repo_id=None, **post): def hook(self, repo_id=None, **post):
event = request.httprequest.headers.get("X-Github-Event")
payload = json.loads(request.params['payload'])
if repo_id is None: if repo_id is None:
event = request.httprequest.headers.get("X-Github-Event") repo_data = payload.get('repository')
repo_data = json.loads(request.params['payload']).get('repository')
if repo_data and event in ['push', 'pull_request']: if repo_data and event in ['push', 'pull_request']:
repo_domain = [ repo_domain = [
'|', '|', ('name', '=', repo_data['ssh_url']), '|', '|', ('name', '=', repo_data['ssh_url']),
@ -27,5 +30,8 @@ class RunbotHook(http.Controller):
repo = request.env['runbot.repo'].sudo().browse([repo_id]) repo = request.env['runbot.repo'].sudo().browse([repo_id])
# force update of dependencies to in case a hook is lost # force update of dependencies to in case a hook is lost
(repo | repo.dependency_ids).write({'hook_time': time.time()}) if event == 'push' or (event == 'pull_request' and payload.get('action') in ('synchronize', 'opened', 'reopened')):
(repo | repo.dependency_ids).write({'hook_time': time.time()})
else:
_logger.debug('Ignoring unsupported hook %s %s', event, payload.get('action', ''))
return "" return ""