python类Comment()的实例源码

conversation_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def test_for_user_doesnt_return_muted_conversations(self):
        """
        When we create a Comment, conversation gets created for the sharedfile owner and the
        commenter.  The conversation should appear for the commenter, unless the conversation
        gets muted, in which case it doesn't get returned.
        """
        comment = Comment(sharedfile_id=self.sharedfile.id, user_id=self.another_user.id, body='test')
        comment.save()

        another_user_conversation = Conversation.get('user_id = %s', self.another_user.id)
        self.assertEqual(0, another_user_conversation.muted)
        self.assertEqual(1, len(Conversation.for_user(self.another_user.id)))

        another_user_conversation.muted = 1
        another_user_conversation.save()
        self.assertEqual(0, len(Conversation.for_user(self.another_user.id)))
views.py 文件源码 项目:django-blog 作者: luckybirdme 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def comment(request):
    form = CommentForm(request.POST)

    if form.is_valid():
        comment = Comment()
        comment.content = form.cleaned_data.get('content')
        comment.user = request.user
        id=form.cleaned_data.get('article_id')
        try:
            article = Article.objects.get(id=id)
            comment.article = article
            comment.save()
            article.save()
            rtn = {'status':True,'redirect':reverse('blog:show', args=[id])}
        except Article.DoesNotExist:
            rtn = {'status':False,'error':'Article is not exist'}
    else:
        rtn = {'status':False,'error':form.errors}

    return JsonResponse(rtn)
views.py 文件源码 项目:bbgo 作者: genonfire 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def dashboard(request, condition='recent'):
    """Dashboard"""
    post_count = settings.DASHBOARD_POST_COUNT
    comment_count = settings.DASHBOARD_COMMENT_COUNT

    if condition == 'recent':
        order = '-id'
    elif condition == 'view':
        order = '-view_count'
    elif condition == 'like':
        order = '-like_count'
    elif condition == 'comment':
        order = '-comment_count'
    else:
        return error_page(request)

    posts = Blog.objects.filter(status='1normal').order_by(order)[:post_count]
    comments = Comment.objects.filter(
        status='1normal').order_by('-id')[:comment_count]

    total_posts = Blog.objects.filter(status='1normal').count()
    total_comments = Comment.objects.filter(status='1normal').count()
    total_spams = Comment.objects.filter(status='7spam').count()
    total_users = User.objects.count()

    return render(
        request,
        "blogs/dashboard.html",
        {
            'posts': posts,
            'comments': comments,
            'condition': condition,
            'total_posts': total_posts,
            'total_comments': total_comments,
            'total_spams': total_spams,
            'total_users': total_users,
        }
    )
views.py 文件源码 项目:bbgo 作者: genonfire 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def delete_comment(request, id):
    """Delete comment"""
    comment = get_object_or_404(Comment, pk=id)
    comment.status = '6deleted'
    comment.save()

    referer = get_referer(request)
    return redirect(referer)
views.py 文件源码 项目:bbgo 作者: genonfire 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def spam_comment(request, id):
    """Spam comment"""
    comment = get_object_or_404(Comment, pk=id)
    comment.status = '7spam'
    comment.save()

    referer = get_referer(request)
    return redirect(referer)
views.py 文件源码 项目:bbgo 作者: genonfire 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def restore_comment(request, id):
    """Restore comment"""
    comment = get_object_or_404(Comment, pk=id)
    if comment.status == '6deleted' or comment.status == '7spam':
        comment.status = '1normal'
        comment.save()
    else:
        return error_page(request)

    referer = get_referer(request)
    return redirect(referer)
views.py 文件源码 项目:bbgo 作者: genonfire 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def empty_comment(request, status):
    """Empty comment"""
    if status == '6deleted' or status == '7spam':
        q = Q(status__iexact=status)
        Comment.objects.filter(q).all().delete()

    referer = get_referer(request)
    return redirect(referer)
