Пример #1
0
def create_comment(request):
    if not request.user.is_authenticated:
        return redirect_to_login(request.get_full_path())

    if request.method == 'POST':
        form = CommentForm(request.POST)
        model_object = get_model_obj(request)

        if form.is_valid():
            # check and get the comment object if it is a parent
            parent_comment = None
            parent_id = request.POST.get("parent_id")
            if parent_id:
                parent_qs = Comment.objects.filter(id=parent_id)
                if parent_qs.exists():
                    parent_comment = parent_qs.first()

            comment_content = form.cleaned_data['content']
            comment = Comment.objects.create(
                content_object=model_object,
                content=comment_content,
                user=request.user,
                parent=parent_comment,
            )
            # retrieve context dict after comment been created
            context = get_view_context(request)

            context['is_parent'] = not parent_comment
            if request.POST.get("commentform") == "reply":
                context['reply'] = comment
                return render(request, 'comment/child_comment.html', context)
            else:
                context['comment'] = comment
                return render(request, 'comment/base.html', context)
Пример #2
0
    def form_valid(self, form):
        app_name = self.app_name
        model_name = self.model_name
        model_id = self.model_id
        model_object = get_model_obj(app_name, model_name, model_id)
        parent_id = self.parent_id
        parent_comment = Comment.objects.get_parent_comment(parent_id)
        user = get_user_for_request(self.request)

        comment_content = form.cleaned_data['content']
        email = form.cleaned_data.get('email', None) or user.email
        time_posted = timezone.now()
        comment = Comment(content_object=model_object,
                          content=comment_content,
                          user=user,
                          parent=parent_comment,
                          email=email,
                          posted=time_posted)

        if settings.COMMENT_ALLOW_ANONYMOUS and not user:
            # send response, please verify your email to post this comment.
            response_msg = process_anonymous_commenting(self.request, comment)
            messages.info(self.request, response_msg)
        else:
            comment.save()
            self.comment = comment

        return self.render_to_response(self.get_context_data())
Пример #3
0
    def form_valid(self, form):
        app_name = self.request.POST.get('app_name')
        model_name = self.request.POST.get('model_name')
        model_id = self.request.POST.get('model_id')
        model_object = get_model_obj(app_name, model_name, model_id)
        parent_id = self.request.POST.get('parent_id')
        parent_comment = None
        if parent_id:
            parent_qs = Comment.objects.filter(id=parent_id)
            if parent_qs.exists():
                parent_comment = parent_qs.first()
        comment_content = form.cleaned_data['content']
        self.comment = Comment.objects.create(
            content_object=model_object,
            content=comment_content,
            user=self.request.user,
            parent=parent_comment,
        )
        current_site = get_current_site(self.request)
        article = self.comment.content_object
        author_email = article.author.email
        user_email = self.comment.user.email
        if author_email == user_email:
            author_email = False
            user_email = False
        parent_email = False
        if self.comment.parent:
            parent_email = self.comment.parent.user.email
            if parent_email in [author_email, user_email]:
                parent_email = False

        if author_email:
            email = EmailMessage(
                "دیدگاه جدید",
                "دیدگاه جدیدی برای مقاله «{}» که شما نوینده آن هستید، ارسال شده:\n{}{}".format(article, current_site,
                                                                                               reverse('blog:more',
                                                                                                       kwargs={
                                                                                                           'slug': article.slug})),
                to=[author_email]
            )
            email.send()

        if user_email:
            email = EmailMessage(
                "دیدگاه دریافت شد",
                "دیدگاه شما دریافت شد و به زودی به آن پاسخ می دهیم.",
                to=[user_email]
            )
            email.send()

        if parent_email:
            email = EmailMessage(
                "پاسخ به دیدگاه شما",
                "پاسخی به دیدگاه شما در مقاله «{}» ثبت شده است. برای مشاهده بر روی لینک زیر کلیک کنید:\n{}{}".format(
                    article, current_site, reverse('blog:more', kwargs={'slug': article.slug})),
                to=[parent_email]
            )
            email.send()

        return self.render_to_response(self.get_context_data())
Пример #4
0
 def test_success(self):
     data = {
         'app_name': 'post',
         'model_name': 'Post',
         'model_id': self.post_1.id
     }
     model_object = get_model_obj(**data)
     self.assertIsInstance(model_object, self.post_1.__class__)
Пример #5
0
 def __init__(self, request, model_object=None, **kwargs):
     self.request = request
     self.app_name = get_request_data(request, 'app_name')
     self.model_name = get_request_data(request, 'model_name')
     self.model_id = get_request_data(request, 'model_id')
     self.model_object = model_object
     if not self.model_object:
         self.model_object = get_model_obj(self.app_name, self.model_name, self.model_id)
     super().__init__(**self(), **kwargs)
