Files
@ ac559565c6b8
Branch filter:
Location: kallithea/pylons_app/lib/celerylib/tasks.py - annotation
ac559565c6b8
4.0 KiB
text/x-python
config change little style fix for form buttons
fixes db manage default user email
fixes db manage default user email
3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b | from celery.decorators import task
from datetime import datetime, timedelta
from pylons_app.lib.helpers import person
from pylons_app.lib.utils import OrderedDict
from time import mktime
import calendar
import logging
from vcs.backends.hg import MercurialRepository
log = logging.getLogger(__name__)
@task()
def whoosh_index(repo_location,full_index):
from pylons_app.lib.indexers import DaemonLock
from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon,LockHeld
try:
l = DaemonLock()
WhooshIndexingDaemon(repo_location=repo_location)\
.run(full_index=full_index)
l.release()
return 'Done'
except LockHeld:
log.info('LockHeld')
return 'LockHeld'
@task()
def get_commits_stats(repo):
aggregate = OrderedDict()
repo = MercurialRepository('/home/marcink/hg_repos/'+repo)
#graph range
td = datetime.today() + timedelta(days=1)
y, m, d = td.year, td.month, td.day
ts_min = mktime((y, (td - timedelta(days=calendar.mdays[m])).month,
d, 0, 0, 0, 0, 0, 0,))
ts_max = mktime((y, m, d, 0, 0, 0, 0, 0, 0,))
def author_key_cleaner(k):
k = person(k)
k = k.replace('"', "'") #for js data compatibilty
return k
for cs in repo[:200]:#added limit 200 until fix #29 is made
k = '%s-%s-%s' % (cs.date.timetuple()[0], cs.date.timetuple()[1],
cs.date.timetuple()[2])
timetupple = [int(x) for x in k.split('-')]
timetupple.extend([0 for _ in xrange(6)])
k = mktime(timetupple)
if aggregate.has_key(author_key_cleaner(cs.author)):
if aggregate[author_key_cleaner(cs.author)].has_key(k):
aggregate[author_key_cleaner(cs.author)][k]["commits"] += 1
aggregate[author_key_cleaner(cs.author)][k]["added"] += len(cs.added)
aggregate[author_key_cleaner(cs.author)][k]["changed"] += len(cs.changed)
aggregate[author_key_cleaner(cs.author)][k]["removed"] += len(cs.removed)
else:
#aggregate[author_key_cleaner(cs.author)].update(dates_range)
if k >= ts_min and k <= ts_max:
aggregate[author_key_cleaner(cs.author)][k] = {}
aggregate[author_key_cleaner(cs.author)][k]["commits"] = 1
aggregate[author_key_cleaner(cs.author)][k]["added"] = len(cs.added)
aggregate[author_key_cleaner(cs.author)][k]["changed"] = len(cs.changed)
aggregate[author_key_cleaner(cs.author)][k]["removed"] = len(cs.removed)
else:
if k >= ts_min and k <= ts_max:
aggregate[author_key_cleaner(cs.author)] = OrderedDict()
#aggregate[author_key_cleaner(cs.author)].update(dates_range)
aggregate[author_key_cleaner(cs.author)][k] = {}
aggregate[author_key_cleaner(cs.author)][k]["commits"] = 1
aggregate[author_key_cleaner(cs.author)][k]["added"] = len(cs.added)
aggregate[author_key_cleaner(cs.author)][k]["changed"] = len(cs.changed)
aggregate[author_key_cleaner(cs.author)][k]["removed"] = len(cs.removed)
d = ''
tmpl0 = u""""%s":%s"""
tmpl1 = u"""{label:"%s",data:%s,schema:["commits"]},"""
for author in aggregate:
d += tmpl0 % (author,
tmpl1 \
% (author,
[{"time":x,
"commits":aggregate[author][x]['commits'],
"added":aggregate[author][x]['added'],
"changed":aggregate[author][x]['changed'],
"removed":aggregate[author][x]['removed'],
} for x in aggregate[author]]))
if d == '':
d = '"%s":{label:"%s",data:[[0,1],]}' \
% (author_key_cleaner(repo.contact),
author_key_cleaner(repo.contact))
return (ts_min, ts_max, d)
|