Exemplo n.º 1
0
def issue(project_name, issue_ref):
    project = Project.query.filter_by(name=project_name).first()
    issue = Issue.query.filter_by(issue_ref=issue_ref).first()
    
    if project == None:
        abort(404)
    
    if issue == None:
        if project.type == ProjectType.GITHUB:
            issue = create_update_issue(project.project_id, issue_ref)
    
    if issue == None:
        abort(404)

    sponsorships = retrieve_all_sponsorships(issue.issue_id)
    bounty = sum(s.amount for s in sponsorships)
    sponsorship_map = {s.account.account_id: s for s in sponsorships if s.account} 
    
    my_sponsorship = sponsorship_map.get(current_account.account_id)
    my_bounty = my_sponsorship.amount if my_sponsorship else 0

    form = IssueForm()
    if form.validate_on_submit():
        amount = form.amount.data
        create_update_sponsorship(project.project_id, issue.issue_id,
                    account_id=current_account.account_id, amount=amount)
        if amount == 0 and my_bounty > 0:
            flash('Sponsorship deleted.')
        elif amount != my_bounty:
            flash('Sponsorship updated.')
        return redirect(url_for(".issue", project_name=project_name, issue_ref=issue_ref))
    return render_template('issue.html', form=form, 
        project_name=project.name, issue_ref=issue_ref, 
        title=issue.title, url=issue.full_link, status=IssueStatus.to_string(issue.status), 
        bounty=bounty, my_bounty=my_bounty)
Exemplo n.º 2
0
def test_create_issue():
    status = IssueStatus.READY
    title = 'TestTitle'
    link = issue_path

    r = api.get(issue_path)
    eq_(r.status_code, 404)

    r = api.post('/issues', ref=issue_ref, status=IssueStatus.to_string(status), title=title, link=link)
    eq_(r.status_code, 200)
    
    r = api.get(issue_path)
    eq_(r.status_code, 200)
    issue = to_object(r.json())
    eq_(issue.ref, issue_ref)
    eq_(IssueStatus.from_string(issue.status), status)
    eq_(issue.title, title)
    eq_(issue.link, 'http://localhost:8100' + link)
Exemplo n.º 3
0
def test_create_issue():
    status = IssueStatus.READY
    title = 'TestTitle'
    link = issue_path

    r = api.get(issue_path)
    eq_(r.status_code, 404)

    r = api.post('/issues',
                 ref=issue_ref,
                 status=IssueStatus.to_string(status),
                 title=title,
                 link=link)
    eq_(r.status_code, 200)

    r = api.get(issue_path)
    eq_(r.status_code, 200)
    issue = to_object(r.json())
    eq_(issue.ref, issue_ref)
    eq_(IssueStatus.from_string(issue.status), status)
    eq_(issue.title, title)
    eq_(issue.link, 'http://localhost:8100' + link)
Exemplo n.º 4
0
def issue(project_name, issue_ref):
    project = Project.query.filter_by(name=project_name).first()
    issue = Issue.query.filter_by(issue_ref=issue_ref).first()

    if project == None:
        abort(404)

    if issue == None:
        if project.type == ProjectType.GITHUB:
            issue = create_update_issue(project.project_id, issue_ref)

    if issue == None:
        abort(404)

    sponsorships = retrieve_all_sponsorships(issue.issue_id)
    bounty = sum(s.amount for s in sponsorships)
    sponsorship_map = {
        s.account.account_id: s
        for s in sponsorships if s.account
    }

    my_sponsorship = sponsorship_map.get(current_account.account_id)
    my_bounty = my_sponsorship.amount if my_sponsorship else 0

    form = IssueForm()
    if form.validate_on_submit():
        amount = form.amount.data
        create_update_sponsorship(project.project_id,
                                  issue.issue_id,
                                  account_id=current_account.account_id,
                                  amount=amount)
        if amount == 0 and my_bounty > 0:
            flash('Sponsorship deleted.')
        elif amount != my_bounty:
            flash('Sponsorship updated.')
        return redirect(
            url_for(".issue", project_name=project_name, issue_ref=issue_ref))
    return render_template('issue.html',
                           form=form,
                           project_name=project.name,
                           issue_ref=issue_ref,
                           title=issue.title,
                           url=issue.full_link,
                           status=IssueStatus.to_string(issue.status),
                           bounty=bounty,
                           my_bounty=my_bounty)