Mercurial > code > home > repos > href
annotate lookup.py @ 33:b82432594778
skaffold config and other updates
author | drewp@bigasterisk.com |
---|---|
date | Sat, 21 Aug 2021 14:24:57 -0700 |
parents | c23acc88324b |
children | c7b59377ab35 |
rev | line source |
---|---|
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
1 """ |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
2 serve some queries over bookmarks: |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
3 |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
4 /user |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
5 /user/tag+tag+tag |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
6 |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
7 and the add-bookmark stuff |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
8 """ |
7
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
9 from collections import defaultdict |
30 | 10 import datetime |
11 import json | |
12 import logging | |
33 | 13 import os |
30 | 14 import time |
15 import urllib.error | |
16 import urllib.parse | |
17 import urllib.request | |
18 | |
19 from bottle import static_file | |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
20 from dateutil.tz import tzlocal |
30 | 21 import bottle |
22 import pymongo | |
23 import requests | |
24 | |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
25 from jadestache import Renderer |
30 | 26 from link import Links, NotFound |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
27 from pagetitle import PageTitle |
30 | 28 |
33 | 29 db = pymongo.MongoClient(os.environ['MONGODB_SERVICE_HOST'], |
30 tz_aware=True)['href'] | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
31 pageTitle = PageTitle(db) |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
32 links = Links(db) |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
33 renderer = Renderer(search_dirs=['template'], debug=bottle.DEBUG) |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
34 log = logging.getLogger() |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
35 |
30 | 36 |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
37 def getUser(): |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
38 agent = bottle.request.headers.get('x-foaf-agent', None) |
30 | 39 username = db['user'].find_one({'_id': agent |
40 })['username'] if agent else None | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
41 return username, agent |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
42 |
30 | 43 |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
44 def siteRoot(): |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
45 try: |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
46 return bottle.request.headers['x-site-root'].rstrip('/') |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
47 except KeyError: |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
48 log.warn(repr(bottle.request.__dict__)) |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
49 raise |
30 | 50 |
51 | |
7
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
52 @bottle.route('/static/<path:path>') |
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
53 def server_static(path): |
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
54 return static_file(path, root='static') |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
55 |
30 | 56 |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
57 def recentLinks(user, tags, allowEdit): |
30 | 58 out = {'links': []} |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
59 t1 = time.time() |
30 | 60 spec = {'user': user} |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
61 if tags: |
30 | 62 spec['extracted.tags'] = {'$all': tags} |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
63 for doc in db['links'].find(spec, sort=[('t', -1)], limit=50): |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
64 link = links.forDisplay(doc) |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
65 link['allowEdit'] = allowEdit |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
66 out['links'].append(link) |
30 | 67 out['stats'] = {'queryTimeMs': round((time.time() - t1) * 1000, 2)} |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
68 return out |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
69 |
30 | 70 |
10
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
71 def allTags(user, withTags=[]): |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
72 """withTags limits results to other tags that have been used with |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
73 those tags""" |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
74 withTags = set(withTags) |
30 | 75 count = defaultdict(lambda: 0) # tag : count |
33 | 76 for doc in db['links'].find({'user': user}, projection=['extracted.tags']): |
10
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
77 docTags = set(doc.get('extracted', {}).get('tags', [])) |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
78 if withTags and not withTags.issubset(docTags): |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
79 continue |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
80 for t in docTags.difference(withTags): |
7
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
81 count[t] = count[t] + 1 |
30 | 82 byFreq = [(n, t) for t, n in count.items()] |
28 | 83 byFreq.sort(key=lambda n_t: (-n_t[0], n_t[1])) |
7
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
84 return [{'label': t, 'count': n} for n, t in byFreq] |
30 | 85 |
86 | |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
87 def renderWithTime(name, data): |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
88 t1 = time.time() |
4 | 89 rendered = renderer.render_name(name, data) |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
90 dt = (time.time() - t1) * 1000 |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
91 rendered = rendered.replace('TEMPLATETIME', "%.02f ms" % dt) |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
92 return rendered |
30 | 93 |
94 | |
4 | 95 @bottle.route('/addLink') |
96 def addLink(): | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
97 out = { |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
98 'toRoot': siteRoot(), |
25 | 99 'absRoot': siteRoot(), |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
100 'user': getUser()[0], |
30 | 101 'withKnockout': True, |
102 'fillHrefJson': json.dumps(bottle.request.params.get('url', '')), | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
103 } |
4 | 104 return renderWithTime('add.jade', out) |
105 | |
30 | 106 |
4 | 107 @bottle.route('/addOverlay') |
108 def addOverlay(): | |
109 p = bottle.request.params | |
110 | |
111 return "" | |
112 | |
30 | 113 |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
114 @bottle.route('/addLink/proposedUri') |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
115 def proposedUri(): |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
116 uri = bottle.request.params.uri |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
117 user, _ = getUser() |
4 | 118 |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
119 try: |
16
d44d3e4d415b
don't show other user's tags as previously-saved tags to the current user
Drew Perttula <drewp@bigasterisk.com>
parents:
10
diff
changeset
|
120 prevDoc = links.find(uri, user) |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
121 except NotFound: |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
122 prevDoc = None |
30 | 123 |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
124 return { |
30 | 125 'description': |
126 prevDoc['description'] if prevDoc else pageTitle.pageTitle(uri), | |
127 'tag': | |
128 prevDoc['tag'] if prevDoc else '', | |
129 'extended': | |
130 prevDoc['extended'] if prevDoc else '', | |
131 'shareWith': | |
132 prevDoc.get('shareWith', []) if prevDoc else [], | |
10
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
133 'suggestedTags': ['tag1', 'tag2'], |
30 | 134 'existed': |
135 prevDoc is not None, | |
136 } | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
137 |
30 | 138 |
139 # proposal check existing links, get page title (stuff that in db), get tags from us and other serviecs. maybe the deferred ones ater | |
4 | 140 |
10
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
141 |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
142 @bottle.route('/tags') |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
143 def tagFilterComplete(): |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
144 params = bottle.request.params |
28 | 145 haveTags = [_f for _f in params['have'].split(',') if _f] |
22
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
146 if haveTags and len(haveTags[-1]) > 0: |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
147 haveTags, partialTerm = haveTags[:-1], haveTags[-1] |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
148 else: |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
149 partialTerm = "" |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
150 |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
151 out = [] |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
152 for t in allTags(params.user, withTags=haveTags): |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
153 if partialTerm and partialTerm not in t['label']: |
fa55f4439977
fix autocomplete. less console.log
Drew Perttula <drewp@bigasterisk.com>
parents:
21
diff
changeset
|
154 continue |
30 | 155 out.append({ |
156 'id': | |
157 t['label'], | |
158 'text': | |
159 "%s (%s%s)" % (t['label'], t['count'], " left" if haveTags else "") | |
160 }) | |
161 | |
162 return {'tags': out} | |
163 | |
164 | |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
165 @bottle.route('/<user>/') |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
166 def userSlash(user): |
28 | 167 bottle.redirect(siteRoot() + "/%s" % urllib.parse.quote(user)) |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
168 |
30 | 169 |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
170 @bottle.route('/<user>.json', method='GET') |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
171 def userAllJson(user): |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
172 data = recentLinks(user, [], allowEdit=getUser()[0] == user) |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
173 data['toRoot'] = siteRoot() |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
174 return json.dumps(data) |
30 | 175 |
176 | |
4 | 177 @bottle.route('/<user>', method='GET') |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
178 def userAll(user): |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
179 return userLinks(user, "") |
30 | 180 |
181 | |
4 | 182 @bottle.route('/<user>', method='POST') |
183 def userAddLink(user): | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
184 if getUser()[0] != user: |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
185 raise ValueError("not logged in as %s" % user) |
28 | 186 print(repr(bottle.request.params.__dict__)) |
30 | 187 doc = links.fromPostdata(bottle.request.params, user, |
10
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
188 datetime.datetime.now(tzlocal())) |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
189 links.insertOrUpdate(doc) |
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
190 |
28 | 191 print("notify about sharing to", repr(doc['shareWith'])) |
30 | 192 |
25 | 193 bottle.redirect(siteRoot() + '/' + user) |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
194 |
30 | 195 |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
196 def parseTags(tagComponent): |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
197 # the %20 is coming from davis.js, not me :( |
28 | 198 return [_f for _f in tagComponent.replace("%20", "+").split('+') if _f] |
30 | 199 |
200 | |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
201 @bottle.route('/<user>/<tags:re:.*>.json') |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
202 def userLinksJson(user, tags): |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
203 tags = parseTags(tags) |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
204 data = recentLinks(user, tags, allowEdit=getUser()[0] == user) |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
205 data['toRoot'] = siteRoot() |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
206 return json.dumps(data) |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
207 |
30 | 208 |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
209 @bottle.route('/<user>/<tags>') |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
210 def userLinks(user, tags): |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
211 tags = parseTags(tags) |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
212 log.info('userLinks user=%r tags=%r', user, tags) |
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
213 data = recentLinks(user, tags, allowEdit=getUser()[0] == user) |
30 | 214 data['desc'] = ("%s's recent links" % user) + (" tagged %s" % |
215 (tags, ) if tags else "") | |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
216 data['toRoot'] = siteRoot() |
7
93d94f327e82
autocomplete in link page box
Drew Perttula <drewp@bigasterisk.com>
parents:
5
diff
changeset
|
217 data['allTags'] = allTags(user) |
10
e054949143e9
reworking addlink and shareWith support
drewp@bigasterisk.com
parents:
7
diff
changeset
|
218 data['user'] = user |
20
a8887fb93676
hide share data from the public. bug in links filter box
Drew Perttula <drewp@bigasterisk.com>
parents:
16
diff
changeset
|
219 data['showPrivateData'] = (user == getUser()[0]) |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
220 |
30 | 221 data['pageTags'] = [{"word": t} for t in tags] |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
222 data['stats']['template'] = 'TEMPLATETIME' |
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
223 return renderWithTime('links.jade', data) |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
224 |
30 | 225 |
21
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
226 @bottle.route('/templates') |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
227 def templates(): |
8008ec2fd763
fix up link page reloading. tried davisjs; may not need it
Drew Perttula <drewp@bigasterisk.com>
parents:
20
diff
changeset
|
228 return json.dumps({'linklist': renderer.load_template("linklist.jade")}) |
30 | 229 |
230 | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
231 @bottle.route('/') |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
232 def root(): |
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
233 data = { |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
234 'toRoot': siteRoot(), |
30 | 235 'stats': { |
236 'template': 'TEMPLATETIME' | |
237 }, | |
238 'users': [{ | |
239 'user': doc['username'] | |
240 } for doc in db['user'].find()], | |
241 } | |
5
f8c4c7ce5f4a
lots of href additions: add/edit, nav fixes
Drew Perttula <drewp@bigasterisk.com>
parents:
4
diff
changeset
|
242 return renderWithTime('index.jade', data) |
30 | 243 |
244 | |
2
80b11112c9e0
web app for query urls like /user and /user/tag+tag
Drew Perttula <drewp@bigasterisk.com>
parents:
diff
changeset
|
245 if __name__ == '__main__': |
24
ab9a6132529a
redo siteRoot handling. fix some pathing bugs.
drewp@bigasterisk.com
parents:
22
diff
changeset
|
246 logging.basicConfig(level=logging.INFO) |
33 | 247 bottle.run(server='gunicorn', host='0.0.0.0', port=10002, workers=1) |