예제 #1
0
 def POST(self, node_name):
     node = node_model().get_one({'name':node_name})
     if node is None:
         return admin_render.node_nf('节点不存在', self.crumb.output())
     if self.form.validates():
         node_model().update({'name':node.name}, {'display_name':self.form.d.display_name, 'description':self.form.d.description})
         raise web.SeeOther('/admin/node/'+node.name)
예제 #2
0
파일: admin.py 프로젝트: qqshow/post_bar
    def POST(self, cat_name):
        cat = cat_model().get_one({"name": cat_name})
        if cat is None:
            self.crumb.append("分类不存在")
            return admin_render.cat_nf("分类不存在", self.crumb.output())
        if self.form.validates():
            if node_model().unique_insert({"name": self.form.d.name}):
                # 为了保证不插入空的display_name的节点,故此
                try:
                    node_model().update(
                        {"name": self.form.d.name},
                        {
                            "category_id": cat.id,
                            "display_name": self.form.d.display_name,
                            "description": self.form.d.description,
                        },
                    )
                except:
                    node_model().delete({"name": self.form.d.name})

                web.SeeOther("/admin/node/" + self.form.d.name)
            else:
                return admin_render.create_cat("节点名已存在", self.crumb.output(), self.form)
        else:
            return admin_render.create_node("添加新节点", self.crumb.output(), cat, self.form)
예제 #3
0
 def GET(self):
     title = '首页'
     #sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20'
     #post_ids = post_model().query_result(sql)
     post_results = post_model().get_all(order='last_update DESC', limit=20)
     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)
     cats_result = cat_model().get_all()
     cats = []
     for cat_result in cats_result:
         cat = {'cat': cat_result}
         node = node_model().get_all({'category_id': cat_result.id})
         cat['node'] = node
         cats.append(cat)
     return render.index(cats, posts, title)
예제 #4
0
파일: index.py 프로젝트: Aimsam/post_bar
 def GET(self):
 	title = '首页'
     #sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20'
     #post_ids = post_model().query_result(sql)
     post_results = post_model().get_all(order='last_update DESC', limit=20)
     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)
     cats_result = cat_model().get_all()
     cats = []
     for cat_result in cats_result:
         cat = {'cat':cat_result}
         node = node_model().get_all({'category_id':cat_result.id})
         cat['node'] = node
         cats.append(cat)
     return render.index(cats, posts, title)
예제 #5
0
파일: admin.py 프로젝트: qqshow/post_bar
 def POST(self, node_name):
     node = node_model().get_one({"name": node_name})
     if node is None:
         return admin_render.node_nf("节点不存在", self.crumb.output())
     if self.form.validates():
         node_model().update(
             {"name": node.name}, {"display_name": self.form.d.display_name, "description": self.form.d.description}
         )
         raise web.SeeOther("/admin/node/" + node.name)
예제 #6
0
파일: admin.py 프로젝트: qqshow/post_bar
    def POST(self, node_name):
        node = node_model().get_one({"name": node_name})
        if node is None:
            return admin_render.node_nf("节点不存在", self.crumb.output())
        cat = cat_model().get_one({"id": node.category_id})
        self.crumb.append(cat.display_name, "/admin/cat/" + cat.name)
        self.crumb.append(node.display_name, "/admin/node/" + node.name)
        self.crumb.append("设置节点图标")
        import cgi
        import os

        cgi.maxlen = 2 * 1024 * 1024  # 2MB
        try:
            x = web.input(icon={})
        except ValueError:
            return admin_render.set_node_icon("设置节点图标", self.crumb.output(), node, " <<超过大小限制")
        if "icon" in x:
            # 客户端为windows时注意
            filepath = x.icon.filename.replace("\\", "/")
            # 获取文件名
            filename = filepath.split("/")[-1]
            # 获取后缀
            ext = filename.split(".", 1)[1].lower()
            ext_allow = ("jpg", "png", "gif", "jpeg")
            # 判断文件后缀名
            if ext in ext_allow:
                # 要上传的路径
                filedir = "static/icons/tmp/"
                try:
                    os.makedirs("static/icons/tmp")
                except:
                    pass
                filename = str(session.user_id) + "." + ext
                if os.path.exists(filedir + filename):
                    os.remove(filedir + filename)
                fout = open(filedir + filename, "wb")
                fout.write(x.icon.file.read())
                fout.close()
                node_model().set_icon(filename, node.id)
                error = False
            else:
                message = " <<请上传指定格式文件"
                error = True
        if error:
            return admin_render.set_node_icon("设置节点图标", self.crumb.output(), node, message)
        else:

            raise web.SeeOther("/admin/node/icon/" + node.name)
