def test_can_create_a_comment(self): form = CommentForm({ "title": "test comment", "like": "", "comment": "This is a test comment" }) self.assertTrue(form.is_valid())
def addcomment(request, id): if request.method == 'POST': form = CommentForm(request.POST) if form.is_valid(): comm = form.save(commit=False) comm.product = Product.objects.get(id=id) form.save() return HttpResponseRedirect('/product/%s' % id)
def test_comment_form_valid_data(self): form = CommentForm( data={ 'comment': 'This is great.' #the only entry in forms.py #the other three fields are autogenerated from the models }) self.assertTrue(form.is_valid())
def add_comment_to_post(request, pk): productPost = get_object_or_404(Product, pk=pk) if request.method == "POST": form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.productPost = productPost comment.save() return redirect('products/product.html', pk=productPost.pk) else: form = CommentForm() return render(request, 'products/comments.html', {'form': form})
def newComment(request, idProducto=None): if request.user.is_authenticated(): if idProducto != None: if request.method == "POST": newComment = NewCommentForm(request.POST) if newComment.is_valid(): try: data = { 'id_product': idProducto, 'id_sender': request.user.id, 'subject': newComment.cleaned_data['subject'], 'text': newComment.cleaned_data['text'], 'datetime': datetime.now(), } commentForm = CommentForm(data) if commentForm.is_valid(): commentForm.save() user = request.user # send_mail('Comentario enviado', 'Usted hizo un nuevo comentario.', settings.EMAIL_HOST_USER , [user.email], fail_silently=False) return HttpResponseRedirect("/products/" + str(idProducto)) else: return HttpResponse("DATA_ERROR") except Exception as e: print e return HttpResponseRedirect("/products/" + str(idProducto)) else: return HttpResponse("NO_VALID") elif request.is_ajax(): newComment = NewCommentForm() product = Product.objects.get(id=idProducto) title = "Nuevo comentario para " + product.name user = request.user message = { "add_comment_data": render_to_response( "new_comment.html", { 'form': newComment, 'title': title, 'user': user, 'idproducto': idProducto }, context_instance=RequestContext(request)).content } json = simplejson.dumps(message) return HttpResponse(json, mimetype='application/json') else: return HttpResponseRedirect("/") else: return HttpResponse("/login")
def AddCommentView(request, id): if request.method == 'POST': form = CommentForm(request.POST) if form.is_valid(): data = Comment() # create relation with model data.subject = form.cleaned_data['subject'] data.comment = form.cleaned_data['comment'] print(form.cleaned_data['rate']) data.rate = form.cleaned_data['rate'] data.product_id = id current_user = request.user data.user_id = current_user.id data.save() # save data to tables return redirect('single-product', id)
def mutate_and_get_payload(cls, input, context, info): user = context.user comment_id = input.get('id') comment = get_node(comment_id, context, info, Comment) if not comment or comment.user != user: raise ResponseError("Invalid Comment", code='invalid_comment') # update comment form = CommentForm(input, instance=comment) if form.is_valid(): form.save() else: raise FormError(form.errors) return UpdateCommentMutation(comment=comment)
def mutate_and_get_payload(cls, input, context, info): user = context.user product_id = input.get('product_id') product = get_node(product_id, context, info, Product) if not product: raise ResponseError("Invalid Product", code='invalid_product') # create comment form = CommentForm(input) if form.is_valid(): new_comment = form.save(commit=False) new_comment.product = product new_comment.user = user new_comment.save() else: raise FormError(form.errors) return CreateCommentMutation(comment=new_comment)
def post(self, request, *args, **kwargs): # form = self.get_form() form = CommentForm(data=request.POST) pk = kwargs.get('pk', None) if form.is_valid(): product = Product.objects.get(id=pk) data = form.save(commit=False) # comment obj에 위치 정보 저장 set_object_location(request, data) p_latlng = str(product.lat) + ',' + str(product.lng) c_latlng = str(data.lat) + ',' + str(data.lng) data.product = product # product-comment의 거리 측정 distance = google_distance_matrix(org_coord=p_latlng, des_coord=c_latlng) print('distance', distance) data.distance = distance[c_latlng]['distance']['text'] print(data.distance) data.save() return redirect(product.get_absolute_url())
def add_comment_to_product(request, id): user = request.user product = get_object_or_404(Product, pk=id) if request.method == "POST": form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.user = user comment.product = product comment.approve() comment.save() return redirect('product_detail', slug=product.slug) else: form = CommentForm() request.session['comments_counter'] = Comment.objects.filter(user_id=user.id).count() template = 'products/add_comment_to_product.html' context ={ 'form':form, } return render(request, template, context)
def product(request, product_slug=None): """A detail page for a product.""" product = get_object_or_404(Product.objects.active(), slug=product_slug) if request.method == 'POST': comment_form = CommentForm(request.POST) if comment_form.is_valid(): comment = comment_form.save(commit=False) comment.product = product comment.save() comment_form = CommentForm() else: comment_form = CommentForm() comments = product.productcomment_set.active() return render_to_response('products/product.html', { 'comments': comments, 'comment_form': comment_form, 'product': product, 'ratio': float(product.current_quantity) / float(product.max_quantity), }, context_instance=RequestContext(request))
def newComment(request, idProducto=None): if request.user.is_authenticated(): if idProducto!=None: if request.method == "POST": newComment = NewCommentForm(request.POST) if newComment.is_valid(): try: data = {'id_product':idProducto, 'id_sender':request.user.id, 'subject':newComment.cleaned_data['subject'], 'text':newComment.cleaned_data['text'], 'datetime': datetime.now(), } commentForm = CommentForm(data) if commentForm.is_valid(): commentForm.save() user = request.user # send_mail('Comentario enviado', 'Usted hizo un nuevo comentario.', settings.EMAIL_HOST_USER , [user.email], fail_silently=False) return HttpResponseRedirect("/products/" + str(idProducto)) else: return HttpResponse("DATA_ERROR") except Exception as e: print e return HttpResponseRedirect("/products/" + str(idProducto)) else: return HttpResponse("NO_VALID") elif request.is_ajax(): newComment = NewCommentForm() product = Product.objects.get(id=idProducto) title = "Nuevo comentario para " + product.name user = request.user message = {"add_comment_data": render_to_response("new_comment.html", {'form':newComment, 'title':title, 'user':user, 'idproducto':idProducto},context_instance=RequestContext(request)).content} json = simplejson.dumps(message) return HttpResponse(json, mimetype='application/json') else: return HttpResponseRedirect("/") else: return HttpResponse("/login")
def product_detail_view(request, **kwargs): pk = kwargs['id'] product = get_object_or_404(Product, pk=pk) form = Increment_price_form(request.POST or None) increment = product.min_increment + product.final_price product.user if len(request.POST) == 0 or len(request.POST) == 3: comment_form = CommentForm(request.POST or None) if comment_form.is_valid(): product_post = product user = request.user new_comment_body = comment_form.cleaned_data.get("body") Comment.objects.create(product_post=product_post, user=user, body=new_comment_body) return HttpResponseRedirect(request.path_info) else: comment_form = CommentForm() try: if len(product.winner) > 0: u = User.objects.filter(email=product.winner) s_name = u.first().first_name s_last = u.first().last_name winner_to_display = s_name[:3] + "**** ****" + s_last[len(s_last) - 3:len(s_last )] else: winner_to_display = "Be the first!" except: winner_to_display = "Be the first!" if request.method == 'POST' and request.user.is_anonymous == True: messages.error(request, "Please register!") return redirect('create') if form.is_valid(): newPrice = form.cleaned_data.get("final_price") if newPrice > product.final_price + product.min_increment and form.is_valid( ): product.final_price = newPrice product.winner = str(request.user) product.user.add(request.user) increment = product.min_increment + product.final_price product.save() form = Increment_price_form() u = User.objects.filter(email=product.winner) s_name = u.first().first_name s_last = u.first().last_name winner_to_display = s_name[:3] + "**** ****" + s_last[len(s_last) - 3:len(s_last )] else: messages.error( request, "Please insert more than " + str(float(product.final_price + product.min_increment)) + " €") if request.user.is_authenticated: try: my_products = Product.objects.filter(profile=request.user.profile) if product in my_products: mine = True else: mine = False except: mine = False else: mine = False comments = Comment.objects.filter(product_post=product) context = { 'object': product, 'form': form, 'winner_to_diplay': winner_to_display, 'increment': increment, 'mine': mine, 'comments': comments, 'comment_form': comment_form } return render(request, 'products/productPage.html', context)
def test_can_create_a_comment_validation_fail(self): form = CommentForm({"title": "t", "like": "", "comment": ""}) self.assertFalse(form.is_valid())
def test_comment_form_invalid_or_no_data(self): form = CommentForm(data={}) self.assertFalse(form.is_valid())