image_comment_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def test_a_non_logged_in_user_cant_delete_comments(self):
        """
        Posting to delete a comment if you're not logged in should result
        in a 403 error.  All comments remain intact.
        """
        sharedfile = test.factories.sharedfile(self.admin)
        comment = models.Comment(user_id=self.admin.id, sharedfile_id=sharedfile.id, body="just a comment")
        comment.save()
        response = self.post_url("/p/%s/comment/%s/delete" % (sharedfile.share_key, comment.id))
        self.assertEqual(response.code, 403)
        self.assertEqual(comment.id, models.Comment.get("id = %s and deleted = 0", comment.id).id)
        self.assertEqual(None, models.Comment.get("id = %s and deleted = 1", comment.id))
image_comment_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def test_can_delete_own_comment(self):
        """
        A user should be able to delete their comment on another's sharedfile.
        """
        admins_sharedfile = test.factories.sharedfile(self.admin)
        comment = models.Comment(user_id=self.bob.id, sharedfile_id=admins_sharedfile.id, body="just a comment")
        comment.save()
        self.sign_in('bob', 'asdfasdf')
        self.assertEqual(None, models.Comment.get("id = %s and deleted = 1", comment.id))
        response = self.post_url("/p/%s/comment/%s/delete" % (admins_sharedfile.share_key, comment.id))
        self.assertEqual(comment.id, models.Comment.get("id = %s and deleted = 1", comment.id).id)
image_comment_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def test_delete_anothers_comment_on_own_file(self):
        """
        A user can delete another's comment on their own sharedfile.
        """
        admins_sharedfile = test.factories.sharedfile(self.admin)
        comment = models.Comment(user_id=self.bob.id, sharedfile_id=admins_sharedfile.id, body="just a comment")
        comment.save()
        self.sign_in('admin', 'asdfasdf')
        self.assertEqual(None, models.Comment.get("id = %s and deleted = 1", comment.id))
        response = self.post_url("/p/%s/comment/%s/delete" % (admins_sharedfile.share_key, comment.id))
        self.assertEqual(comment.id, models.Comment.get("id = %s and deleted = 1", comment.id).id)
image_comment_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def test_can_not_delete_anothers_sharedfile(self):
        """
        A user can not delete someone else's comment if it's on a sharedfile they
        don't own.
        """
        admins_sharedfile = test.factories.sharedfile(self.admin)
        comment = models.Comment(user_id=self.bob.id, sharedfile_id=admins_sharedfile.id, body="just a comment")
        comment.save()
        self.sign_in('tom', 'asdfasdf')
        self.assertEqual(None, models.Comment.get("id = %s and deleted = 1", comment.id))
        response = self.post_url("/p/%s/comment/%s/delete" % (admins_sharedfile.share_key, comment.id))
        self.assertEqual(None, models.Comment.get("id = %s and deleted = 1", comment.id))
conversations_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def test_muting_conversation(self):
        """
        Add a comment, which will create a conversation for the commenter (user2) and sharedfile owner (admin).

        When user2 tries to mute admin's conversation, it should fail and admin's conversation state will remain 
        unchanged.  When muting own converastion, "muted" flag should change to true.

        Contingent on user2 being signed in. (see setUp)
        """
        comment = Comment(sharedfile_id=self.shf.id, user_id=self.user2.id, body='test')
        comment.save()

        admin_conversation = Conversation.get('user_id = %s', self.admin.id)
        user2_conversation = Conversation.get('user_id = %s', self.user2.id)
        self.assertEqual(admin_conversation.muted, 0)
        self.assertEqual(user2_conversation.muted, 0)

        request = HTTPRequest(self.get_url('/conversations/%s/mute' % admin_conversation.id), 'POST', {'Cookie':'_xsrf=%s;sid=%s' % (self.xsrf, self.sid)}, "_xsrf=%s" % (self.xsrf))
        self.http_client.fetch(request, self.stop)
        response = self.wait()
        request = HTTPRequest(self.get_url('/conversations/%s/mute' % user2_conversation.id), 'POST', {'Cookie':'_xsrf=%s;sid=%s' % (self.xsrf, self.sid)}, "_xsrf=%s" % (self.xsrf))
        self.http_client.fetch(request, self.stop)
        response = self.wait()

        # refetch from DB, and verify mute flags remain 0.
        admin_conversation = Conversation.get('user_id = %s', self.admin.id)
        user2_conversation = Conversation.get('user_id = %s', self.user2.id)
        self.assertEqual(admin_conversation.muted, 0)
        self.assertEqual(user2_conversation.muted, 1)