예제 #7
0
 def GET(self):
     cat_result = cat_model().get_all()
     cats = []
     for cat in cat_result:
         node_total = node_model().count_table({'category_id':cat.id})
         cats.append({'cat':cat, 'node_total':node_total})
     return admin_render.index('后台', cats, self.crumb.output())
예제 #8
0
 def GET(self):
     limit = 10
     self.crumb.append('我关注的人的最新主题')
     # 取出收藏的节点id
     followings = user_meta_model().get_all({'user_id':session.user_id, 'meta_key':'follow'})
     if len(followings) > 0 :
        user_favs = []
        for following in followings:
            user_favs.append(following.meta_value)
        total_rows = post_model().count_table({'user_id':user_favs})
        pagination = Pagination('/my/following', total_rows, limit = limit)
        page = pagination.true_page(web.input(p=1)['p'])
        posts_result = post_model().get_all(conditions = {'user_id': user_favs}, order = 'time DESC', limit = limit, offset = (page-1)*limit)
        posts = []
        for post_result in posts_result:
            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)
     else:
        posts = None
        total_rows = 0
        pagination = Pagination('/my/nodes', total_rows)
        page = pagination.true_page(web.input(p=1)['p'])
     return render.following_posts('来自我收藏的节点的最新主题', posts, total_rows, self.crumb.output(), pagination.output())
예제 #9
0
 def GET(self, name):
     limit = 10
     user = user_model().get_one({'name':name})
     crumb = Crumb()
     if user:
         crumb.append(name, '/profile/'+name)
         crumb.append('全部主题')
         total_rows = post_model().count_table({'user_id':user.id})
         pagination = Pagination('/profile/'+name+'/posts', total_rows, limit = limit)
         page = pagination.true_page(web.input(p=1)['p'])
         posts_result = post_model().get_all({'user_id':user.id}, limit = limit, offset = (page-1) * limit, order = 'time DESC')
         posts = []
         for post_result in posts_result:
             post = {'post':post_result}
             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)
         return render.user_posts('全部主题', user,  posts, total_rows, crumb.output(), pagination.output())
     else:
         crumb.append('会员未找到')
         return render.user_nf('会员未找到', crumb.output())
예제 #10
0
 def GET(self):
     limit = 10
     self.crumb.append('我收藏的主题')
     user = user_model().get_one({'id':session.user_id})
     pagination = Pagination('/my/posts', user.post_favs, limit = limit)
     if user.post_favs > 0:
         page = pagination.true_page(web.input(p=1)['p'])
         post_favs = user_meta_model().get_all({'user_id':user.id, 'meta_key':'post_fav'}, limit = limit, offset = (page-1)*limit, order = 'id DESC')
         posts = []
         for post_fav in post_favs:
             post_result = post_model().get_one({'id':post_fav.meta_value})
             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)
     else:
         posts = None
     return render.post_favs('我收藏的主题', user, posts, self.crumb.output(), pagination.output())
예제 #11
0
 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())
예제 #12
0
파일: post.py 프로젝트: Aimsam/post_bar
 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))
예제 #13
0
 def POST(self, cat_name):
     cat = cat_model().get_one({'name':cat_name})
     if cat is None:
         self.crumb.append('分类不存在')
         return admin_render.cat_nf('分类不存在', self.crumb.output())
     if self.form.validates():
         if node_model().unique_insert({'name':self.form.d.name}):
             # 为了保证不插入空的display_name的节点,故此
             try:
                 node_model().update({'name':self.form.d.name}, {'category_id':cat.id, 'display_name':self.form.d.display_name, 'description':self.form.d.description})                
             except:
                 node_model().delete({'name':self.form.d.name})
             self.crumb.clear()
             web.SeeOther('/admin/node/'+self.form.d.name)
         else:
             return admin_render.create_cat('节点名已存在', self.crumb.output(), self.form)
예제 #14
0
파일: node.py 프로젝트: Aimsam/post_bar
 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())
예제 #15
0
파일: index.py 프로젝트: nasawz/post_bar
 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())
예제 #16
0
파일: admin.py 프로젝트: qqshow/post_bar
 def GET(self):
     cat_result = cat_model().get_all()
     cats = []
     for cat in cat_result:
         node_total = node_model().count_table({"category_id": cat.id})
         cats.append({"cat": cat, "node_total": node_total})
     return admin_render.index("后台", cats, self.crumb.output())
