示例#1
0
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'