class unfav: def __init__(self): self.crumb = Crumb() def GET(self, node_name): node = node_model().get_one({'name': node_name}) if node is None: self.crumb.append('节点未找到') return render.node_nf('节点未找到', self.crumb.output()) if session.user_id is None: raise web.SeeOther('/login?next=/node/' + node_name) user_meta_model().delete({ 'user_id': session.user_id, 'meta_key': 'node_fav', 'meta_value': node.id }) user_model().update({'id': session.user_id}, { 'node_favs': user_meta_model().count_meta({ 'user_id': session.user_id, 'meta_key': 'node_fav' }) }) user_model().update_session(session.user_id) raise web.SeeOther('/node/' + node_name)
class fav: def __init__(self): self.crumb = Crumb() def GET(self, post_id): post = post_model().get_one({'id': post_id}) if post is None: self.crumb.append('主题未找到') return render.post_nf('主题未找到', self.crumb.output()) if session.user_id is None: raise web.SeeOther('/login?next=/post/fav/' + post_id) user_meta_model().unique_insert({ 'user_id': session.user_id, 'meta_key': 'post_fav', 'meta_value': post_id }) user_model().update({'id': session.user_id}, { 'post_favs': user_meta_model().count_meta({ 'user_id': session.user_id, 'meta_key': 'post_fav' }) }) user_model().update_session(session.user_id) raise web.SeeOther('/post/' + post_id)
def GET(self): #sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20' #post_ids = post_model().query_result(sql) crumb = Crumb() limit = 50 total = post_model().count_table() pagination = Pagination('/recent', total, limit=limit) page = pagination.true_page(web.input(p=1)['p']) post_results = post_model().get_all(limit=limit, offset=(page - 1) * limit, order='time DESC') posts = [] for post_result in post_results: #post_result = post_model().get_one({'id':row.post_id}) post = {'post': post_result} user = user_model().get_one({'id': post_result.user_id}) post['user'] = user node = node_model().get_one({'id': post_result.node_id}) post['node'] = node comment = comment_model().get_one({'post_id': post_result.id}, order='time DESC') if comment: comment_user = user_model().get_one({'id': comment.user_id}) post['comment_user'] = comment_user else: post['comment_user'] = None posts.append(post) crumb.append('最近的主题') return render.recent('最近的主题', total, crumb.output(), posts, pagination.output())
def GET(self): # sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20' # post_ids = post_model().query_result(sql) crumb = Crumb() limit = 50 total = post_model().count_table() pagination = Pagination("/recent", total, limit=limit) page = pagination.true_page(web.input(p=1)["p"]) post_results = post_model().get_all(limit=limit, offset=(page - 1) * limit, order="time DESC") posts = [] for post_result in post_results: # post_result = post_model().get_one({'id':row.post_id}) post = {"post": post_result} user = user_model().get_one({"id": post_result.user_id}) post["user"] = user node = node_model().get_one({"id": post_result.node_id}) post["node"] = node comment = comment_model().get_one({"post_id": post_result.id}, order="time DESC") if comment: comment_user = user_model().get_one({"id": comment.user_id}) post["comment_user"] = comment_user else: post["comment_user"] = None posts.append(post) crumb.append("最近的主题") return render.recent("最近的主题", total, crumb.output(), posts, pagination.output())
def GET(self): crumb = Crumb() condition = {"receiver": session.user_id} total = notify_model().count_table(condition) limit = 10 pagination = Pagination("/notifications", total, limit=limit) page = pagination.true_page(web.input(p=1)["p"]) notify_result = notify_model().get_all(condition, order="id DESC", limit=limit, offset=(page - 1) * limit) notifications = [] if notify_result is not None: for notify in notify_result: post = None user = None comment = None notify_type = notify_type_model().get_one({"id": notify.type_id}).name user = user_model().get_one({"id": notify.user_id}) if notify_type == "post_at": post = post_model().get_one({"id": notify.foreign_id}) elif notify_type == "comment" or notify_type == "comment_at": comment = comment_model().get_one({"id": notify.foreign_id}) post = post_model().get_one({"id": comment.post_id}) notifications.append( {"notify": notify, "post": post, "user": user, "comment": comment, "type": notify_type} ) notify_model().mark_as_read(session.user_id) crumb.append("提醒系统") return render.notify("提醒系统", crumb.output(), total, notifications, pagination.output())
def __init__(self): self.crumb = Crumb() self.form = web.form.Form( web.form.Textarea('title', notnull, class_='mle', description=''), web.form.Textarea('content', notnull, class_='mle tall', description=''), web.form.Button('编辑', class_='super normal button'))
def GET(self): # sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20' # post_ids = post_model().query_result(sql) crumb = Crumb() limit = 50 total = post_model().count_table() pagination = Pagination("/recent", total, limit=limit) page = pagination.true_page(web.input(p=1)["p"]) posts = post_model().trends(limit, (page - 1) * limit) crumb.append("最近的主题") return render.recent("最近的主题", total, crumb.output(), posts, pagination.output())
def GET(self): #sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20' #post_ids = post_model().query_result(sql) crumb = Crumb() limit = 50 total = post_model().count_table() pagination = Pagination('/recent', total, limit=limit) page = pagination.true_page(web.input(p=1)['p']) posts = post_model().trends(limit, (page - 1) * limit) crumb.append('最近的主题') return render.recent('最近的主题', total, crumb.output(), posts, pagination.output())
def __init__(self): self.crumb = Crumb() self.form = web.form.Form( web.form.Textarea('title', notnull, class_='mle', description=''), web.form.Textarea('content', notnull, class_='mle tall', description=''), web.form.Button('编辑', class_='super normal button') )
class unfav: def __init__(self): self.crumb = Crumb() def GET(self, node_name): node = node_model().get_one({'name': node_name}) if node is None: self.crumb.append('节点未找到') return render.node_nf('节点未找到', self.crumb.output()) if session.user_id is None: raise web.SeeOther('/login?next=/node/'+node_name) user_meta_model().delete({'user_id':session.user_id, 'meta_key':'node_fav', 'meta_value':node.id}) user_model().update({'id':session.user_id}, {'node_favs':user_meta_model().count_meta({'user_id':session.user_id, 'meta_key':'node_fav'})}) user_model().update_session(session.user_id) raise web.SeeOther('/node/'+node_name)
class fav: def __init__(self): self.crumb = Crumb() def GET(self, post_id): post = post_model().get_one({'id':post_id}) if post is None: self.crumb.append('主题未找到') return render.post_nf('主题未找到', self.crumb.output()) if session.user_id is None: raise web.SeeOther('/login?next=/post/fav/'+post_id) user_meta_model().unique_insert({'user_id':session.user_id, 'meta_key':'post_fav', 'meta_value':post_id}) user_model().update({'id':session.user_id}, {'post_favs':user_meta_model().count_meta({'user_id':session.user_id, 'meta_key':'post_fav'})}) user_model().update_session(session.user_id) raise web.SeeOther('/post/' + post_id)
class view: def __init__(self): self.crumb = Crumb() def POST(self, id): raise web.SeeOther('/post/' + str(id)) def GET(self, id): limit = 10 post_model().add_view(id) post = post_model().get_one({'id':id}) if post is None: self.crumb.append('主题未找到') return render.post_nf('主题未找到', self.crumb.output()) else: post_fav = False if session.user_id: if user_meta_model().get_one({'user_id':session.user_id, 'meta_key':'post_fav', 'meta_value':post.id}): post_fav = True favs = user_meta_model().count_meta({'meta_key':'post_fav','meta_value':id}) node = node_model().get_one({'id':post.node_id}) user = user_model().get_one({'id':post.user_id}) #return user.name self.crumb.append(node.display_name, '/node/'+node.name) thanks = False if session.user_id is not None: if post_thanks_model().get_one({'user_id':session.user_id, 'post_id':post.id}): thanks = True condition = {'post_id' : post.id} # Pagination total = comment_model().count_table(condition) pagination = Pagination('/post/'+str(post.id), total, limit = 100) page = pagination.true_page(web.input(p=1)['p']) comments_result = comment_model().get_all(condition, order = 'time ASC', limit = 100, offset = (page-1)*100) comments = [] if comments_result is not None: for comment_result in comments_result: comment_user = user_model().get_one({'id':comment_result.user_id}) comment_thanks = False if session.user_id is not None: if comment_thanks_model().get_one({'user_id':session.user_id, 'comment_id':comment_result.id}): comment_thanks = True comments.append({'comment':comment_result, 'user':comment_user, 'thanks':comment_thanks}) form = comment_model().form return render.post_view(post, user, comments, form, post_fav, favs, thanks, self.crumb.output(), pagination)
class index: def __init__(self): self.crumb = Crumb() def GET(self, node_name): limit = 10 node = node_model().get_one({'name': node_name}) if node is None: self.crumb.append('节点未找到') return render.node_nf('节点未找到', self.crumb.output()) else: self.crumb.append(node.display_name) node_fav = False if session.user_id: if user_meta_model().get_one({'user_id':session.user_id, 'meta_key':'node_fav', 'meta_value':node.id}): node_fav = True total_rows = post_model().count_table({'node_id':node.id}) pagination = Pagination('/node/'+node_name, total_rows, limit = limit) page = pagination.true_page(web.input(p=1)['p']) posts_result = post_model().get_all({'node_id' : node.id}, limit = limit, offset = (page-1)*limit , order = 'time DESC') posts = [] for post_result in posts_result: post = {'post':post_result} user = user_model().get_one({'id':post_result.user_id}) post['user'] = user comment = comment_model().get_one({'post_id':post_result.id}, order='time DESC') if comment: comment_user = user_model().get_one({'id':comment.user_id}) post['comment_user'] = comment_user else: post['comment_user'] = None posts.append(post) return render.node_posts(posts, node, total_rows, node_fav, self.crumb.output(), pagination.output())
def GET(self): crumb = Crumb() condition = {'receiver': session.user_id} total = notify_model().count_table(condition) limit = 10 pagination = Pagination('/notifications', total, limit=limit) page = pagination.true_page(web.input(p=1)['p']) notify_result = notify_model().get_all(condition, order='id DESC', limit=limit, offset=(page - 1) * limit) notifications = [] if notify_result is not None: for notify in notify_result: post = None user = None comment = None notify_type = notify_type_model().get_one({ 'id': notify.type_id }).name user = user_model().get_one({'id': notify.user_id}) if notify_type == 'post_at': post = post_model().get_one({'id': notify.foreign_id}) elif notify_type == 'comment' or notify_type == 'comment_at': comment = comment_model().get_one( {'id': notify.foreign_id}) post = post_model().get_one({'id': comment.post_id}) notifications.append({ 'notify': notify, 'post': post, 'user': user, 'comment': comment, 'type': notify_type }) notify_model().mark_as_read(session.user_id) crumb.append('提醒系统') return render.notify('提醒系统', crumb.output(), total, notifications, pagination.output())
class view: crumb = Crumb() def POST(self, id): raise web.SeeOther('/post/' + str(id)) def GET(self, id): limit = 10 post_model().add_view(id) post = post_model().get_one({'id':id}) if post is None: self.crumb.append('主题未找到') return render.post_nf('主题未找到', self.crumb.output()) else: post_fav = False if session.user_id: if user_meta_model().get_one({'user_id':session.user_id, 'meta_key':'post_fav', 'meta_value':post.id}): post_fav = True favs = user_meta_model().count_meta({'meta_key':'post_fav','meta_value':id}) node = node_model().get_one({'id':post.node_id}) user = user_model().get_one({'id':post.user_id}) #return user.name self.crumb.append(node.display_name, '/node/'+node.name) thanks = False if session.user_id is not None: if post_thanks_model().get_one({'user_id':session.user_id, 'post_id':post.id}): thanks = True condition = {'post_id' : post.id} # Pagination total = comment_model().count_table(condition) pagination = Pagination('/post/'+str(post.id), total, limit = 100) page = pagination.true_page(web.input(p=(total/100)*100 + 1)['p']) comments_result = comment_model().get_all(condition, order = 'time ASC', limit = 100, offset = (page-1)*100) comments = [] if comments_result is not None: for comment_result in comments_result: comment_user = user_model().get_one({'id':comment_result.user_id}) comment_thanks = False if session.user_id is not None: if comment_thanks_model().get_one({'user_id':session.user_id, 'comment_id':comment_result.id}): comment_thanks = True comments.append({'comment':comment_result, 'user':comment_user, 'thanks':comment_thanks}) form = comment_model().form return render.post_view(post, user, comments, form, post_fav, favs, thanks, self.crumb.output(), pagination)
class index: crumb = Crumb() def GET(self, node_name): limit = 10 node = node_model().get_one({'name': node_name}) if node is None: self.crumb.append('节点未找到') return render.node_nf('节点未找到', self.crumb.output()) else: self.crumb.append(node.display_name) node_fav = False if session.user_id: if user_meta_model().get_one({ 'user_id': session.user_id, 'meta_key': 'node_fav', 'meta_value': node.id }): node_fav = True total_rows = post_model().count_table({'node_id': node.id}) pagination = Pagination('/node/' + node_name, total_rows, limit=limit) page = pagination.true_page(web.input(p=1)['p']) posts_result = post_model().get_all({'node_id': node.id}, limit=limit, offset=(page - 1) * limit, order='time DESC') posts = [] for post_result in posts_result: post = {'post': post_result} user = user_model().get_one({'id': post_result.user_id}) post['user'] = user comment = comment_model().get_one({'post_id': post_result.id}, order='time DESC') if comment: comment_user = user_model().get_one( {'id': comment.user_id}) post['comment_user'] = comment_user else: post['comment_user'] = None posts.append(post) return render.node_posts(posts, node, total_rows, node_fav, self.crumb.output(), pagination.output())
class create: crumb = Crumb() form = post_model().form def GET(self, node_name): if session.user_id is None: raise web.SeeOther('/login?next=/post/create/' + node_name) conditions = {'name' : node_name} node = node_model().get_one(conditions) self.crumb.append(node.display_name, '/node/'+node.name) self.crumb.append('创建新主题') if node is None: self.crumb.claer() return render.not_found('节点未找到', '节点未找到') title = '创建主题' return render.create_post(self.form, title, self.crumb.output()) def POST(self, node_name): if session.user_id is None: raise web.SeeOther('/login?next=/post/create' + node_name) conditions = {'name' : node_name} node = node_model().get_one(conditions) if node is None: return render.not_found('节点未找到', '节点未找到') if not self.form.validates(): return render.create_post(self.form, '创建失败, 请重创:D', self.crumb.output()) user_model().update_session(session.user_id) length, cost = money_model().cal_post(self.form.d.content) if session.money < cost: self.crumb.append('财富不够') return render.no_money('财富不够', '你的财富值不够,不能创建改主题 :(', self.crumb.output()) title = html2db(self.form.d.title) content = html2db(self.form.d.content) create_time = time.time() post_id = post_model().insert({'title' : title, 'content' : content, 'node_id' : node.id, 'time' : create_time, 'last_update':create_time, 'user_id' : session.user_id}) money_type_id = money_type_model().get_one({'name':'post'})['id'] money_model().insert({'user_id':session.user_id, 'money_type_id':money_type_id, 'amount':-cost, 'length':length, 'balance':user_model().update_money(session.user_id, -cost), 'foreign_id':post_id}) user_model().update_session(session.user_id) raise web.seeother('/post/' + str(post_id))
class index: def __init__(self): self.crumb = Crumb() def GET(self, node_name): limit = 10 node = node_model().get_one({'name': node_name}) if node is None: self.crumb.append('节点未找到') return render.node_nf('节点未找到', self.crumb.output()) else: self.crumb.append(node.display_name) node_fav = False if session.user_id: if user_meta_model().get_one({'user_id':session.user_id, 'meta_key':'node_fav', 'meta_value':node.id}): node_fav = True total_rows = post_model().count_table({'node_id':node.id}) pagination = Pagination('/node/'+node_name, total_rows, limit = limit) page = pagination.true_page(web.input(p=1)['p']) posts = post_model().trends(limit, (page-1) * limit, node.id) return render.node_posts(posts, node, total_rows, node_fav, self.crumb.output(), pagination.output())
def GET(self): crumb = Crumb() crumb.append('关于') return render.about('关于', crumb.output())
def GET(self): crumb = Crumb() crumb.append('最近的主题') total, posts, pagination = self._get() return render.recent('最近的主题', total, crumb.output(), posts, pagination.output())
class admin: crumb = Crumb() def __init__(self): if session.user_id != 1: raise web.SeeOther('/') self.crumb.append('后台', '/admin')
def GET(self): crumb = Crumb() crumb.append("关于") return render.about("关于", crumb.output())
class edit: def __init__(self): self.crumb = Crumb() self.form = web.form.Form( web.form.Textarea('title', notnull, class_='mle', description=''), web.form.Textarea('content', notnull, class_='mle tall', description=''), web.form.Button('编辑', class_='super normal button') ) def GET(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/edit/post/' + post_id) conditions = {'id' : int(post_id)} post = post_model().get_one(conditions) if session.user_id != post.user_id: raise web.SeeOther('/login?next=/edit/post/' + post_id) self.crumb.append(post["title"], '/post/'+post_id) self.crumb.append('编辑主题') if post is None: self.crumb.claer() return render.not_found('节点未找到', '节点未找到') title = '编辑主题' self.form.title.value = post.title self.form.content.value = post.content return render.edit_post(self.form, title, self.crumb.output()) def POST(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/edit/post/' + post_id) conditions = {'id' : int(post_id)} post = post_model().get_one(conditions) if post is None: return render.not_found('节点未找到', '节点未找到') if not self.form.validates(): return render.create_post(self.form, '创建失败, 请重创:D', self.crumb.output()) user_model().update_session(session.user_id) length, cost = money_model().cal_post(self.form.d.content) if session.money < cost: self.crumb.append('财富不够') return render.no_money('财富不够', '你的财富值不够,不能创建改主题 :(', self.crumb.output()) title = strip_tags(self.form.d.title) content = html2db(self.form.d.content) content, receiver_list = notify_model().convert_content(content) create_time = time.time() post_model().update({'id':int(post_id)}, {'title' : title, 'content' : content, 'node_id' : post.node_id, 'time' : create_time, 'last_update':create_time, 'user_id' : session.user_id}) # money money_type_id = money_type_model().get_one({'name':'post'})['id'] money_model().insert({'user_id':session.user_id, 'money_type_id':money_type_id, 'amount':-cost, 'length':length, 'balance':user_model().update_money(session.user_id, -cost), 'foreign_id':post_id}) # notify receiver_list = list_diff(receiver_list, [session.name]) notify_model().insert_notify(session.user_id, receiver_list, 'post_at', post_id) user_model().update_session(session.user_id) raise web.seeother('/post/' + str(post_id))
def __init__(self): if session.user_id != 1: raise web.SeeOther('/') self.crumb = Crumb() self.crumb.append('后台', '/admin')
def __init__(self): self.crumb = Crumb() self.form = post_model().form
class create: def __init__(self): self.crumb = Crumb() self.form = post_model().form def GET(self, node_name): if session.user_id is None: raise web.SeeOther('/login?next=/post/create/' + node_name) conditions = {'name' : node_name} node = node_model().get_one(conditions) self.crumb.append(node.display_name, '/node/'+node.name) self.crumb.append('创建新主题') if node is None: self.crumb.claer() return render.not_found('节点未找到', '节点未找到') title = '创建主题' return render.create_post(self.form, title, self.crumb.output()) def POST(self, node_name): if session.user_id is None: raise web.SeeOther('/login?next=/post/create' + node_name) conditions = {'name' : node_name} node = node_model().get_one(conditions) if node is None: return render.not_found('节点未找到', '节点未找到') if not self.form.validates(): return render.create_post(self.form, '创建失败, 请重创:D', self.crumb.output()) user_model().update_session(session.user_id) length, cost = money_model().cal_post(self.form.d.content) if session.money < cost: self.crumb.append('财富不够') return render.no_money('财富不够', '你的财富值不够,不能创建改主题 :(', self.crumb.output()) title = strip_tags(self.form.d.title) content = html2db(self.form.d.content) content, receiver_list = notify_model().convert_content(content) create_time = time.time() post_id = post_model().insert({'title' : title, 'content' : content, 'node_id' : node.id, 'time' : create_time, 'last_update':create_time, 'user_id' : session.user_id}) # money money_type_id = money_type_model().get_one({'name':'post'})['id'] money_model().insert({'user_id':session.user_id, 'money_type_id':money_type_id, 'amount':-cost, 'length':length, 'balance':user_model().update_money(session.user_id, -cost), 'foreign_id':post_id}) # notify receiver_list = list_diff(receiver_list, [session.name]) notify_model().insert_notify(session.user_id, receiver_list, 'post_at', post_id) user_model().update_session(session.user_id) raise web.seeother('/post/' + str(post_id))
def __init__(self): if session.user_id != 1: raise web.SeeOther("/") self.crumb = Crumb() self.crumb.append("后台", "/admin")
def __init__(self): self.crumb = Crumb()
class edit: def __init__(self): self.crumb = Crumb() self.form = web.form.Form( web.form.Textarea('title', notnull, class_='mle', description=''), web.form.Textarea('content', notnull, class_='mle tall', description=''), web.form.Button('编辑', class_='super normal button')) def GET(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/edit/post/' + post_id) conditions = {'id': int(post_id)} post = post_model().get_one(conditions) if session.user_id != post.user_id: raise web.SeeOther('/login?next=/edit/post/' + post_id) self.crumb.append(post["title"], '/post/' + post_id) self.crumb.append('编辑主题') if post is None: self.crumb.claer() return render.not_found('节点未找到', '节点未找到') title = '编辑主题' self.form.title.value = post.title self.form.content.value = post.content return render.edit_post(self.form, title, self.crumb.output()) def POST(self, post_id): if session.user_id is None: raise web.SeeOther('/login?next=/edit/post/' + post_id) conditions = {'id': int(post_id)} post = post_model().get_one(conditions) if post is None: return render.not_found('节点未找到', '节点未找到') if not self.form.validates(): return render.create_post(self.form, '创建失败, 请重创:D', self.crumb.output()) user_model().update_session(session.user_id) length, cost = money_model().cal_post(self.form.d.content) if session.money < cost: self.crumb.append('财富不够') return render.no_money('财富不够', '你的财富值不够,不能创建改主题 :(', self.crumb.output()) title = strip_tags(self.form.d.title) content = html2db(self.form.d.content) content, receiver_list = notify_model().convert_content(content) create_time = time.time() post_model().update({'id': int(post_id)}, { 'title': title, 'content': content, 'node_id': post.node_id, 'time': create_time, 'last_update': create_time, 'user_id': session.user_id }) # money money_type_id = money_type_model().get_one({'name': 'post'})['id'] money_model().insert({ 'user_id': session.user_id, 'money_type_id': money_type_id, 'amount': -cost, 'length': length, 'balance': user_model().update_money(session.user_id, -cost), 'foreign_id': post_id }) # notify receiver_list = list_diff(receiver_list, [session.name]) notify_model().insert_notify(session.user_id, receiver_list, 'post_at', post_id) user_model().update_session(session.user_id) raise web.seeother('/post/' + str(post_id))