예제 #17
0
 def POST(self, node_name):
     node = node_model().get_one({'name':node_name})
     if node is None:
         return admin_render.node_nf('节点不存在', self.crumb.output())
     cat = cat_model().get_one({'id':node.category_id})
     self.crumb.append(cat.display_name, '/admin/cat/'+cat.name)
     self.crumb.append(node.display_name, '/admin/node/'+node.name)
     self.crumb.append('设置节点图标')
     import cgi
     import os
     cgi.maxlen = 2 * 1024 * 1024 # 2MB
     try:
         x = web.input(icon={})
     except ValueError:
         return admin_render.set_node_icon('设置节点图标', self.crumb.output(), node, ' <<超过大小限制')
     if 'icon' in x:
         #客户端为windows时注意
         filepath=x.icon.filename.replace('\\','/')
         #获取文件名
         filename=filepath.split('/')[-1]
         #获取后缀
         ext = filename.split('.', 1)[1].lower()
         ext_allow = ('jpg', 'png', 'gif', 'jpeg')
         #判断文件后缀名 
         if ext in ext_allow:
             #要上传的路径
             filedir = 'static/icons/tmp/'
             try:
                 os.makedirs('static/icons/tmp')
             except:
                 pass
             filename = str(session.user_id) +'.'+ext
             if os.path.exists(filedir+filename):
                 os.remove(filedir+filename)
             fout = open(filedir + filename, 'wb')
             fout.write(x.icon.file.read())
             fout.close()
             node_model().set_icon(filename, node.id)
             error = False
         else:
             message = ' <<请上传指定格式文件'
             error = True
     if error:
         return admin_render.set_node_icon('设置节点图标', self.crumb.output(), node, message)
     else:
         self.crumb.clear()
         raise web.SeeOther('/admin/node/icon/'+node.name)
예제 #18
0
파일: admin.py 프로젝트: qqshow/post_bar
 def GET(self, node_name):
     node = node_model().get_one({"name": node_name})
     if node is None:
         return admin_render.node_nf("节点不存在", self.crumb.output())
     cat = cat_model().get_one({"id": node.category_id})
     self.crumb.append(cat.display_name, "/admin/cat/" + cat.name)
     self.crumb.append(node.display_name, "/admin/node/" + node.name)
     self.crumb.append("设置节点图标")
     return admin_render.set_node_icon("设置节点图标", self.crumb.output(), node)
예제 #19
0
 def GET(self, node_name):
     node = node_model().get_one({'name':node_name})
     if node is None:
         return admin_render.node_nf('节点不存在', self.crumb.output())
     cat = cat_model().get_one({'id':node.category_id})
     self.crumb.append(cat.display_name, '/admin/cat/'+cat.name)
     self.crumb.append(node.display_name, '/admin/node/'+node.name)
     self.crumb.append('设置节点图标')
     return admin_render.set_node_icon('设置节点图标', self.crumb.output(), node)
예제 #20
0
 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)
예제 #21
0
 def GET(self, method):
     web.header('Content-Type', 'application/json')
     if method.lower() == 'show':
         cats_result = cat_model().get_all()
         cats = []
         for cat_result in cats_result:
             cat = {'cat':cat_result}
             node = node_model().get_all({'category_id':cat_result.id})
             cat['node'] = node
             cats.append(cat)
         return json.dumps(cats)
예제 #22
0
파일: node.py 프로젝트: Aimsam/post_bar
 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)
예제 #23
0
 def POST(self, cat_name):
     cat = cat_model().get_one({'name':cat_name})
     if cat is None:
         self.crumb.append('分类不存在')
         return admin_render.cat_nf('分类不存在', self.crumb.output())
     if self.form.validates():
         if node_model().unique_insert({'name':self.form.d.name, 'category_id':cat.id, 'display_name':self.form.d.display_name, 'description':self.form.d.description}):
             web.SeeOther('/admin/node/'+self.form.d.name)
         else:
             return admin_render.create_cat('节点名已存在', self.crumb.output(), self.form)
     else:
         return admin_render.create_node('添加新节点', self.crumb.output(), cat, self.form)
예제 #24
0
파일: user.py 프로젝트: zhjchina/post_bar
 def GET(self, name):
     limit = 10
     user = user_model().get_one({'name': name})
     if user is None:
         crumb = Crumb()
         crumb.append('会员未找到')
         return render.user_nf('会员未找到', crumb.output())
     else:
         posts_result = post_model().get_all({'user_id': user.id},
                                             limit=limit,
                                             order='time DESC')
         if len(posts_result) > 0:
             posts = []
             for post_result in posts_result:
                 post = {'post': post_result}
                 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)
         else:
             posts = None
         comments_result = comment_model().get_all({'user_id': user.id},
                                                   limit=limit,
                                                   order='time DESC')
         if len(comments_result) > 0:
             comments = []
             for comment_result in comments_result:
                 post = post_model().get_one({'id': comment_result.post_id})
                 post_user = user_model().get_one({'id': post.user_id})
                 comment = {
                     'post': post,
                     'comment': comment_result,
                     'post_user': post_user
                 }
                 comments.append(comment)
         else:
             comments = None
         following = False
         if session.user_id:
             if user_meta_model().get_one({
                     'user_id': session.user_id,
                     'meta_key': 'follow',
                     'meta_value': user.id
             }):
                 following = True
         return render.profile(user.name, user, posts, comments, following)
