Mercurial > code > home > repos > href
comparison lookup.py @ 28:7c82ffbca5d0
py3 and k8s upgrade
author | drewp@bigasterisk.com |
---|---|
date | Sun, 12 Jul 2020 13:16:33 -0700 |
parents | e02fc021ab89 |
children | e86642cf7393 |
comparison
equal
deleted
inserted
replaced
27:3d9dc1571ade | 28:7c82ffbca5d0 |
---|---|
6 /user/tag+tag+tag | 6 /user/tag+tag+tag |
7 | 7 |
8 and the add-bookmark stuff | 8 and the add-bookmark stuff |
9 | 9 |
10 """ | 10 """ |
11 import pymongo, bottle, time, urllib, datetime, json, restkit, logging | 11 import pymongo, bottle, time, urllib.request, urllib.parse, urllib.error, datetime, json, logging |
12 import requests | |
12 from collections import defaultdict | 13 from collections import defaultdict |
13 from urllib2 import urlparse | 14 from urllib.parse import urlparse |
14 from dateutil.tz import tzlocal | 15 from dateutil.tz import tzlocal |
15 from bottle import static_file | 16 from bottle import static_file |
16 from jadestache import Renderer | 17 from jadestache import Renderer |
17 from pagetitle import PageTitle | 18 from pagetitle import PageTitle |
18 from link import Links, NotFound | 19 from link import Links, NotFound |
19 db = pymongo.Connection('bang', tz_aware=True)['href'] | 20 db = pymongo.Connection('mongodb.default.svc.cluster.local', tz_aware=True)['href'] |
20 pageTitle = PageTitle(db) | 21 pageTitle = PageTitle(db) |
21 links = Links(db) | 22 links = Links(db) |
22 renderer = Renderer(search_dirs=['template'], debug=bottle.DEBUG) | 23 renderer = Renderer(search_dirs=['template'], debug=bottle.DEBUG) |
23 log = logging.getLogger() | 24 log = logging.getLogger() |
24 | 25 |
25 def getLoginBar(): | 26 def getLoginBar(): |
26 openidProxy = restkit.Resource("http://bang:9023/") | 27 return requests.get("http://openid-proxy.default.svc.cluster.local:9023/_loginBar", |
27 return openidProxy.get("_loginBar", | |
28 headers={ | 28 headers={ |
29 "Cookie" : bottle.request.headers.get('cookie'), | 29 "Cookie" : bottle.request.headers.get('cookie'), |
30 'x-site': 'http://bigasterisk.com/openidProxySite/href', | 30 'x-site': 'http://bigasterisk.com/openidProxySite/href', |
31 }).body_string() | 31 }).text |
32 | 32 |
33 def getUser(): | 33 def getUser(): |
34 agent = bottle.request.headers.get('x-foaf-agent', None) | 34 agent = bottle.request.headers.get('x-foaf-agent', None) |
35 username = db['user'].find_one({'_id':agent})['username'] if agent else None | 35 username = db['user'].find_one({'_id':agent})['username'] if agent else None |
36 return username, agent | 36 return username, agent |
68 docTags = set(doc.get('extracted', {}).get('tags', [])) | 68 docTags = set(doc.get('extracted', {}).get('tags', [])) |
69 if withTags and not withTags.issubset(docTags): | 69 if withTags and not withTags.issubset(docTags): |
70 continue | 70 continue |
71 for t in docTags.difference(withTags): | 71 for t in docTags.difference(withTags): |
72 count[t] = count[t] + 1 | 72 count[t] = count[t] + 1 |
73 byFreq = [(n, t) for t,n in count.iteritems()] | 73 byFreq = [(n, t) for t,n in count.items()] |
74 byFreq.sort(key=lambda (n,t): (-n, t)) | 74 byFreq.sort(key=lambda n_t: (-n_t[0], n_t[1])) |
75 return [{'label': t, 'count': n} for n, t in byFreq] | 75 return [{'label': t, 'count': n} for n, t in byFreq] |
76 | 76 |
77 def renderWithTime(name, data): | 77 def renderWithTime(name, data): |
78 t1 = time.time() | 78 t1 = time.time() |
79 rendered = renderer.render_name(name, data) | 79 rendered = renderer.render_name(name, data) |
124 | 124 |
125 | 125 |
126 @bottle.route('/tags') | 126 @bottle.route('/tags') |
127 def tagFilterComplete(): | 127 def tagFilterComplete(): |
128 params = bottle.request.params | 128 params = bottle.request.params |
129 haveTags = filter(None, params['have'].split(',')) | 129 haveTags = [_f for _f in params['have'].split(',') if _f] |
130 if haveTags and len(haveTags[-1]) > 0: | 130 if haveTags and len(haveTags[-1]) > 0: |
131 haveTags, partialTerm = haveTags[:-1], haveTags[-1] | 131 haveTags, partialTerm = haveTags[:-1], haveTags[-1] |
132 else: | 132 else: |
133 partialTerm = "" | 133 partialTerm = "" |
134 | 134 |
143 | 143 |
144 return {'tags' : out} | 144 return {'tags' : out} |
145 | 145 |
146 @bottle.route('/<user>/') | 146 @bottle.route('/<user>/') |
147 def userSlash(user): | 147 def userSlash(user): |
148 bottle.redirect(siteRoot() + "/%s" % urllib.quote(user)) | 148 bottle.redirect(siteRoot() + "/%s" % urllib.parse.quote(user)) |
149 | 149 |
150 @bottle.route('/<user>.json', method='GET') | 150 @bottle.route('/<user>.json', method='GET') |
151 def userAllJson(user): | 151 def userAllJson(user): |
152 data = recentLinks(user, [], allowEdit=getUser()[0] == user) | 152 data = recentLinks(user, [], allowEdit=getUser()[0] == user) |
153 data['toRoot'] = siteRoot() | 153 data['toRoot'] = siteRoot() |
160 | 160 |
161 @bottle.route('/<user>', method='POST') | 161 @bottle.route('/<user>', method='POST') |
162 def userAddLink(user): | 162 def userAddLink(user): |
163 if getUser()[0] != user: | 163 if getUser()[0] != user: |
164 raise ValueError("not logged in as %s" % user) | 164 raise ValueError("not logged in as %s" % user) |
165 print repr(bottle.request.params.__dict__) | 165 print(repr(bottle.request.params.__dict__)) |
166 doc = links.fromPostdata(bottle.request.params, | 166 doc = links.fromPostdata(bottle.request.params, |
167 user, | 167 user, |
168 datetime.datetime.now(tzlocal())) | 168 datetime.datetime.now(tzlocal())) |
169 links.insertOrUpdate(doc) | 169 links.insertOrUpdate(doc) |
170 | 170 |
171 print "notify about sharing to", repr(doc['shareWith']) | 171 print("notify about sharing to", repr(doc['shareWith'])) |
172 | 172 |
173 bottle.redirect(siteRoot() + '/' + user) | 173 bottle.redirect(siteRoot() + '/' + user) |
174 | 174 |
175 def parseTags(tagComponent): | 175 def parseTags(tagComponent): |
176 # the %20 is coming from davis.js, not me :( | 176 # the %20 is coming from davis.js, not me :( |
177 return filter(None, tagComponent.replace("%20", "+").split('+')) | 177 return [_f for _f in tagComponent.replace("%20", "+").split('+') if _f] |
178 | 178 |
179 @bottle.route('/<user>/<tags:re:.*>.json') | 179 @bottle.route('/<user>/<tags:re:.*>.json') |
180 def userLinksJson(user, tags): | 180 def userLinksJson(user, tags): |
181 tags = parseTags(tags) | 181 tags = parseTags(tags) |
182 data = recentLinks(user, tags, allowEdit=getUser()[0] == user) | 182 data = recentLinks(user, tags, allowEdit=getUser()[0] == user) |