Mercurial > code > home > repos > href
diff lookup.py @ 7:93d94f327e82
autocomplete in link page box
Ignore-this: 9e2c68e81aaac5dcf25ddbbe6c1f25d6
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Wed, 06 Mar 2013 23:18:39 -0800 |
parents | f8c4c7ce5f4a |
children | e054949143e9 |
line wrap: on
line diff
--- a/lookup.py Fri Mar 01 01:24:05 2013 -0800 +++ b/lookup.py Wed Mar 06 23:18:39 2013 -0800 @@ -9,6 +9,7 @@ """ import pymongo, bottle, time, urllib, datetime, json, restkit +from collections import defaultdict from urllib2 import urlparse from dateutil.tz import tzlocal from bottle import static_file @@ -32,9 +33,9 @@ username = db['user'].find_one({'_id':agent})['username'] if agent else None return username, agent -@bottle.route('/static/<filename>') -def server_static(filename): - return static_file(filename, root='static') +@bottle.route('/static/<path:path>') +def server_static(path): + return static_file(path, root='static') def recentTags(user, tags=None): out = {'links':[]} @@ -58,6 +59,15 @@ out['stats'] = {'queryTimeMs' : round((time.time() - t1) * 1000, 2)} return out +def allTags(user): + count = defaultdict(lambda: 0) # tag : count + for doc in db['links'].find({'user':user}, fields=['extracted.tags']): + for t in doc.get('extracted', {}).get('tags', []): + count[t] = count[t] + 1 + byFreq = [(n, t) for t,n in count.iteritems()] + byFreq.sort(key=lambda (n,t): (-n, t)) + return [{'label': t, 'count': n} for n, t in byFreq] + def renderWithTime(name, data): t1 = time.time() rendered = renderer.render_name(name, data) @@ -112,13 +122,7 @@ @bottle.route('/<user>', method='GET') def userAll(user): - data = recentTags(user, tags=None) - - data['loginBar'] = getLoginBar() - data['desc'] = "%s's recent links" % user - data['toRoot'] = "." - data['stats']['template'] = 'TEMPLATETIME' - return renderWithTime('links.jade', data) + return userLinks(user, "", toRoot=".") @bottle.route('/<user>', method='POST') def userAddLink(user): @@ -139,12 +143,13 @@ bottle.redirect(siteRoot + '/' + user) @bottle.route('/<user>/<tags>') -def userLinks(user, tags): +def userLinks(user, tags, toRoot=".."): tags = tags.split('+') data = recentTags(user, tags) data['loginBar'] = getLoginBar() - data['desc'] = "%s's recent links tagged %s" % (user, tags) - data['toRoot'] = ".." + data['desc'] = ("%s's recent links" % user) + (" tagged %s" % (tags,) if tags else "") + data['toRoot'] = toRoot + data['allTags'] = allTags(user) data['pageTags'] = [{"word":t} for t in tags] data['stats']['template'] = 'TEMPLATETIME'