def get_posts(self, username=None, tag_name=None, feed=None): ''' get_posts() -> get last posts get_posts(username='******') -> get last posts for username get_posts(feed=True[, username='******']) -> get feed posts for user ''' from models import Post, Subscribed user = self.user if username: user = UserInterface(self.user).get_user(username) if feed: posts = Post.objects.get_posts(user=user) else: posts = Post.objects.get_posts() if username: posts = posts.filter(user=user) if tag_name: posts = posts.filter(tags__name=tag_name) posts = Subscribed.join_is_subscribed(self.user, posts) return posts
def get_post(self, post_id): from models import Post, Tag, Subscribed try: posts = Post.objects.comments_count().filter(pk=post_id) posts = Subscribed.join_is_subscribed(self.user, posts) posts = Tag.attach_tags(posts) post = posts[0] except (Post.DoesNotExist, IndexError): raise PostInterfaceError("Message not found.") return post
def get_user_info(self, user_id=None, username=None): from models import Profile, Subscribed if user_id: users_set = User.objects.filter(pk=user_id) elif username: users_set = User.objects.filter(username=username) else: users_set = User.objects.filter(pk=self.user.pk) users = Profile.attach_user_info(users_set) users = Subscribed.join_is_subscribed(self.user, users) try: return users[0] except IndexError: raise UserInterfaceError("Unknown user, sorry.")
def post_add(request): from jabber_daemon.command_resolver import command_patterns form_p = FormProcessor(PostForm, request) form_p.process() if form_p.is_valid(): data = form_p.data message = data['body'] if not command_patterns.find_command(message): user = request.user post = post_in_blog(message, user, 'web') if not post: return redirect('post_add') post_body = render_post(post) send_subscribes_broadcast(Subscribed.get_all_subscribes_by_post(post), post_body, exclude_user=[user]) return redirect('post_view', post_pk=post.pk) return redirect('post_add') context = {} context['form'] = form_p.form return render_template(request, 'blog/post_add.html', context)
def send_broadcast(to_subscribe, message, sender=None, exclude_user=()): if not settings.BROADCAST_SEND: return subscribes = Subscribed.get_subscribes_by_obj(to_subscribe ).select_related('user').exclude(user__in=exclude_user).exclude(user__profile__is_off=True) send_subscribes_broadcast(subscribes, message)