sharedfile_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def test_deleting_sharedfile_also_mutes_conversations(self):
        new_comment = Comment(user_id=self.user.id, sharedfile_id=self.sharedfile.id)
        new_comment.save()
        self.sharedfile.delete()

        muted_conversation = Conversation.get('user_id=%s and sharedfile_id=%s and muted = 1', self.user.id, self.sharedfile.id)
        self.assertTrue(muted_conversation)
sharedfile_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def test_comment_count(self):
        """
        Comment count should return the number of comments belonging to
        shard file. Should not count deleted comments.
        """
        self.assertEqual(0, self.sharedfile.comment_count())
        comment = Comment(sharedfile_id=self.sharedfile.id, user_id=self.user.id, body="just a comment")
        comment.save()
        self.assertEqual(1, self.sharedfile.comment_count())
        comment = Comment(sharedfile_id=self.sharedfile.id, user_id=self.user.id, body="just a comment", deleted=True)
        comment.save()
        self.assertEqual(1, self.sharedfile.comment_count())
notification_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def test_new_comment_notification(self):
        new_comment = Comment(user_id=self.user2.id, sharedfile_id = self.sharedfile.id, body="Testing comment")
        new_comment.save()

        sent_notification = Notification.get("id=%s", 1)

        self.assertEqual(sent_notification.sender_id, self.user2.id)
        self.assertEqual(sent_notification.receiver_id, self.user.id)
        self.assertEqual(sent_notification.action_id, 1)
        self.assertEqual(sent_notification.type, 'comment')
notification_tests.py 文件源码 项目:mltshp 作者: MLTSHP 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def test_new_comment_doesnt_store_for_same_user(self):
        new_comment = Comment(user_id=self.user.id, sharedfile_id = self.sharedfile.id, body="Testing comment")
        new_comment.save()

        sent_notification = Notification.get("id=%s", 1)

        self.assertFalse(sent_notification)
views.py 文件源码 项目:bbgo 作者: genonfire 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def dashboard_comment(request, status='all', page=1):
    """Dashboard comment"""
    list_count = settings.DASHBOARD_LIST_COUNT

    if int(page) < 1:
        return redirect('blogs:dashboard_comment', status, 1)

    current_page = int(page) - 1
    start_at = current_page * list_count
    end_at = start_at + list_count

    if status == 'all':
        q = Q()
    else:
        q = Q(status__iexact=status)

    total = Comment.objects.filter(q).count()
    lists = Comment.objects.filter(q).order_by('-id')[start_at:end_at]

    count_all = Comment.objects.count()
    count_normal = Comment.objects.filter(status__iexact='1normal').count()
    count_deleted = Comment.objects.filter(status__iexact='6deleted').count()
    count_spam = Comment.objects.filter(status__iexact='7spam').count()

    index_total = int(ceil(float(total) / list_count))
    index_begin = (current_page / 10) * 10 + 1
    index_end = mindex_end = index_total
    if index_end - index_begin >= 10:
        index_end = index_begin + 9
    mindex_begin = (current_page / 5) * 5 + 1
    if mindex_end - mindex_begin >= 5:
        mindex_end = mindex_begin + 4

    return render(
        request,
        "blogs/dashboard_comment.html",
        {
            'lists': lists,
            'total': total,
            'page': current_page + 1,
            'index_begin': index_begin,
            'index_end': index_end + 1,
            'mindex_begin': mindex_begin,
            'mindex_end': mindex_end + 1,
            'index_total': index_total,
            'status': status,
            'count_all': count_all,
            'count_normal': count_normal,
            'count_deleted': count_deleted,
            'count_spam': count_spam,
        }
    )


问题


面经


文章

微信
公众号

扫码关注公众号