def history(request,task):
    t = get_task(C,task)
    st,op = gso('git log --follow -- %s'%(os.path.join(cfg.DATADIR,task,'task.org'))) ; assert st==0
    commitsi = cre.finditer(op)
    for c in commitsi:
        cid = c.group(1)
        url = '%(gitweb_url)s/?p=%(docs_reponame)s;a=commitdiff;h=%(cid)s'%{'cid':cid,'gitweb_url':cfg.GITWEB_URL,'docs_reponame':cfg.DOCS_REPONAME}
        op = op.replace(cid,"<a href='%(url)s'>%(cid)s</a>"%{'cid':cid,'url':url})
    
    t['summary'] = ''
    rt = basevars(request,P,C,{'op':op,'task':t,'request':request})
    return rt
示例#2
0
def history(request,task):
    t = get_task(task)
    st,op = gso('git log --follow -- %s'%(os.path.join(cfg.DATADIR,task,'task.org'))) ; assert st==0
    commitsi = cre.finditer(op)
    for c in commitsi:
        cid = c.group(1)
        url = '%(gitweb_url)s/?p=%(docs_reponame)s;a=commitdiff;h=%(cid)s'%{'cid':cid,'gitweb_url':cfg.GITWEB_URL,'docs_reponame':cfg.DOCS_REPONAME}
        op = op.replace(cid,"<a href='%(url)s'>%(cid)s</a>"%{'cid':cid,'url':url})
    
    t['summary'] = ''
    rt = {'op':op,'task':t,'request':request}
    return rt
示例#3
0
def rpr(request,task,journal=False,render_only=False):
    t= get_task(task)
    if journal:        vn = 'jpath'
    else:        vn = 'path'
    cmd = 'emacs -batch --visit="%s" --funcall org-export-as-html-batch'%(t[vn])
    st,op = gso(cmd) ; assert st==0,"%s returned %s\n%s"%(cmd,st,op)

    rt = open(t[vn].replace('.org','.html'),'r').read()
    if render_only: return rt

    r = Response()
    r.body = rt
    return r
示例#4
0
def tracking(request,rng):
    frto = rng.split(':') ; narr=[]
    for tel in frto:
        otel = tel
        if tel=='lastmonth': tel = (datetime.datetime.now()-datetime.timedelta(days=30)).strftime('%Y-%m-%d')
        if tel=='lastweek': tel = (datetime.datetime.now()-datetime.timedelta(days=7)).strftime('%Y-%m-%d')
        if tel=='yesterday': tel = (datetime.datetime.now()-datetime.timedelta(days=1)).strftime('%Y-%m-%d')
        if tel=='today': tel = (datetime.datetime.now()).strftime('%Y-%m-%d')
        narr.append(tel)
    frto = narr

    st,op = gso("find %s -type f -iname 'hours.json'"%cfg.DATADIR) ; assert st==0
    fnames = op.split("\n")
    sums={} ; tasksums={} ; tdescrs = {} ; testimates = {}
    for fn in fnames:
        tid = os.path.dirname(fn).replace(cfg.DATADIR+'/','')
        with open(fn,'r') as f: j = json.loads(f.read())
        matching = filter(lambda x: x[0]>=frto[0] and x[0]<=frto[1],j.items())
        for dt,data in matching:
            for person,hrs in data.items():
                sums[person] = sums.get(person,0)+hrs
                if person not in tasksums: tasksums[person]={}
                tasksums[person][tid] = tasksums[person].get(tid,0)+hrs
                t = get_task(tid)
                if tid not in tdescrs: tdescrs[tid] = t['summary']
                metastates,content = read_current_metastates(t,True)

                if t.get('total_hours') and metastates.get('work estimate'):
                    remaining_hours = '%4.2f'%(float(metastates.get('work estimate')['value']) - float(t.get('total_hours')))
                else:
                    remaining_hours = '--'
                testimates[tid]=remaining_hours

    sums = sums.items()
    sums.sort(lambda x,y: cmp(x[1],y[1]),reverse=True)
    return {'fr':frto[0],'to':frto[1],'tracked':sums,'tasksums':tasksums,'tdescrs':tdescrs,'testimates':testimates}