Exemple #1
0
    def perform_other_operations(self):
        fresh_transaction = self.transaction_id == self.original_transaction_id
        if not fresh_transaction and self.restore_purchased_item():
            return True

        album_id = None

        if self.product[:29] == self.APPLE_PRODUCT_ALBUM_BUY:
            album_id = self.product[29:]

        if self.product[:30] == self.APPLE_PRODUCT_ALBUM_PASS:
            album_id = self.product[30:]

        if album_id is None:
            raise WrongParameter(parameter='Product')

        album_purchase_item = PurchaseItems.objects.get(Description='Album')
        AppleTransactionId \
            = self.transaction_id if fresh_transaction else self.original_transaction_id
        purchased_item = UserPurchasedItems(
            Purchaser=self.user.Purchaser,
            ItemId=int(album_id),
            PurchaseItemId=album_purchase_item,
            ItemCost=0,
            AppleTransactionId=AppleTransactionId)
        purchased_item.save()
    def perform_other_operations(self):
        fresh_transaction = self.transaction_id==self.original_transaction_id
        if not fresh_transaction and self.restore_purchased_item():
            return True

        album_id = None

        if self.product[:29] == self.APPLE_PRODUCT_ALBUM_BUY:
            album_id = self.product[29:]

        if self.product[:30] == self.APPLE_PRODUCT_ALBUM_PASS:
            album_id = self.product[30:]

        if album_id is None:
            raise WrongParameter(parameter='Product')

        album_purchase_item = PurchaseItems.objects.get(Description='Album')
        AppleTransactionId \
            = self.transaction_id if fresh_transaction else self.original_transaction_id
        purchased_item = UserPurchasedItems(Purchaser=self.user.Purchaser,
                                            ItemId=int(album_id),
                                            PurchaseItemId=album_purchase_item,
                                            ItemCost=0,
                                            AppleTransactionId=AppleTransactionId )
        purchased_item.save()
