def confirm_order(request, *args, **kwargs): member = request.user if not member.profile.is_vod_operator: return HttpResponse(json.dumps({'error': "Only VoD operators may order movies."})) last_prepayment = member.profile.get_last_retail_prepayment() items = request.GET.get('items') info = generate_add_list_info(items) sales_config = SalesConfig.objects.all()[0] add_list_size = info['add_list_size'] add_list_duration = info['add_list_duration'] if not last_prepayment: return HttpResponse(json.dumps({'error': _("You don't have any retail bundle. Contact your vendor.")})) if sales_config.unit == SalesConfig.BROADCASTING_TIME: if last_prepayment.balance < add_list_duration: return HttpResponse(json.dumps({'error': _("Your update bundle contains only %d hours." % (last_prepayment.balance / 60))})) else: if last_prepayment.balance < add_list_size: return HttpResponse(json.dumps({'error': _("Your update bundle contains only %.2f GB." % (last_prepayment.balance / 1000.0))})) try: update = ContentUpdate.objects.get(member=member, status=ContentUpdate.PENDING) except ContentUpdate.DoesNotExist: update = ContentUpdate.objects.create(member=member) add_media_to_update(items, update) update.add_list = (update.add_list + ',' + info['add_list']).strip(',') update.add_list_size += add_list_size update.save() if not getattr(settings, 'UNIT_TESTING', False): service_id = getattr(settings, 'IKWEN_SERVICE_ID') database = Service.objects.get(pk=service_id).database update.save(using=database) return HttpResponse(json.dumps({'success': True}))
def test_generate_add_list_info(self): serialized_items = '56eb6d04b37b3379b531e081|movie,56eb6d04b37b3379b531e082|movie,' \ '56eb6d04b37b3379b531e083|movie,56eb6d04b37b3379b531e061|seriesepisode,' \ '56eb6d04b37b3379b531e062|seriesepisode,56eb6d04b37b3379b531e063|seriesepisode,' info = generate_add_list_info(serialized_items) expected_add_list = [Movie.objects.get(pk=pk).filename for pk in ('56eb6d04b37b3379b531e081', '56eb6d04b37b3379b531e082', '56eb6d04b37b3379b531e083')] expected_add_list.extend([SeriesEpisode.objects.get(pk=pk).filename for pk in ('56eb6d04b37b3379b531e061', '56eb6d04b37b3379b531e062', '56eb6d04b37b3379b531e063')]) self.assertEqual(info['add_list'], ','.join(expected_add_list)) self.assertEqual(info['add_list_size'], 450 + 1023) self.assertEqual(info['add_list_duration'], 270 + 120)
def confirm_order(request, *args, **kwargs): member = request.user if not member.profile.is_vod_operator: return HttpResponse( json.dumps({'error': "Only VoD operators may order movies."})) last_prepayment = member.profile.get_last_retail_prepayment() items = request.GET.get('items') info = generate_add_list_info(items) sales_config = SalesConfig.objects.all()[0] add_list_size = info['add_list_size'] add_list_duration = info['add_list_duration'] if not last_prepayment: return HttpResponse( json.dumps({ 'error': _("You don't have any retail bundle. Contact your vendor.") })) if sales_config.unit == SalesConfig.BROADCASTING_TIME: if last_prepayment.balance < add_list_duration: return HttpResponse( json.dumps({ 'error': _("Your update bundle contains only %d hours." % (last_prepayment.balance / 60)) })) else: if last_prepayment.balance < add_list_size: return HttpResponse( json.dumps({ 'error': _("Your update bundle contains only %.2f GB." % (last_prepayment.balance / 1000.0)) })) try: update = ContentUpdate.objects.get(member=member, status=ContentUpdate.PENDING) except ContentUpdate.DoesNotExist: update = ContentUpdate.objects.create(member=member) add_media_to_update(items, update) update.add_list = (update.add_list + ',' + info['add_list']).strip(',') update.add_list_size += add_list_size update.save() if not getattr(settings, 'UNIT_TESTING', False): service_id = getattr(settings, 'IKWEN_SERVICE_ID') database = Service.objects.get(pk=service_id).database update.save(using=database) return HttpResponse(json.dumps({'success': True}))