示例#1
0
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))