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
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()))
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)
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)
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))
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
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))
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))