def sendMessage (request):
    if request.method != 'POST':
        return HttpResponse ("There is POST method only.")
    keys = request.POST.keys()
    response = {}
    if "API" not in keys:
        response["Error"] = {"ErrorCode": "666", "ErrorDescription": "There is no API parameter."}
        return HttpResponse (json.dumps(response))
    else:
        api_ver = request.POST.get("API")
    if api_ver != "1":
        response["Error"] = {"ErrorCode": "777", "ErrorDescription": "Wrong API version."}
        return HttpResponse (json.dumps(response))
    else:
        response["Error"] = {"ErrorCode": "", "ErrorDescription": ""}
    
    key = request.POST.get('Key', None)
    episode_id = request.POST.get('EpisodeId', None)
    trailer_id = request.POST.get('TrailerId', None)
    message = request.POST.get('Message', None)
    timeslot_id = request.POST.get('TimeslotId', None)
    screenshot_url = request.POST.get('ScreenshotURL', None)
    user_name = request.POST.get('UserName', None)

    if episode_id and trailer_id:
        response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There are EpisodeId and TrailerId. Should be only one param."}
        return HttpResponse (json.dumps(response))
    
    if not episode_id and not trailer_id:
        response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There are no EpisodeId or TrailerId. Should be one param."}
        return HttpResponse (json.dumps(response))

    if not message:
        response["Error"] = {"ErrorCode": "4", "ErrorDescription": "Message is empty."}
        return HttpResponse (json.dumps(response))

    if len(message) >= 200:
        response["Error"] = {"ErrorCode": "4", "ErrorDescription": "Message is too long."}
        return HttpResponse (json.dumps(response))

    if not user_name:
        response["Error"] = {"ErrorCode": "4", "ErrorDescription": "There is no UserName param."}
        return HttpResponse (json.dumps(response))

    if not key:
        response["Error"] = {"ErrorCode": "100", "ErrorDescription": "Authentication error."}
        return HttpResponse (json.dumps(response))
    
    from restserver.pipture.models import PipUsers
    
    try:
        purchaser = PipUsers.objects.get(Token=key)
    except PipUsers.DoesNotExist:
        response["Error"] = {"ErrorCode": "100", "ErrorDescription": "Authentication error."}
        return HttpResponse (json.dumps(response))
    

    from restserver.pipture.models import PurchaseItems
    SEND_EP = PurchaseItems.objects.get(Description="SendEpisode")
        
    if trailer_id:
        video_url, error = get_video_url_from_episode_or_trailer (id=trailer_id, type_r="T")
        if error:
            response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There is error: %s." % (error)}
            return HttpResponse (json.dumps(response))
        else:
            u_url = new_send_message (user=purchaser, video_id=trailer_id, message=message, video_type="T", user_name=user_name, screenshot_url=(screenshot_url or ''))
            response['MessageURL'] = "/videos/%s/" % (u_url)
            response['Balance'] = "%s" % (purchaser.Balance)
            return HttpResponse (json.dumps(response))
    
    from restserver.pipture.models import TimeSlots
    from restserver.pipture.models import TimeSlotVideos
   
    if timeslot_id and TimeSlots.timeslot_is_current(timeslot_id) and TimeSlotVideos.is_contain_id (timeslot_id, episode_id, "E"):
        u_url = new_send_message (user=purchaser, video_id=episode_id, message=message, video_type="E", user_name=user_name, screenshot_url=(screenshot_url or ''))
        response['MessageURL'] = "/videos/%s/" % (u_url)
        response['Balance'] = "%s" % (purchaser.Balance)
        return HttpResponse (json.dumps(response))

    from restserver.pipture.models import UserPurchasedItems

    video_url, error = get_video_url_from_episode_or_trailer (id=episode_id, type_r="E")
    if error:
        response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There is error: %s." % (error)}
        return HttpResponse (json.dumps(response))


    is_purchased = UserPurchasedItems.objects.filter(UserId=purchaser, ItemId=episode_id, PurchaseItemId = SEND_EP).count()
        
    if is_purchased:
        u_url = new_send_message (user=purchaser, video_id=episode_id, message=message, video_type="E", user_name=user_name, screenshot_url=(screenshot_url or ''))
        response['MessageURL'] = "/videos/%s/" % (u_url)
        response['Balance'] = "%s" % (purchaser.Balance)
        return HttpResponse (json.dumps(response))

    else:
        if (purchaser.Balance - SEND_EP.Price) >= 0:
            new_p = UserPurchasedItems(UserId=purchaser, ItemId=episode_id, PurchaseItemId = SEND_EP, ItemCost=SEND_EP.Price)
            new_p.save()
            purchaser.Balance = Decimal (purchaser.Balance - SEND_EP.Price)
            purchaser.save()
            u_url = new_send_message (user=purchaser, video_id=episode_id, message=message, video_type="E", user_name=user_name, screenshot_url=(screenshot_url or ''))
            response['MessageURL'] = "/videos/%s/" % (u_url)
            response['Balance'] = "%s" % (purchaser.Balance)
            return HttpResponse (json.dumps(response))
        else:
            response["Error"] = {"ErrorCode": "3", "ErrorDescription": "Not enough money."}
            return HttpResponse (json.dumps(response))
