forked from livid/v2ex-gae
-
Notifications
You must be signed in to change notification settings - Fork 6
/
my.py
135 lines (123 loc) · 5.11 KB
/
my.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env python
# coding=utf-8
import os
import re
import time
import datetime
import hashlib
import string
import random
from google.appengine.ext import webapp
from google.appengine.api import memcache
from google.appengine.ext import db
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template
from v2ex.babel import Member
from v2ex.babel import Counter
from v2ex.babel import Section
from v2ex.babel import Node
from v2ex.babel import Topic
from v2ex.babel import Reply
from v2ex.babel import Note
from v2ex.babel import SYSTEM_VERSION
from v2ex.babel.security import *
from v2ex.babel.ua import *
from v2ex.babel.da import *
from v2ex.babel.l10n import *
from v2ex.babel.ext.cookies import Cookies
from v2ex.babel.ext.sessions import Session
template.register_template_library('v2ex.templatetags.filters')
class MyNodesHandler(webapp.RequestHandler):
def get(self):
member = CheckAuth(self)
if member:
site = GetSite()
l10n = GetMessages(self, member, site)
template_values = {}
template_values['site'] = site
template_values['member'] = member
template_values['l10n'] = l10n
template_values['page_title'] = site.title + u' › 我收藏的节点'
template_values['rnd'] = random.randrange(1, 100)
if member.favorited_nodes > 0:
template_values['has_nodes'] = True
q = db.GqlQuery("SELECT * FROM NodeBookmark WHERE member = :1 ORDER BY created DESC LIMIT 0,15", member)
template_values['column_1'] = q
if member.favorited_nodes > 15:
q2 = db.GqlQuery("SELECT * FROM NodeBookmark WHERE member = :1 ORDER BY created DESC LIMIT 15,15", member)
template_values['column_2'] = q2
else:
template_values['has_nodes'] = False
path = os.path.join(os.path.dirname(__file__), 'tpl', 'desktop', 'my_nodes.html')
output = template.render(path, template_values)
self.response.out.write(output)
else:
self.redirect('/')
class MyTopicsHandler(webapp.RequestHandler):
def get(self):
member = CheckAuth(self)
if member:
site = GetSite()
l10n = GetMessages(self, member, site)
template_values = {}
template_values['site'] = site
template_values['member'] = member
template_values['l10n'] = l10n
template_values['page_title'] = site.title + u' › 我收藏的主题'
template_values['rnd'] = random.randrange(1, 100)
if member.favorited_topics > 0:
template_values['has_topics'] = True
q = db.GqlQuery("SELECT * FROM TopicBookmark WHERE member = :1 ORDER BY created DESC", member)
bookmarks = []
for bookmark in q:
try:
topic = bookmark.topic
bookmarks.append(bookmark)
except:
bookmark.delete()
template_values['bookmarks'] = bookmarks
else:
template_values['has_topics'] = False
path = os.path.join(os.path.dirname(__file__), 'tpl', 'desktop', 'my_topics.html')
output = template.render(path, template_values)
self.response.out.write(output)
else:
self.redirect('/')
class MyFollowingHandler(webapp.RequestHandler):
def get(self):
member = CheckAuth(self)
if member:
site = GetSite()
l10n = GetMessages(self, member, site)
template_values = {}
template_values['site'] = site
template_values['member'] = member
template_values['l10n'] = l10n
template_values['page_title'] = site.title + u' › 我的特别关注'
template_values['rnd'] = random.randrange(1, 100)
if member.favorited_members > 0:
template_values['has_following'] = True
q = db.GqlQuery("SELECT * FROM MemberBookmark WHERE member_num = :1 ORDER BY created DESC", member.num)
template_values['following'] = q
following = []
for bookmark in q:
following.append(bookmark.one.num)
q2 = db.GqlQuery("SELECT * FROM Topic WHERE member_num IN :1 ORDER BY created DESC LIMIT 20", following)
template_values['latest'] = q2
else:
template_values['has_following'] = False
path = os.path.join(os.path.dirname(__file__), 'tpl', 'desktop', 'my_following.html')
output = template.render(path, template_values)
self.response.out.write(output)
else:
self.redirect('/')
def main():
application = webapp.WSGIApplication([
('/my/nodes', MyNodesHandler),
('/my/topics', MyTopicsHandler),
('/my/following', MyFollowingHandler)
],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()