diff --git a/runbot/runbot.py b/runbot/runbot.py
index 495baf6a..dca4cf87 100644
--- a/runbot/runbot.py
+++ b/runbot/runbot.py
@@ -157,6 +157,7 @@ class runbot_repo(osv.osv):
'jobs': fields.char('Jobs'),
'nginx': fields.boolean('Nginx'),
'auto': fields.boolean('Auto'),
+ 'duplicate_id': fields.many2one('runbot.repo', 'Repository for finding duplicate builds'),
'fallback_id': fields.many2one('runbot.repo', 'Fallback repo'),
'modules': fields.char("Modules to Install"),
'token': fields.char("Github token"),
@@ -439,12 +440,13 @@ class runbot_build(osv.osv):
'sequence': fields.integer('Sequence'),
'result': fields.char('Result'), # ok, ko, warn, skipped, killed
'pid': fields.integer('Pid'),
- 'state': fields.char('Status'), # pending, testing, running, done
+ 'state': fields.char('Status'), # pending, testing, running, done, duplicate
'job': fields.char('Job'), # job_*
'job_start': fields.datetime('Job start'),
'job_end': fields.datetime('Job end'),
'job_time': fields.function(_get_time, type='integer', string='Job time'),
'job_age': fields.function(_get_age, type='integer', string='Job age'),
+ 'duplicate_id': fields.many2one('runbot.build', 'Corresponding Build'),
}
_defaults = {
@@ -454,7 +456,16 @@ class runbot_build(osv.osv):
def create(self, cr, uid, values, context=None):
build_id = super(runbot_build, self).create(cr, uid, values, context=context)
- self.write(cr, uid, [build_id], {'sequence' : build_id}, context=context)
+ extra_info = {'sequence' : build_id}
+
+ for build in self.browse(cr, uid, [build_id]):
+ domain = [('repo_id','=',build.repo_id.duplicate_id.id), ('name', '=', build.name), ('duplicate_id', '=', False)]
+ duplicate_ids = self.search(cr, uid, domain)
+ if len(duplicate_ids):
+ duplicate_id = duplicate_ids[0]
+ extra_info.update({'state': 'duplicate', 'duplicate_id': duplicate_id})
+ self.write(cr, uid, [duplicate_id], {'duplicate_id': build_id})
+ self.write(cr, uid, [build_id], extra_info, context=context)
def reset(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, { 'state' : 'pending' }, context=context)
@@ -902,6 +913,10 @@ class RunbotController(http.Controller):
for branch in branches:
build_ids = build_obj.search(cr, uid, [('branch_id','=',branch.id)], limit=4)
branch.builds = build_obj.browse(cr, uid, build_ids, context=context)
+ # # build_ids = [build.id if build.]
+ # for build in build_obj.browse(cr, uid, build_ids, context=context):
+ # if build.state == 'duplicate':
+ # branch.builds
v['branches'].append(branch)
# stats
diff --git a/runbot/runbot.xml b/runbot/runbot.xml
index 067be7be..ffc98aaf 100644
--- a/runbot/runbot.xml
+++ b/runbot/runbot.xml
@@ -24,6 +24,7 @@
+
@@ -128,6 +129,7 @@
+
@@ -166,6 +168,7 @@
+