def like(req): r = { 'err':'invalid' } if req.get_method() == "POST": blog_id = req.get_form_var('bid', '') single = req.get_form_var('single', '0') single = single == '1' blog = Blog.get(blog_id) if blog and req.user and not blog.is_liked(req.user.id): blog.like(req.user.id) blog = Blog.get(blog.id) r = { 'err':'ok', 'inner_html': stf("/blog/utils.html", "blog_ui_inline", b=blog, req=req, single=single), } for t in blog.topics: html = str(stf("/blog/utils.html", "blog_ui_inline", b=blog, single=False, req=req)) data = { 'blog_id': blog.id, 'inner_html': html } publish_channel_msg('me-topic-%s' % t.id, data) return json.dumps(r)
def comment(req): r = { 'err':'invalid' } if req.get_method() == "POST": blog_id = req.get_form_var('bid', '') blog = Blog.get(blog_id) content = req.get_form_var('content', '').strip() single = req.get_form_var('single', '0') single = single == '1' upload_file = req.get_form_var("update_file", None) #print 'j comment', blog_id, content if blog and req.user and content: filename = '' ftype = '' if upload_file: filename = upload_file.tmp_filename ftype = upload_file.content_type blog.comment(req.user.id, content, filename, ftype) blog = Blog.get(blog.id) r = { 'err':'ok', 'inner_html': stf("/blog/utils.html", "blog_ui_inline", b=blog, req=req, single=single), } for t in blog.topics: html = str(stf("/blog/utils.html", "blog_ui_inline", b=blog, single=False, req=req)) data = { 'blog_id': blog.id, 'inner_html': html } publish_channel_msg('me-topic-%s' % t.id, data) return json.dumps(r)
def _q_lookup(req, id): blog = Blog.get(id) if blog: if blog.btype == blog.TYPE_THREAD: return req.redirect("/thread/%s/" % id) return BlogUI(req, blog) return TraversalError("no such blog")
def unlike(req): r = { 'err':'invalid' } if req.get_method() == "POST": blog_id = req.get_form_var('bid', '') single = req.get_form_var('single', '0') single = single == '1' blog = Blog.get(blog_id) if blog and req.user and not blog.is_unliked(req.user.id): blog.unlike(req.user.id) blog = Blog.get(blog.id) r = { 'err':'ok', 'inner_html': stf("/blog/utils.html", "blog_ui_inline", b=blog, req=req, single=single), } return json.dumps(r)
def __init__(self, id, title, group_id, author_id, flag, rtime): self.id = str(id) self.title = title self.group_id = str(group_id) self.author_id = str(author_id) self.flag = flag self.rtime = rtime from webapp.models.blog import Blog self.blog = Blog.get(self.id)
def uncomment(req): r = { 'err':'invalid' } if req.get_method() == "POST": blog_id = req.get_form_var('bid', '') comment_id = req.get_form_var('comment_id', '') single = req.get_form_var('single', '0') single = single == '1' blog = Blog.get(blog_id) #print 'j uncomment', comment_id if req.user and blog: blog.uncomment(req.user.id, comment_id) blog = Blog.get(blog.id) r = { 'err':'ok', 'inner_html': stf("/blog/utils.html", "blog_ui_inline", b=blog, req=req, single=single), } return json.dumps(r)
def update(self, req): req.nav = '/update' start = req.get_form_var('start') limit = req.get_form_var('count', 20) cate = req.get_form_var('cate', 'b') topic_num, topics = Topic.gets() start = start and str(start).isdigit() and int(start) or 0 limit = limit and str(limit).isdigit() and int(limit) or 0 error = None prefix = "/update?cate=%s&" % cate print 'update', error, req.get_method(), req.get_method() == "POST" if req.get_method() == "POST": text = req.get_form_var("update_text", '').strip() upload_file = req.get_form_var("update_file", None) print 'post', text, upload_file if not text and not upload_file: error = "no_data" if error is None: filename = '' ftype = '' if upload_file: filename = upload_file.tmp_filename ftype = upload_file.content_type bid = Blog.new(req.user.id, Blog.TYPE_BLOG, content=text, filename=filename, ftype=ftype) blog = Blog.get(bid) for t in blog.topics: html = str(stf("/blog/utils.html", "blog_ui", b=blog, req=req)) data = { 'html': html } #publish_channel_msg('me-topic-%s' % t.id, data) return req.redirect('%sstart=%s' % (prefix, start)) total, blogs = Blog.gets(start=start, limit=limit, blog_type=cate) if req.get_form_var("output", None) == 'json': fireworks = req.get_form_var("fireworks", None) req.response.set_content_type('application/json; charset=utf-8') d = { 'total':total, 'start':start, 'count':limit, } if fireworks: d['blogs'] = [b.fireworks_dict() for b in blogs] else: d['blogs'] = [b.json_dict(req.user) for b in blogs] return json.dumps(d) return st('/update.html', **locals())
def _q_lookup(req, name): if not req.user: raise TraversalError("need login") if not ("-" in name and name.lower()[-4:] in [".mp3"]): raise TraversalError("no such audio") n = name[:-4] ftype = name[-3:] target_id, audio_id, cate = n.split("-") if target_id.startswith("b"): blog = Blog.get(target_id.replace("b", "")) if blog: data = blog.audio_data(cate) if not data: raise TraversalError("no such audio") resp = req.response resp.set_content_type("audio/mp3") resp.set_header("Cache-Control", "max-age=%d" % (365 * 24 * 60 * 60)) resp.set_header("Expires", "Wed, 01 Jan 2020 00:00:00 GMT") if "pragma" in resp.headers: del resp.headers["pragma"] if cate == Cate.ORIGIN: resp.set_content_type("application/force-download") resp.set_header("Content-Disposition", 'attachment; filename="%s.%s"' % (name, ftype)) return data
def blog(self): from webapp.models.blog import Blog return Blog.get(self.blog_id)
def _q_lookup(req, name): if not ('-' in name and name.lower()[-4:] in ['.jpg','.png','.gif']): raise TraversalError("no such photo") ftype = name[-3:] n = name[:-4] if '$' in name: n = name[:name.rindex('$')] target_id, photo_id, cate = n.split('-') print 'p target_id=%s photo_id=%s cate=%s' % (target_id, photo_id, cate) data = None scale_type = None width = None height = None if cate.startswith("r_"): try: r, scale_type, sizes = cate.split('_') width, height = sizes.split('x') width = int(width) height = int(height) print 'do resize x=%s, y=%s' % (width, height) except: print 'do resize fail !!!! ', name cate = Cate.LARGE if target_id.startswith('evc'): event = Event.get(target_id.replace('evc','')) if event: data = event.photo_data(cate) elif target_id.startswith('evp'): photo = EventPhoto.get(photo_id) if photo: data = photo.photo_data(cate) elif target_id.startswith('bc'): blog_comment = BlogComment.get(target_id.replace('bc', '')) if blog_comment: data = blog_comment.photo_data(cate) elif target_id.startswith('b'): blog = Blog.get(target_id.replace('b', '')) if blog: data = blog.photo_data(cate) elif target_id.startswith('g'): group = Group.get(target_id.replace('g', '')) if group: data = group.photo_data(cate) else: if target_id.startswith('_u_'): target_id = target_id.replace('_u_', '') card = Card.get(target_id) if not card: card = Card.get_by_ldap(target_id) if card: data = card.photo_data(photo_id, cate) if not data: print "no such photo" raise TraversalError("no such photo") scale_type = SCALES.get(scale_type, None) if scale_type: configs = {} configs[Cate.RESIZE] = { 'width': width, 'height': height, 'scale': scale_type, 'gif_scale': scale_type, } data = scale(data, Cate.RESIZE, configs) resp = req.response resp.set_content_type('image/jpeg') resp.set_header('Cache-Control', 'max-age=%d' % (365*24*60*60)) resp.set_header('Expires', 'Wed, 01 Jan 2020 00:00:00 GMT') if 'pragma' in resp.headers: del resp.headers['pragma'] if cate == Cate.ORIGIN: resp.set_content_type('application/force-download') resp.set_header('Content-Disposition', 'attachment; filename="%s.%s"' % (name, ftype)); return data
def send_irc(self): from webapp.models.blog import Blog if self.card and self.card and self.card.email: message = '' if self.ntype == self.TYPE_ADD_GROUP: from webapp.models.group import Group gid = self.extra.get('group_id', 0) group = Group.get(gid) if group: message = "#me: 厂工 %s 把你拉进了小组 %s 查看:%s" % (self.author.name, group.name, group.url) elif self.ntype == self.TYPE_ANSWER: from webapp.models.question import Question qid = self.extra.get('question_id', 0) bid = self.extra.get('blog_id', 0) question = Question.get(qid) blog = Blog.get(bid) if question and blog: message = "#me: 厂工 %s 回答了你的问题 查看:%s" % (self.author.name, blog.url) elif self.ntype == self.TYPE_QUESTION: from webapp.models.question import Question qid = self.extra.get('question_id', 0) question = Question.get(qid) if question: if question.is_anonymous: message = "#me: 某厂工问了你一个问题 查看:%s#answers" % (self.card.url) else: message = "#me: 厂工 %s 问了你一个问题 查看:%s#answers" % (self.author.name, self.card.url) elif self.ntype == self.TYPE_AWARD_VOTED: from webapp.models.badage import Badage, Award aid = self.extra.get('badage_id', 0) bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) award = Award.get(aid) if award: if blog: message = "#me: 厂工 %s 在评选%s大奖时,投了你一票哦~ 查看:%s" % (self.author.name, award.fullname, blog.url) else: message = "#me: 厂工 %s 在评选%s大奖时,投了你一票哦~ " % (self.author.name, award.fullname) elif self.ntype == self.TYPE_PHOTO_LIKE: from webapp.models.event import Event, EventPhoto pid = self.extra.get('photo_id', 0) photo = EventPhoto.get(pid) if photo: message = "#me: 厂工 %s 给你上传的照片 + 1了哦~ 查看:%s" % (self.author.name, photo.photo_url) elif self.ntype == self.TYPE_PHOTO_TAG: from webapp.models.event import Event, EventPhoto pid = self.extra.get('photo_id', 0) photo = EventPhoto.get(pid) if photo: message = "#me: 厂工 %s 在上传的照片圈出了你哦~ 查看:%s" % (self.author.name, photo.photo_url) elif self.ntype == self.TYPE_BLOG_LIKE: bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) if blog: message = "#me: 厂工 %s 赞了你的%s~ 查看:%s" % (self.author.name, blog.type_name, blog.url) elif self.ntype == self.TYPE_BLOG_UNLIKE: bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) if blog: message = "#me: 你的%s被人踩了哦~ 查看:%s" % (blog.type_name, blog.url) elif self.ntype == self.TYPE_BLOG_COMMENT: cid = self.extra.get('comment_id', 0) bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) if blog: message = "#me: 厂工 %s 回复了你的%s哦~ 查看:%s#comment_%s" % (self.author.name, blog.type_name, blog.url, cid) elif self.ntype == self.TYPE_BLOG_REPLY: cid = self.extra.get('comment_id', 0) bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) if blog: message = "#me: 你回复的%s有了新回复哦~ 查看:%s#comment_%s" % (blog.type_name, blog.url, cid) elif self.ntype == self.TYPE_BLOG_MENTION: bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) if blog: message = "#me: 厂工 %s 的%s提到了你哦~ 查看:%s" % (self.author.name, blog.type_name, blog.url) elif self.ntype == self.TYPE_BLOG_COMMENT_MENTION: cid = self.extra.get('comment_id', 0) bid = self.extra.get('blog_id', 0) blog = Blog.get(bid) if blog: message = "#me: 厂工 %s 在 %s 的%s回复里提到了你哦~ 查看:%s" % (self.author.name, blog.owner.name, blog.type_name, blog.url) elif self.ntype == self.TYPE_LIKE: message = "#me: 厂工 %s ( %s )收藏了你的卡片哦~ 你说他/她/它是不是对你感兴趣?(//▽//)" % (self.author.name, self.author_card.url) elif self.ntype == self.TYPE_COMMENT: cid = self.extra.get('comment_id', 0) message = "#me: 厂工 %s 给你的卡片留言了哦~ 查看:%s#comment_%s" % (self.author.name, self.card.url, cid) elif self.ntype == self.TYPE_MENTION: cid = self.extra.get('comment_id', 0) card_id = self.extra.get('card_id', 0) if card_id == self.card_id: message = "#me: 厂工 %s 在给你的卡片留言中提到了你~ 查看:%s#comment_%s" % (self.author.name, self.card.url, cid) else: from webapp.models.card import Card card = Card.get(card_id) message = "#me: 厂工 %s 在给 %s 的卡片留言中提到了你了哦~ 查看:%s#comment_%s" % (self.author.name, card.screen_name, card.url, cid) elif self.ntype == self.TYPE_PHOTO_COMMENT: cid = self.extra.get('comment_id', 0) pid = self.extra.get('photo_id', 0) from webapp.models.event import Event, EventPhoto photo = EventPhoto.get(pid) if photo: message = "#me: 厂工 %s 给你上传的照片留言了哦~ 查看:%s%s#comment_%s" % (self.author.name, SITE, photo.path, cid) elif self.ntype == self.TYPE_PHOTO_COMMENT_MENTION: cid = self.extra.get('comment_id', 0) pid = self.extra.get('photo_id', 0) from webapp.models.event import Event, EventPhoto photo = EventPhoto.get(pid) if photo: message = "#me: 厂工 %s 照片里提到你了哦~ 查看:%s%s#comment_%s" % (self.author.name, SITE, photo.path, cid) elif self.ntype == self.TYPE_TAG: tags = self.extra.get('tags').encode('utf-8') message = "#me: 你的卡片有了新的标签(%s),你猜谁给你打的? ≖‿≖✧ 查看:%s" % (tags, self.card.url) elif self.ntype == self.TYPE_REQUEST_PHOTO: message = "#me: 厂工 %s ( %s ) 求你的真相照片哦~ 传一张吧,拜托了!m(_ _)m 上传:%s/make" % (self.author.name, self.author_card.url, SITE) elif self.ntype == self.TYPE_REQUEST_CHANGE_PHOTO: message = "#me: 厂工 %s ( %s )和大家都觉得你的真相照片不真,简直是@#^&*! 换一张吧,拜托了!m(_ _)m 上传:%s/make" % (self.author.name, self.author_card.url, SITE) elif self.ntype == self.TYPE_BADAGE: from webapp.models.card import Badage badage = Badage.get(self.author_id) if badage: message = "#me: 你得到了一枚%s徽章哦~ 点击查看:%s/badage/%s" % (badage.name, SITE, badage.name) iu = self.card.email.replace('@douban.com','') print 'send_irc', iu, message try: irc_send_message(iu, message) except: print 'sent irc error!!!'