Esempio n. 1
0
    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')
Esempio n. 2
0
    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)
Esempio n. 3
0
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})
Esempio n. 4
0
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})
Esempio n. 5
0
    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)
Esempio n. 6
0
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})
Esempio n. 7
0
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})
Esempio n. 8
0
 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)
Esempio n. 9
0
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})