Ejemplo n.º 1
0
def like_photo(req):
    r = {
        'err':'invalid'
    }
    if req.get_method() == "POST":
        photo_id = req.get_form_var('pid', '')
        photo = EventPhoto.get(photo_id)
        if photo and req.user:
            photo.like(req.user.id)
            photo = EventPhoto.get(photo.id)
            r = {
                'err':'ok',
                'html': stf("/event/photo.html", "photo_likers", photo=photo),
            }
    return json.dumps(r)
Ejemplo n.º 2
0
def uncomment_photo(req):
    r = {
        'err':'invalid'
    }
    if req.get_method() == "POST":
        photo_id = req.get_form_var('pid', '')
        comment_id = req.get_form_var('comment_id', '')
        photo = EventPhoto.get(photo_id)
        if photo and req.user:
            photo.uncomment(req.user.id, comment_id)
            photo = EventPhoto.get(photo.id)
            r = {
                'err':'ok',
                'html': stf("/event/photo.html", "photo_comments", photo=photo, req=req),
            }
    return json.dumps(r)
Ejemplo n.º 3
0
def add_photo_tag(req):
    r = { 'result':False }
    photo_id = req.get_form_var('image_id', None)
    photo = photo_id and EventPhoto.get(photo_id)
    if photo and req.user:
        left = req.get_form_var('left', None)
        top = req.get_form_var('top', None)
        width = req.get_form_var('width', None)
        height = req.get_form_var('height', None)
        name = req.get_form_var('name', None)
        uid = req.get_form_var('name_id', None)
        if name and not uid:
            user_dict = get_users_dict()
            uid = user_dict.get(name.cstrip().lower(), None)
        if uid:
            card = Card.get(uid)
            if card:
                tid = PhotoTag.new(photo_id, card.id, req.user.id, left, top, width, height)
                tag = PhotoTag.get(tid)
                if tag:
                    r = {
                            "result":True,
                            "tag": tag.json_dict(req.user)
                        }
    return json.dumps(r)
Ejemplo n.º 4
0
def remove_photo_tag(req):
    r = { 'result':False }
    photo_id = req.get_form_var('image-id', None)
    tag_id = req.get_form_var('tag-id', None)
    photo = EventPhoto.get(photo_id)
    tag = PhotoTag.get(tag_id)
    if photo and tag and req.user:
        tag.remove(req.user.id)
        r = {"result":True, "message":"╮( ╯ 3 ╰ )╭"}
    return json.dumps(r)
Ejemplo n.º 5
0
def remove_photo(req):
    r = {
        'err':'invalid'
    }
    eid = req.get_form_var("eid", None)
    pid = req.get_form_var("pid", None)
    e = Event.get(eid)
    p = EventPhoto.get(pid)
    if e and p and req.user.id and req.get_method() == "POST":
        p.remove()
        r['err'] = 'ok';
    return json.dumps(r)
Ejemplo n.º 6
0
def photo_tags(req):
    r = {
        'err':'invalid'
    }
    photo_id = req.get_form_var('image-id', None)
    photo = EventPhoto.get(photo_id)
    if photo:
        tags = [t.json_dict(req.user) for t in photo.tags]
        r = {
                "Image" : [{"id":photo.id, "Tags":tags }],
                "options":{ "tag":{ "flashAfterCreation": True } }
            }
    return json.dumps(r)
Ejemplo n.º 7
0
def upload(req):
    r = {
        'err':'invalid'
    }
    eid = req.get_form_var("eid", None)
    if eid:
        e = Event.get(eid)
        if e and req.get_method() == "POST" and req.user:
            upload_file = req.get_form_var("upload_file", None)
            id = e.upload(req.user.id, upload_file.tmp_filename)
            if id:
                p = EventPhoto.get(id)
                r['err'] = 'ok'
                r['id'] = p.id
                r['url'] = p.url(Cate.SMALL)
    return json.dumps(r)
Ejemplo n.º 8
0
    def _q_index(self, req):
        print 'Enter into index.'
        if req.card and not req.card.is_basic:
            return req.redirect('/mine')
        req.nav = '/'
        card = req.card
        photo_num, photo_cards = Card.gets(cate='photo', limit=20)

        all_badages = Badage.gets()

        num, blogs = Blog.gets(limit=30)
        num, photo_blogs = Blog.get_photo_blogs(limit=40)
        photo_blogs = [b for b in photo_blogs if b.n_unlike == 0]
        num, event_photos = EventPhoto.gets(limit=20)
        new_photos = sorted(photo_blogs + event_photos + photo_cards, key=attrgetter('sort_time'), reverse=True)
        print 'Index...'
        return st('/index.html', **locals())
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
    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!!!'
Ejemplo n.º 11
0
def _q_lookup(req, name):
    photo = EventPhoto.get(name)
    if photo and photo.event:
        return PhotoUI(req, photo)
    return TraversalError("no such photo")