Example #1
0
def unpin(id):
    post = Post(id)
    if env.user.id == post.author.id:
        post.set_pinned(False)
        return Response(redirect=env.request.referer)
    else:
        raise Forbidden
Example #2
0
def unpin(id):
    post = Post(id)
    if env.user.id == post.author.id:
        post.set_pinned(False)
        return Response(redirect=env.request.referer)
    else:
        raise Forbidden
Example #3
0
    def fetch(self):
        if self._posts:
            return

        if not self.get_url():
            raise InvalidFeedUrl

        log.info('Feed #%s fetch from %s' % (self.id, self.get_url()))

        proc = process(self.get_url())

        if proc.get_error():
            log.error("Feed #%s fetch error: %s %s" % \
                      (self.id, self.get_url(), proc.get_error()))
            if not proc.entries():
                #if 'status' in d and d['status'] < 400:
                #    raise InvalidFeedType
                #else:
                raise FeedFetchError

        info = proc.get_info()

        for param in ['name', 'about', 'homepage']:
            if info[param] and info[param] != self.get_info(param):
                self.set_info(param, info[param])

        if self.id and self.info_changed():
            self.save()

        self._posts = [Post(None, self, **p) for p in proc.entries()]

        log.info("Feed #%s: %s entries fetched from %s" % \
                 (self.id, len(self._posts), self.get_url()))
Example #4
0
    def _post(self, p):
        if "photo" in p and p["photo"]:
            img = os.path.basename(p["photo"]["medium"])
            try:
                shutil.copy(os.path.join(self.path, "juick-images", img),
                            settings.media_path)
                imgurl = os.path.join(settings.media_root, img)
                text = "%s\n\nhttp%s" % (unescape(p["body"]), imgurl)
            except IOError:
                text = unescape(p["body"])
        else:
            text = unescape(p["body"])

        try:
            private = bool(str(p["friends"]) == "1")
        except KeyError:
            private = False

        tags = p["tags"] if "tags" in p else []

        return Post.from_data(None,
                              author=self.user,
                              text=text,
                              tags=tags,
                              created=dparser.parse(p["timestamp"]),
                              type='post',
                              archive=True,
                              private=private)
Example #5
0
def unpin_post(post_id):
    try:
        post = Post(id)
        if env.user.id == post.author.id:
            if post.pinned:
                post.set_pinned(False)
                return xmpp_template('post_unpinned', post_id=post_id)
            else:
                raise PostNotPinnedError
        else:
            raise PostAuthorError
    except PostAuthorError:
        return xmpp_template('post_denied', post_id=post_id)
    except PostNotPinnedError:
        return xmpp_template('post_not_pinned', post_id=post_id)
    except PostNotFound:
        return xmpp_template('post_not_found', post_id=post_id)
Example #6
0
def unpin_post(post_id):
    try:
        post = Post(id)
        if env.user.id == post.author.id:
            if post.pinned:
                post.set_pinned(False)
                return xmpp_template('post_unpinned', post_id=post_id)
            else:
                raise PostNotPinnedError
        else:
            raise PostAuthorError
    except PostAuthorError:
        return xmpp_template('post_denied', post_id=post_id)
    except PostNotPinnedError:
        return xmpp_template('post_not_pinned', post_id=post_id)
    except PostNotFound:
        return xmpp_template('post_not_found', post_id=post_id)
Example #7
0
def edit_comment(post_id, comment_id):
    if comment_id == '0':
        raise NotFound
    else:
        try:
            posts.edit_comment(post_id, comment_id,
                env.request.args('text', ''), editor=env.user)
        except PostTextError:
            return render('/comment-error.html')

        if env.owner and env.owner.login:
            login = env.owner.login.lower()
        else:
            post = Post(post_id)
            login = post.author.login.lower()

        return Response(redirect='%s://%s.%s/%s#%s' % \
            (env.request.protocol, login, settings.domain, post_id, comment_id))
Example #8
0
def delete(id):
    comment_id = env.request.args('comment_id')
    try:
        if comment_id:
            post = posts.delete_comment(id, comment_id)
            if env.owner:
                login = post.author.login.lower()
            else:
                post = Post(id)
                login = post.author.login.lower()

            return Response(redirect='%s://%s.%s/%s' % \
                            (env.request.protocol, login, settings.domain, id))
        else:
            posts.delete_post(id)
            return Response(redirect='%s://%s.%s/blog' % \
               (env.request.protocol, env.user.login.lower(), settings.domain))
    except PostAuthorError:
        raise SubscribeError
Example #9
0
def add_comment(id):
    to_comment_id = env.request.args('comment_id')
    text = env.request.args('text', '').strip()
    files = _files([])

    try:
        comment_id = posts.add_comment(id, to_comment_id, text, files=files)
    except PostTextError:
        return render('/comment-error.html')

    if env.owner and env.owner.login:
        login = env.owner.login.lower()
    else:
        post = Post(id)
        login = post.author.login.lower()

    return Response(redirect='%s://%s.%s/%s#%s' % \
                             (env.request.protocol,
                              login, settings.domain, id, comment_id))
Example #10
0
def recommend(id):
    comment_id = env.request.args('comment_id')
    text = env.request.args('text')
    try:
        rcid = posts.recommend(id, comment_id, text)
    except RecommendationError:
        raise Forbidden
    except RecommendationExists:
        return Response(redirect=env.request.referer)
    if rcid:
        rcid = '#%s' % rcid
    else:
        rcid = ''

    if env.owner and env.owner.login:
        login = env.owner.login.lower()
    else:
        post = Post(id)
        login = post.author.login.lower()

    return Response(redirect='%s://%s.%s/%s%s' % \
                    (env.request.protocol, login, settings.domain, id, rcid))
Example #11
0
    def _post(self, p):
        if "photo" in p and p["photo"]:
            img = os.path.basename(p["photo"]["medium"])
            try:
                shutil.copy(os.path.join(self.path, "juick-images", img),
                            settings.media_path)
                imgurl = os.path.join(settings.media_root, img)
                text = "%s\n\nhttp%s" % (unescape(p["body"]), imgurl)
            except IOError:
                text = unescape(p["body"])
        else:
            text = unescape(p["body"])

        try:
            private = bool(str(p["friends"]) == "1")
        except KeyError:
            private = False

        tags = p["tags"] if "tags" in p else []

        return Post.from_data(None, author=self.user, text=text, tags=tags,
                              created=dparser.parse(p["timestamp"]),
                              type='post', archive=True, private=private)