Пример #6
0
    def form_valid(self, form):
        app_name = self.request.POST.get('app_name')
        model_name = self.request.POST.get('model_name')
        model_id = self.request.POST.get('model_id')
        model_object = get_model_obj(app_name, model_name, model_id)
        parent_id = self.request.POST.get('parent_id')
        parent_comment = None
        if parent_id:
            parent_qs = Comment.objects.filter(id=parent_id)
            if parent_qs.exists():
                parent_comment = parent_qs.first()
        comment_content = form.cleaned_data['content']
        self.comment = Comment.objects.create(
            content_object=model_object,
            content=comment_content,
            user=self.request.user,
            parent=parent_comment,
        )
        #send_email

        article = self.comment.content_object
        author_email = article.author.email
        user_email = self.comment.user.email
        if author_email == user_email:
            author_email = False
            user_email = False
        parent_email = False
        if self.comment.parent:
            parent_email = self.comment.parent.user.email
            if parent_email in [author_email, user_email]:
                parent_email = False
        current_site = get_current_site(self.request)
        if author_email:
            email = EmailMessage(
                'دیدگاه جدید',
                "دیدگاه برای مقاله {} که شما نویسنده ان هستید ارسال شده\n {} ".
                format(article, current_site),
                to=[author_email])
            email.send()
        if user_email:
            email = EmailMessage(
                'دیدگاه دریافت شد',
                " دیدگاه شما دریافت شد و به زودی به شما پاسخ داده میشود",
                to=[user_email])
            email.send()

        if parent_email:
            email = EmailMessage('پاسخبه دیدیگاه شما',
                                 "به ایمیل شما پاسخ داده شد",
                                 to=[user_email])
            email.send()

        return self.render_to_response(self.get_context_data())
Пример #7
0
    def test_create_child_comment(self):
        url_data = self.url_data.copy()
        model_obj = get_model_obj(**url_data)
        url_data['parent_id'] = Comment.objects.all_comments_by_object(
            model_obj).filter(parent=None).first().id
        data = {'content': 'new child comment from api'}

        response = self.client.post(self.get_url(self.get_base_url(),
                                                 **url_data),
                                    data=data)

        self.assertEqual(response.status_code, 201)
        self.increase_count()
        self.comment_count_test()
Пример #8
0
 def form_valid(self, form):
     app_name = self.request.POST.get('app_name')
     model_name = self.request.POST.get('model_name')
     model_id = self.request.POST.get('model_id')
     model_object = get_model_obj(app_name, model_name, model_id)
     parent_id = self.request.POST.get('parent_id')
     parent_comment = None
     if parent_id:
         parent_qs = Comment.objects.filter(id=parent_id)
         if parent_qs.exists():
             parent_comment = parent_qs.first()
     comment_content = form.cleaned_data['content']
     self.comment = Comment.objects.create(
         content_object=model_object,
         content=comment_content,
         user=self.request.user,
         parent=parent_comment,
     )
     return self.render_to_response(self.get_context_data())
Пример #9
0
    def create(self, validated_data):
        request = self.context['request']
        user = get_user_for_request(request)
        content = validated_data.get('content')
        email = validated_data.get('email')
        parent_id = self.parent_id
        time_posted = timezone.now()
        parent_comment = Comment.objects.get_parent_comment(parent_id)
        model_object = get_model_obj(self.app_name, self.model_name,
                                     self.model_id)

        comment = Comment(content_object=model_object,
                          content=content,
                          user=user,
                          parent=parent_comment,
                          email=email,
                          posted=time_posted)
        if settings.COMMENT_ALLOW_ANONYMOUS and not user:
            process_anonymous_commenting(request, comment, api=True)
        else:
            comment.save()
        return comment
Пример #10
0
    def form_valid(self, form):
        app_name = self.app_name
        model_name = self.model_name
        model_id = self.model_id
        model_object = get_model_obj(app_name, model_name, model_id)
        parent_id = self.parent_id
        parent_comment = Comment.objects.get_parent_comment(parent_id)
        user = get_user_for_request(self.request)

        comment_content = form.cleaned_data['content']
        email = form.cleaned_data.get('email', None) or user.email
        time_posted = timezone.now()
        _comment = Comment(content_object=model_object,
                           content=comment_content,
                           user=user,
                           parent=parent_comment,
                           email=email,
                           posted=time_posted)

        if settings.COMMENT_ALLOW_ANONYMOUS and not user:
            # send response, please verify your email to post this comment.
            response_msg = process_anonymous_commenting(self.request, _comment)
            messages.info(self.request, response_msg)
        else:
            _comment.save()
            self.comment = _comment

            # send email section
            current_site = get_current_site(self.request)
            article = self.comment.content_object
            author_email = article.author.email
            user_email = self.comment.user.email
            subject_email = ''
            messages_email = ''
            if author_email == user_email:
                author_email = False
                user_email = False
            parent_email = False
            if self.comment.parent:
                parent_email = self.comment.parent.user.email
                if parent_email in [author_email, user_email]:
                    parent_email = False

            if author_email:
                subject_email = "دیدگاه جدید"
                messages_email = "دیدگاه جدیدی برای مقاله «{}» که شما نوینده آن هستید، ارسال شده:\n{}{}".format(
                    article, current_site,
                    reverse('blog:detail', kwargs={'slug': article.slug}))
                send_email.delay(subject_email, messages_email, author_email)

            if user_email:
                subject_email = "دیدگاه دریافت شد"
                messages_email = "دیدگاه شما دریافت شد و به زودی به آن پاسخ می دهیم."
                send_email.delay(subject_email, messages_email, user_email)

            if parent_email:
                subject_email = "پاسخ به دیدگاه شما"
                messages_email = "پاسخی به دیدگاه شما در مقاله «{}» ثبت شده است. برای مشاهده بر روی لینک زیر کلیک کنید:\n{}{}".format(
                    article, current_site,
                    reverse('blog:detail', kwargs={'slug': article.slug}))

                send_email.delay(subject_email, messages_email, parent_email)

        return self.render_to_response(self.get_context_data())