def apiRoute(action=None): if action == 'put_build': p = Project.get(Project.id==int(request.form.get('pid'))) q = [i for i in Build.select().where((Build.build_id == request.form.get('id')) & (Build.built==False) & (Build.project==p))] if not len(q): return 'Error!' b = q[0] b.built = True b.success = bool(int(request.form.get('success'))) b.result = request.form.get('result').replace('\n', '<br />') b.finish_time = datetime.now() f = request.files.get('build') if not f or not f.filename.endswith('.tar.gz'): print "Invalid file!" else: b.build_url = 'http://'+saveBuild(b, f) b.save() if action == "github": d = request.form q = [i for i in Project.select().where((Project.repo_name==d['repository']['name'].lower()) &(Project.active==True))] if len(q): commits = [] for i in d['commits']: com = [i for i in Commit.select().where((Commit.sha==i['id'][:6]))] if len(com): commits.append(com[0]) else: c = Commit( project=q[0], info=i['message'], author=i['author']['name'], url=i['url'], sha=i['id'][:6]) c.save() commits.append(c) if not len(commits): print "No commits! %s" % d return 'Hi :3' b = Build( project=q[0], commit=commits[-1], build_id=q[0].getBuildId(), built=False, time=datetime.now()) b.save() addBuild(b) else: print 'Invalid build info! %s' % d if action == 'gitlab': d = request.json q = [i for i in Project.select().where((Project.repo_name==request.json['repository']['name'].lower()) &(Project.active==True))] if len(q): commits = [] for i in request.json['commits']: com = [i for i in Commit.select().where((Commit.sha==i['id'][:6]))] if len(com): commits.append(com[0]) continue c = Commit( project=q[0], info=i['message'], author=i['author']['name'], url='http://git.'+i['url'], sha=i['id'][:6]) c.save() commits.append(c) if not len(commits): print 'No commits?', d return ':3' b = Build( project=q[0], commit=commits[-1], build_id=q[0].getBuildId(), built=False, time=datetime.now()) b.save() addBuild(b) else: print 'Invalid build info!', d, q return ':3'