def getVideo (request):
    keys = request.GET.keys()
    response = {}
    if "API" not in keys:
        response["Error"] = {"ErrorCode": "666", "ErrorDescription": "There is no API parameter."}
        return HttpResponse (json.dumps(response))
    else:
        api_ver = request.GET.get("API")
    if api_ver != "1":
        response["Error"] = {"ErrorCode": "777", "ErrorDescription": "Wrong API version."}
        return HttpResponse (json.dumps(response))
    else:
        response["Error"] = {"ErrorCode": "", "ErrorDescription": ""}
    timeslot_id = request.GET.get('TimeslotId', None)
    episode_id = request.GET.get('EpisodeId', None)
    trailer_id = request.GET.get('TrailerId', None)
    force_buy = request.GET.get('ForceBuy', None)
    purchaser = request.GET.get('Key', None)
    
    from restserver.pipture.models import TimeSlots
    from restserver.pipture.models import TimeSlotVideos

    
    if force_buy and not purchaser:
        response["Error"] = {"ErrorCode": "4", "ErrorDescription": "Wrong authentication error"}
        return HttpResponse (json.dumps(response))
    if not (timeslot_id or force_buy) and not trailer_id:
        response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There are TimeslotId and TrailerId. Should be only one param."}
        return HttpResponse (json.dumps(response))
    if episode_id and trailer_id:
        response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There are EpisodeId and TrailerId. Should be only one param."}
        return HttpResponse (json.dumps(response))
    if not episode_id and not trailer_id:
        response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There are no EpisodeId or TrailerId. Should be one param."}
        return HttpResponse (json.dumps(response))
    if trailer_id and not timeslot_id:
        video_url, error = get_video_url_from_episode_or_trailer (id = trailer_id, type_r = "T")
        if error:
            response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There is error: %s." % (error)}
            return HttpResponse (json.dumps(response))
        response['VideoURL'] = video_url
        return HttpResponse (json.dumps(response))

    elif timeslot_id:

        if episode_id:
            video_type = "E"
        else:
            video_type = "T"
        
        if TimeSlots.timeslot_is_current(timeslot_id) and TimeSlotVideos.is_contain_id (timeslot_id, episode_id or trailer_id, video_type):
            video_url, error = get_video_url_from_episode_or_trailer (id = episode_id or trailer_id, type_r = video_type)
            if error:
                response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There is error: %s." % (error)}
                return HttpResponse (json.dumps(response))
            response['VideoURL'] = video_url
            return HttpResponse (json.dumps(response))
        else:
            response["Error"] = {"ErrorCode": "1", "ErrorDescription": "Timeslot expired"}
            return HttpResponse (json.dumps(response))


    else:
        force_buy = force_buy or "0"
        if force_buy not in ["1", "0"]:
            response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There is wrong ForceBuy %s (not 0 or 1)" % (force_buy)}
            return HttpResponse (json.dumps(response))

        from restserver.pipture.models import PipUsers
        
        try:
            purchaser = PipUsers.objects.get(Token=purchaser)
        except PipUsers.DoesNotExist:
            response["Error"] = {"ErrorCode": "100", "ErrorDescription": "Authentication error."}
            return HttpResponse (json.dumps(response))

        from restserver.pipture.models import UserPurchasedItems
        from restserver.pipture.models import PurchaseItems
        WATCH_EP = PurchaseItems.objects.get(Description="WatchEpisode")
        SEND_EP = PurchaseItems.objects.get(Description="SendEpisode")

        
        
        is_purchased = UserPurchasedItems.objects.filter(UserId=purchaser, ItemId=episode_id, PurchaseItemId = WATCH_EP).count()
        
        video_url, error = get_video_url_from_episode_or_trailer (id = episode_id, type_r = "E")
        if error:
            response["Error"] = {"ErrorCode": "888", "ErrorDescription": "There is internal error. Wrong video URL"}
            return HttpResponse (json.dumps(response))
            
        
        if is_purchased:
            response['VideoURL'] = video_url
            response['Balance'] = "%s" % (purchaser.Balance)
            return HttpResponse (json.dumps(response))
        else:
            if force_buy == "0":
                response["Error"] = {"ErrorCode": "2", "ErrorDescription": "Video not purchased."}
                return HttpResponse (json.dumps(response))
            else:
                if (purchaser.Balance - WATCH_EP.Price) >= 0:
                    new_p = UserPurchasedItems(UserId=purchaser, ItemId=episode_id, PurchaseItemId = WATCH_EP, ItemCost=WATCH_EP.Price)
                    new_p.save()
                    purchaser.Balance = Decimal (purchaser.Balance - WATCH_EP.Price)
                    purchaser.save()
                    response['VideoURL'] = video_url
                    response['Balance'] = "%s" % (purchaser.Balance)
                    return HttpResponse (json.dumps(response))
                else:
                    response["Error"] = {"ErrorCode": "3", "ErrorDescription": "Not enough money."}
                    return HttpResponse (json.dumps(response))