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)
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())
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())
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__)
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)
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())
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()
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())
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
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())