def test_follow_unfollow_or_unfollow(self): """Make sure posts are only added to the stream while we're following someone.""" self.create_posts() self.login('john.example.com', user_id='1') response = self.client.get(reverse('dash')) self.assertEqual(['t3', 't1'], [p.text for p in response.context['posts']]) self.client.post(reverse('follow', args=('bob',))) Post.create(author=self.b2, text="b2", friends=self.b2.friends()) response = self.client.get(reverse('dash')) self.assertEqual(['b2', 't3', 't1'], [p.text for p in response.context['posts']]) # a second post to the follow view unfollows self.client.post(reverse('follow', args=('bob',))) Post.create(author=self.b2, text="b3", friends=self.b2.friends()) response = self.client.get(reverse('dash')) self.assertEqual(['b2', 't3', 't1'], [p.text for p in response.context['posts']])
def postlist(request): """The blog view, if no user logged in or chosen display the home page.""" # if no blog is selected invite the users to signup or redirect to dash if not request.blog: if request.user_blog: return redirect(fullurl(reverse('dash'))) else: return render(request, "home.html") else: posts = Post.query_from(request.blog) return render(request, "blog.html", { 'blog': request.blog, 'posts': posts })
def edit(request, post_id): """Post editing or deletion.""" post = Post.get_by_id(int(post_id)) # the url regex makes sure we only get a number here if not post or post.author.key() != request.user_blog.key() or post.deleted: raise Http404 if request.method == 'POST': form = EditForm(request.POST, post=post) if form.is_valid(): form.save() return redirect(reverse('dash')) else: form = EditForm(post=post) return render(request, "edit.html", { 'form': form, })
def dash(request): """Users dashboard. It's like the main blog view but shows friend's posts.""" if request.method == 'POST': form = PostForm(request.POST, blog=request.user_blog) if form.is_valid(): form.save() return redirect(reverse('dash')) else: form = PostForm(blog=request.user_blog) posts = Post.query_for(reader=request.user_blog) return render(request, "dash.html", { 'form': form, 'user_blog': request.user_blog, 'posts': posts })
def create_posts(self): self.p1 = Post.create(author=self.b1, text="t1", friends=self.b1.friends()) self.p2 = Post.create(author=self.b2, text="t2", friends=self.b2.friends()) self.p3 = Post.create(author=self.b1, text="t3", friends=self.b1.friends())
def save(self): Post.create(author=self.blog, text=self.cleaned_data['text'], friends=self.blog.friends() )