예제 #25
0
파일: post.py 프로젝트: Aimsam/post_bar
 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())
예제 #26
0
 def GET(self, cat_name):
     cat = cat_model().get_one({'name':cat_name})
     if cat is None:
         self.crumb.append('分类不存在')
         return admin_render.cat_nf('分类不存在', self.crumb.output())
     else:
         self.crumb.append(cat.display_name)
         nodes = node_model().get_all({'category_id':cat.id})
         self.form.name.set_value(cat.name)
         self.form.display_name.set_value(cat.display_name)
         self.form.description.set_value(cat.description)
         return admin_render.cat_view(cat.display_name, self.crumb.output(), cat, self.form, nodes)
예제 #27
0
 def GET(self, node_name):
     node = node_model().get_one({'name':node_name})
     if node is None:
         return admin_render.node_nf('节点不存在', self.crumb.output())
     ##return node
     cat = cat_model().get_one({'id':node.category_id})
     self.form.name.set_value(node.name)
     self.form.display_name.set_value(node.display_name)
     self.form.description.set_value(node.description)
     self.crumb.append(cat.display_name, '/admin/cat/'+cat.name)
     self.crumb.append(node.display_name)
     return admin_render.node_view(node.display_name, self.crumb.output(), node, self.form)
예제 #28
0
 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())
예제 #29
0
파일: index.py 프로젝트: codepongo/post_bar
    def GET(self):
        title = '首页'
        #sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20'
        #post_ids = post_model().query_result(sql)
        posts = post_model().trends()

        cats_result = cat_model().get_all()
        cats = []
        for cat_result in cats_result:
            cat = {'cat':cat_result}
            node = node_model().get_all({'category_id':cat_result.id})
            cat['node'] = node
            cats.append(cat)
        return render.index(cats, posts, title)
예제 #30
0
    def GET(self):
        title = '首页'
        #sql = 'SELECT post_id FROM comment GROUP BY post_id ORDER BY MAX(time) DESC LIMIT 20'
        #post_ids = post_model().query_result(sql)
        posts = post_model().trends()

        cats_result = cat_model().get_all()
        cats = []
        for cat_result in cats_result:
            cat = {'cat': cat_result}
            node = node_model().get_all({'category_id': cat_result.id})
            cat['node'] = node
            cats.append(cat)
        return render.index(cats, posts, title)
예제 #31
0
 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))
예제 #32
0
 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())
예제 #33
0
 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())
예제 #34
0
파일: user.py 프로젝트: codepongo/post_bar
 def GET(self, name):
     limit = 10
     user = user_model().get_one({'name':name})
     if user is None:
         crumb = Crumb()
         crumb.append('会员未找到')
         return render.user_nf('会员未找到', crumb.output())
     else:
         posts_result = post_model().get_all({'user_id':user.id}, limit = limit, order = 'time DESC')
         if len(posts_result) > 0:
             posts = []
             for post_result in posts_result:
                 post = {'post':post_result}
                 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)
         else:
             posts = None
         comments_result = comment_model().get_all({'user_id':user.id}, limit = limit, order = 'time DESC')
         if len(comments_result) > 0:
             comments = []
             for comment_result in comments_result:
                 post = post_model().get_one({'id':comment_result.post_id})
                 post_user = user_model().get_one({'id':post.user_id})
                 comment = {'post':post, 'comment':comment_result, 'post_user':post_user}
                 comments.append(comment)
         else:
             comments = None
         following = False
         if session.user_id:
             if user_meta_model().get_one({'user_id':session.user_id, 'meta_key':'follow', 'meta_value':user.id}):
                 following = True
         return render.profile(user.name, user, posts, comments, following)
예제 #35
0
파일: post.py 프로젝트: Aimsam/post_bar
 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)
예제 #36
0
 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)
예제 #37
0
 def __init__(self):
     super(node, self).__init__()
     self.form = node_model().modify_form
예제 #38
0
 def __init__(self):
     super(create_node, self).__init__()
     self.form = node_model().create_form