Example #1
0
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)
Example #2
0
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)
Example #3
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())
Example #4
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())
Example #5
0
 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())
Example #6
0
 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'))
Example #7
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"])
     posts = post_model().trends(limit, (page - 1) * limit)
     crumb.append("最近的主题")
     return render.recent("最近的主题", total, crumb.output(), posts, pagination.output())
Example #8
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'])
     posts = post_model().trends(limit, (page - 1) * limit)
     crumb.append('最近的主题')
     return render.recent('最近的主题', total, crumb.output(), posts,
                          pagination.output())
Example #9
0
 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')
     )
Example #10
0
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)
Example #11
0
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)
Example #12
0
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)
Example #13
0
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())
Example #14
0
 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())
Example #15
0
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)
Example #16
0
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())
Example #17
0
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))
Example #18
0
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())
Example #19
0
 def GET(self):
     crumb = Crumb()
     crumb.append('关于')
     return render.about('关于', crumb.output())
Example #20
0
 def GET(self):
     crumb = Crumb()
     crumb.append('最近的主题')
     total, posts, pagination = self._get()
     return render.recent('最近的主题', total, crumb.output(), posts, pagination.output())
Example #21
0
class admin:
    crumb = Crumb()
    def __init__(self):
        if session.user_id != 1:
            raise web.SeeOther('/')
        self.crumb.append('后台', '/admin')
Example #22
0
 def GET(self):
     crumb = Crumb()
     crumb.append("关于")
     return render.about("关于", crumb.output())
Example #23
0
 def GET(self):
     crumb = Crumb()
     crumb.append('关于')
     return render.about('关于', crumb.output())
Example #24
0
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))
Example #25
0
 def __init__(self):
     if session.user_id != 1:
         raise web.SeeOther('/')
     self.crumb = Crumb()
     self.crumb.append('后台', '/admin')
Example #26
0
 def __init__(self):
     self.crumb = Crumb()
     self.form = post_model().form
Example #27
0
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))
Example #28
0
 def __init__(self):
     if session.user_id != 1:
         raise web.SeeOther("/")
     self.crumb = Crumb()
     self.crumb.append("后台", "/admin")
Example #29
0
 def GET(self):
     crumb = Crumb()
     crumb.append('最近的主题')
     total, posts, pagination = self._get()
     return render.recent('最近的主题', total, crumb.output(), posts,
                          pagination.output())
Example #30
0
 def __init__(self):
     self.crumb = Crumb()
Example #31
0
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))
Example #32
0
 def __init__(self):
     self.crumb = Crumb()
Example #33
0
 def __init__(self):
     self.crumb = Crumb()
     self.form = post_model().form