5
0
mirror of https://github.com/odoo/runbot.git synced 2025-03-17 08:25:46 +07:00
runbot/runbot_cla/runbot.py
Christophe Monniez f5dcb7b371 [FIX] runbot_cla: fix enforce utf-8 even when runbot locale is different
The CLA md file must be encoded in UTF-8 but before this commit, the
file was opened with the locale of the system running the runbot. That
way, a UnicodeDecodeError was raised when the CLA was UTF-8 and not the
runbot locale was different. Leading to wrong validations.

This commit enforce UTF-8 encoding when opening the CLA's.
2018-03-14 11:07:55 +01:00

44 lines
1.6 KiB
Python

# -*- encoding: utf-8 -*-
import glob
import io
import logging
import re
from odoo import models
_logger = logging.getLogger(__name__)
class runbot_build(models.Model):
_inherit = "runbot.build"
def _job_05_check_cla(self, build, lock_path, log_path):
cla_glob = glob.glob(build._path("doc/cla/*/*.md"))
if cla_glob:
description = "%s Odoo CLA signature check" % build.author
mo = re.search('[^ <@]+@[^ @>]+', build.author_email or '')
state = "failure"
if mo:
email = mo.group(0).lower()
if re.match('.*@(odoo|openerp|tinyerp)\.com$', email):
state = "success"
else:
try:
cla = ''.join(io.open(f,encoding='utf-8').read() for f in cla_glob)
if cla.lower().find(email) != -1:
state = "success"
except UnicodeDecodeError:
description = 'Invalid CLA encoding (must be utf-8)'
_logger.info('CLA build:%s email:%s result:%s', build.dest, email, state)
status = {
"state": state,
"target_url": "https://www.odoo.com/sign-cla",
"description": description,
"context": "legal/cla"
}
build._log('check_cla', 'CLA %s' % state)
build.repo_id._github('/repos/:owner/:repo/statuses/%s' % build.name, status, ignore_errors=True)
# 0 is myself, -1 is everybody else, -2 nothing
return -2