def save_review(request): json_response = {'success': False} if request.method == 'POST': init_user_login(request) user = request.user data = json.loads(request.POST['data']) fp_id = data.get('fp_id', None) review_id = data.get('review_id', None) review_pic_ids = data.get('ri_ids', []) review_title = data.get('title', "") review_details = data.get('details', None) review_rating = data.get('rating', None) review = Review() if review_id and len(Review.objects.filter(id=review_id)) > 0: review = Review.objects.get(pk=review_id) fp = None ph = None if fp_id and hasattr(user, 'payment_set'): for i, py in enumerate( user.payment_set.all().order_by('createdte')): for j, ph_ in enumerate(py.purchasehistory_set.all()): if len(FacePack.objects.filter(pk=ph_.item.id)) == 1: fp = FacePack.objects.get(pk=fp_id) ph = ph_ break # If facepack is associated to valid user and purchase history, then save. if fp and ph: review.ph = ph review.fp = fp review.details = review_details review.headline = review_title review.rating = int(review_rating) if review_rating else 0 review.save() for ri_id in review_pic_ids: if ReviewImage.objects.filter(pk=ri_id).count() > 0: ri = ReviewImage.objects.get(pk=ri_id) ri.review = review ri.save() json_response['success'] = True return HttpResponse(json.dumps(json_response, ensure_ascii=False))