Beispiel #1
0
def index(request):
    qry="select * from projects_iteration where project_id=%s order by cast(name as signed)"
    c = conn.cursor()
    c2 = conn.cursor(my.cursors.DictCursor)
    projectname = getprojectname(c)
    res = c.execute(qry,PROJECT_ID)
    iters = c.fetchall()
    #raise Exception('PROJECT %s iters: %s'%(PROJECT_ID,iters))
    aspects = session.query(Aspect).all()
    return render_to_response('/index.html',{'aspects':aspects,'iterations':iters,'SCRUMDO_BASEURL':SCRUMDO_BASEURL,'projectname':projectname},request)
Beispiel #2
0
def aspect(request,aspect):
    ni = request.params.get('new_item')
    if ni:
        i = Item()
        i.name = ni
        session.add(i) ; session.commit()
    ns = request.params.get('new_situation')
    if ns:
        i = Situation()
        i.name = ns
        session.add(i) ; session.commit()

    a = session.query(Aspect).get(aspect)
    if request.params.get('view_all'):
        viewitems = [i.name for i in session.query(Item).all()]
    else:
        viewitems = request.params.getall('item')
    if len(viewitems):
        return Redirect("/support/%s/%s"%(a.name,",".join(viewitems)))

    items = session.query(Item).order_by(Item.name).all()
    situations = session.query(Situation).all()
    
    return render_to_response('/item_choice.html',{'aspect':a,'items':items,'situations':situations})
Beispiel #3
0
def iteration(request,iteration_id=None,how='bypoints'):
    if iteration_id=='None': iteration_id=None
    c2 = conn.cursor(my.cursors.DictCursor)
    if iteration_id=='current':
        res = c2.execute("select id from projects_iteration where project_id=%s and start_date<=now() and end_date>=now()",PROJECT_ID)
        fo = c2.fetchone()
        if fo:
            iteration_id = fo['id']
        else:
            iteration_id=None

    if iteration_id:
        res = c2.execute("select start_date,end_date from projects_iteration where id=%s",iteration_id)
        start_date,end_date = c2.fetchone().values()
    else:
        start_date=None
        end_date=None
    print 'running for dates %s - %s'%(start_date,end_date)
    if how=='bydiff':
        commits = compile_report.run(start_date=start_date,end_date=end_date,makereport=False)
    else:
        commits ={'by_story':{}}

    likey= '%commited to github%'
    joinqry =  "from projects_story s,auth_user u where u.id=s.assignee_id"
    if iteration_id: 
        joinqry+=" and iteration_id=%s "
        qargs = [likey,iteration_id]
        qa2 = [iteration_id]
    else:
        joinqry+=" and iteration_id in (select id from projects_iteration where project_id=%s)"
        qargs= [likey,str(PROJECT_ID)]
        qa2 = [PROJECT_ID]
    fnames = 's.id,s.local_id,s.summary,s.status,s.points,s.rank,u.email'
    fqry = "select %s\n,(select count(*) from threadedcomments_threadedcomment where comment like TOKEN and object_id=s.id) commits,count(*) commits\n %s \n group by %s \n order by assignee_id,rank"%(fnames,joinqry,fnames)
    fqry=fqry.replace('TOKEN','%s')
    print fqry
    print qargs
    if iteration_id:
        res = c2.execute(fqry.replace('\n',''),qargs)
    else:
        res = c2.execute(fqry,qargs)
    
    stories = c2.fetchall()
    for st in stories:
        print('checking if story %s is in %s'%(st['local_id'],commits['by_story'].keys()))
        if unicode(st['local_id']) in commits['by_story'].keys():
            st['diff']= commits['by_story'][unicode(st['local_id'])]['diff']
        else:
            st['diff']=0


    fqry2 = "select u.email,sum(s.points) points,count(*) stories %s group by u.email"%joinqry
    if iteration_id:
        res = c2.execute(fqry2,qa2)
    else:
        res = c2.execute(fqry2,qa2)
    points = c2.fetchall()
    try:
        if how=='bydiff':
            maxpoints=sum([df['diff'] for df in commits['by_story'].values()])
        else:
            maxpoints=max([p['points'] for p in points])
    except ValueError:
        maxpoints=0
    c = conn.cursor()
    if iteration_id:
        itername = getiterationname(c,iteration_id)
    else:
        itername = 'all iterations'
    return render_to_response('/iteration.html',{'maxpoints':json.dumps(maxpoints),'points':json.dumps(points),'stories':json.dumps(stories),'SCRUMDO_BASEURL':SCRUMDO_BASEURL,'projectname':getprojectname(c),'iteration_id':iteration_id,'iteration_name':itername,'how':how},request)
Beispiel #4
0
            if spl[0] == 'revoke':
                user = spl[1]
                cnt = int(spl[2])
                ip = spl[3]
                assert ipre.search(ip)
                revoke_access(user, ip, cnt, admin, is_admin)
    users = get_users()
    rules, all_allowed = get_fw_rules(users)
    for u in users:
        if u not in rules: rules[u] = []
    if admin == DEFAULT_ADMIN:
        #show all users' rules
        pass
    else:
        for k in rules.keys():
            if k != admin:
                del rules[k]
        users = [admin]
    remote_addr = request.headers.get('X-Forwarded-For')
    if not remote_addr:
        raise AuthErr('no remote addr in X-Forwarded-For header')
    c = {
        'users': users,
        'rules': rules,
        'remote_ip': remote_addr,
        'is_admin': is_admin,
        'user': admin
    }
    return render_to_response('index.html', c)
    #return Response('<h1>Hello, NoodlesFramework!</h1>')
Beispiel #5
0
        assert ipre.search(aip)
        if request.params.get("add-ip-btn"):
            allow_access(admin, aip, note)
        for k in request.params:
            spl = k.split("-")
            if spl[0] == "revoke":
                user = spl[1]
                cnt = int(spl[2])
                ip = spl[3]
                assert ipre.search(ip)
                revoke_access(user, ip, cnt, admin, is_admin)
    users = get_users()
    rules, all_allowed = get_fw_rules(users)
    for u in users:
        if u not in rules:
            rules[u] = []
    if admin == DEFAULT_ADMIN:
        # show all users' rules
        pass
    else:
        for k in rules.keys():
            if k != admin:
                del rules[k]
        users = [admin]
    remote_addr = request.headers.get("X-Forwarded-For")
    if not remote_addr:
        raise AuthErr("no remote addr in X-Forwarded-For header")
    c = {"users": users, "rules": rules, "remote_ip": remote_addr, "is_admin": is_admin, "user": admin}
    return render_to_response("index.html", c)
    # return Response('<h1>Hello, NoodlesFramework!</h1>')