def test_only_published_articles_are_shown(self): c = Client() user1 = User.objects.create_user(username="******", email="*****@*****.**", password="******") article1 = Article() article1.title = "nicetitle" article1.content = "nicecontent" article1.status = "P" # Published article1.create_user = user1 article1.create_user.id = user1.id article1.save() article2 = Article() article2.title = "secondnicetitle" article2.content = "secondnicecontent" article2.status = "D" # Draft article2.create_user = user1 article2.create_user.id = user1.id article2.save() # user1 logs in self.client.login(username="******", password="******") response = self.client.get(reverse('articles')) self.assertEqual(response.status_code, 200) self.assertTrue('articles' in response.context) # make sure that the only (published) Article we have in our database is in that list self.assertEqual( [article.pk for article in response.context['articles']], [1]) article_1 = response.context['articles'][0] self.assertEqual(article_1.title, 'nicetitle')
def test_validate_article_edition(self): c = Client() user1 = User.objects.create_user(username="******", email="*****@*****.**", password="******") user2 = User.objects.create_user(username="******", email="*****@*****.**", password="******") article = Article() article.title = "nicetitle" article.content = "nicecontent" article.create_user = user2 article.create_user.id = user2.id article.save() self.client.login(username="******", password="******") response = self.client.get(reverse('edit_article', kwargs={'id': '1'})) self.assertEqual(response.status_code, 302) response = self.client.post(reverse('edit_article', kwargs={'id': '1'})) self.assertEqual(response.status_code, 302) self.client.login(username="******", password="******") response = self.client.get(reverse('edit_article', kwargs={'id': '1'}), user=user2) self.assertEqual(response.status_code, 200) response = self.client.post(reverse('edit_article', kwargs={'id': '1'})) self.assertEqual(response.status_code, 200)
def edit(request, id): tags = '' if id: article = get_object_or_404(Article, pk=id) for tag in article.get_tags(): tags = u'{0} {1}'.format(tags, tag.tag) tags = tags.strip() else: article = Article(create_user=request.user) if article.create_user.id != request.user.id: return redirect('home') if request.POST: old_state = {'title': article.title, 'content': article.content} form = ArticleForm(request.POST, instance=article) if form.is_valid(): q_memento = ArticleMemento() q_memento.state = json.dumps(old_state) q_memento.caretaker = article.caretaker q_memento.save() form.save() return redirect('/articles/') else: form = ArticleForm(instance=article, initial={'tags': tags}) return render(request, 'articles/edit.html', {'form': form})
def edit(request, id): # 编辑 tags = '' if id: # 如果id存在的话,说明是update article = get_object_or_404(Article, pk=id) for tag in article.get_tags(): tags = u'{0} {1}'.format(tags, tag.tag) tags = tags.strip() else: # 否则的话,是一个新文章 article = Article(create_user=request.user) if article.create_user.id != request.user.id: # 如果修改者不是创建者的话,那么redirect到home return redirect('home') if request.POST: # 如果是post的话,那么获取表单数据,保存 form = ArticleForm(request.POST, instance=article) if form.is_valid(): # 这个方法根据表单绑定的数据创建并保存数据库对象 form.save() return redirect('/articles/') else: # 否则的话,创建一个新的form,内容填充找到的内容, form = ArticleForm(instance=article, initial={'tags': tags}) return render(request, 'articles/edit.html', {'form': form})
def test_article_renders_template_and_slug(self): c = Client() user1 = User.objects.create_user(username="******", email="*****@*****.**", password="******") article1 = Article() article1.title = "nicetitle" article1.content = "nicecontent" article1.status = 'P' article1.slug = 'nice-title' article1.create_user = user1 article1.create_user.id = user1.id article1.save() # user1 logs in self.client.login(username="******", password="******") response = self.client.get( reverse('article', kwargs={'slug': 'nice-title'})) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'articles/article.html') # check we've passed the right article into the context self.assertEquals(response.context['article'], article1) # check the article's title appears on the page self.assertIn(article1.title, response.content)
def write(request): if request.method == 'POST': form = ArticleForm(request.POST) if form.is_valid(): article = Article() article.create_user = request.user article.title = form.cleaned_data.get('title') article.content = form.cleaned_data.get('content') status = form.cleaned_data.get('status') if status in [Article.PUBLISHED, Article.DRAFT]: article.status = form.cleaned_data.get('status') article.save() tags = form.cleaned_data.get('tags') article.create_tags(tags) return redirect('/articles/') else: form = ArticleForm() return render(request, 'articles/write.html', {'form': form})
def edit(request, id): tags = '' if id: article = get_object_or_404(Article, pk=id) for tag in article.get_tags(): tags = u'{0} {1}'.format(tags, tag.tag) tags = tags.strip() else: article = Article(create_user=request.user) if request.POST: form = ArticleForm(request.POST, instance=article) if form.is_valid(): form.save() return redirect('/articles/') else: form = ArticleForm(instance=article, initial={'tags': tags}) return render(request, 'articles/edit.html', {'form': form})
def post(self, request): form = ArticleForm(request.POST, request.FILES) a = request.POST.get('action').lower() if form.is_valid(): if a == 'publish': status = Article.PUBLISHED elif a == 'draft': status = Article.DRAFT article = Article(title=form.cleaned_data.get('title'), content=form.cleaned_data.get('content'), create_user=request.user, status=status) article.save() tags = form.cleaned_data.get('tags') article.create_tags(tags) return redirect(self.success_url) else: return super(ArticleCreateView, self).form_invalid(form)
def edit(request, id): if id: article = get_object_or_404(Article, pk=id) else: article = Article(create_user=request.user) if article.create_user.id != request.user.id: return redirect('home') if request.POST: form = ArticleForm(request.POST, instance=article) if form.is_valid(): form.save() return redirect('/articles/') else: form = ArticleForm(instance=article) return render(request, 'articles/edit.html', {'form': form})