Mercurial > code > home > repos > href
diff lookup.py @ 24:ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
Ignore-this: 30fa1b320f62623e9b6a683f81d842a5
author | drewp@bigasterisk.com |
---|---|
date | Mon, 23 May 2016 23:39:24 -0700 |
parents | fa55f4439977 |
children | e02fc021ab89 |
line wrap: on
line diff
--- a/lookup.py Sun May 22 16:38:54 2016 -0700 +++ b/lookup.py Mon May 23 23:39:24 2016 -0700 @@ -8,7 +8,7 @@ and the add-bookmark stuff """ -import pymongo, bottle, time, urllib, datetime, json, restkit +import pymongo, bottle, time, urllib, datetime, json, restkit, logging from collections import defaultdict from urllib2 import urlparse from dateutil.tz import tzlocal @@ -20,31 +20,44 @@ pageTitle = PageTitle(db) links = Links(db) renderer = Renderer(search_dirs=['template'], debug=bottle.DEBUG) +log = logging.getLogger() siteRoot = 'https://bigasterisk.com/href' def getLoginBar(): openidProxy = restkit.Resource("http://bang:9023/") return openidProxy.get("_loginBar", - headers={"Cookie" : bottle.request.headers.get('cookie')}).body_string() + headers={ + "Cookie" : bottle.request.headers.get('cookie'), + 'x-site': 'http://bigasterisk.com/openidProxySite/href', + }).body_string() def getUser(): agent = bottle.request.headers.get('x-foaf-agent', None) username = db['user'].find_one({'_id':agent})['username'] if agent else None return username, agent + +def siteRoot(): + try: + return bottle.request.headers['x-site-root'].rstrip('/') + except KeyError: + log.warn(repr(bottle.request.__dict__)) + raise @bottle.route('/static/<path:path>') def server_static(path): return static_file(path, root='static') -def recentLinks(user, tags=None): +def recentLinks(user, tags, allowEdit): out = {'links':[]} t1 = time.time() spec = {'user':user} if tags: spec['extracted.tags'] = {'$all' : tags} for doc in db['links'].find(spec, sort=[('t', -1)], limit=50): - out['links'].append(links.forDisplay(doc)) + link = links.forDisplay(doc) + link['allowEdit'] = allowEdit + out['links'].append(link) out['stats'] = {'queryTimeMs' : round((time.time() - t1) * 1000, 2)} return out @@ -73,7 +86,7 @@ @bottle.route('/addLink') def addLink(): out = { - 'toRoot': '.', + 'toRoot': siteRoot(), 'absRoot': siteRoot, 'user': getUser()[0], 'withKnockout': True, @@ -134,17 +147,17 @@ @bottle.route('/<user>/') def userSlash(user): - bottle.redirect("/%s" % urllib.quote(user)) + bottle.redirect(siteRoot() + "/%s" % urllib.quote(user)) @bottle.route('/<user>.json', method='GET') def userAllJson(user): - data = recentLinks(user, []) - data['toRoot'] = "." + data = recentLinks(user, [], allowEdit=getUser()[0] == user) + data['toRoot'] = siteRoot() return json.dumps(data) @bottle.route('/<user>', method='GET') def userAll(user): - return userLinks(user, "", toRoot=".") + return userLinks(user, "") @bottle.route('/<user>', method='POST') @@ -168,18 +181,19 @@ @bottle.route('/<user>/<tags:re:.*>.json') def userLinksJson(user, tags): tags = parseTags(tags) - data = recentLinks(user, tags) - data['toRoot'] = ".." + data = recentLinks(user, tags, allowEdit=getUser()[0] == user) + data['toRoot'] = siteRoot() return json.dumps(data) @bottle.route('/<user>/<tags>') -def userLinks(user, tags, toRoot=".."): +def userLinks(user, tags): tags = parseTags(tags) - data = recentLinks(user, tags) + log.info('userLinks user=%r tags=%r', user, tags) + data = recentLinks(user, tags, allowEdit=getUser()[0] == user) data['loginBar'] = getLoginBar() data['desc'] = ("%s's recent links" % user) + (" tagged %s" % (tags,) if tags else "") - data['toRoot'] = toRoot + data['toRoot'] = siteRoot() data['allTags'] = allTags(user) data['user'] = user data['showPrivateData'] = (user == getUser()[0]) @@ -196,11 +210,12 @@ def root(): data = { 'loginBar': getLoginBar(), - 'toRoot': ".", + 'toRoot': siteRoot(), 'stats': {'template': 'TEMPLATETIME'}, 'users': [{'user':doc['username']} for doc in db['user'].find()], } return renderWithTime('index.jade', data) if __name__ == '__main__': + logging.basicConfig(level=logging.INFO) bottle.run(server='gunicorn', host='0.0.0.0', port=10002, workers=4)