def post(self, request, *args, **kwargs): form = PrepareWebAppForm(request.DATA) if not form.is_valid(): return Response(form.errors, status=status.HTTP_400_BAD_REQUEST) app = form.cleaned_data['app'] region = getattr(request, 'REGION', None) if region and region.id not in app.get_price_region_ids(): log.info('Region {0} is not in {1}' .format(region.id, app.get_price_region_ids())) return Response('Payments are limited and flag not enabled', status=status.HTTP_403_FORBIDDEN) if app.is_premium() and app.has_purchased(request._request.amo_user): log.info('Already purchased: {0}'.format(app.pk)) return Response({'reason': u'Already purchased app.'}, status=status.HTTP_409_CONFLICT) app_pay_cef.log(request._request, 'Preparing JWT', 'preparing_jwt', 'Preparing JWT for: {0}'.format(app.pk), severity=3) token = get_product_jwt( WebAppProduct(app), client_data=ClientData.get_or_create(request._request), lang=request._request.LANG, region=request._request.REGION, source=request._request.REQUEST.get('src', ''), user=request._request.amo_user, ) return Response(token, status=status.HTTP_201_CREATED)
def post(self, request, *args, **kwargs): form = PrepareWebAppForm(request.DATA) if not form.is_valid(): return Response(form.errors, status=status.HTTP_400_BAD_REQUEST) app = form.cleaned_data['app'] region = getattr(request, 'REGION', None) if region: enabled_regions = app.get_price_region_ids() region_can_purchase = region.id in enabled_regions restofworld_can_purchase = RESTOFWORLD.id in enabled_regions if not region_can_purchase and not restofworld_can_purchase: log.info('Region {0} is not in {1}; ' 'restofworld purchases are inactive'.format( region.id, enabled_regions)) return Response( {'reason': 'Payments are restricted for this region'}, status=status.HTTP_403_FORBIDDEN) if app.is_premium() and app.has_purchased(request._request.user): log.info('Already purchased: {0}'.format(app.pk)) return Response({'reason': u'Already purchased app.'}, status=status.HTTP_409_CONFLICT) app_pay_cef.log(request._request, 'Preparing JWT', 'preparing_jwt', 'Preparing JWT for: {0}'.format(app.pk), severity=3) log.debug('Starting purchase of app: {0} by user: {1}'.format( app.pk, request._request.user)) contribution = Contribution.objects.create( addon_id=app.pk, amount=app.get_price(region=request._request.REGION.id), paykey=None, price_tier=app.premium.price, source=request._request.GET.get('src', ''), source_locale=request._request.LANG, type=mkt.CONTRIB_PENDING, user=request._request.user, uuid=str(uuid.uuid4()), ) log.debug('Storing contrib for uuid: {0}'.format(contribution.uuid)) token = get_product_jwt(WebAppProduct(app), contribution) return Response(token, status=status.HTTP_201_CREATED)
def post(self, request, *args, **kwargs): form = PrepareWebAppForm(request.DATA) if not form.is_valid(): return Response(form.errors, status=status.HTTP_400_BAD_REQUEST) app = form.cleaned_data['app'] region = getattr(request, 'REGION', None) if region: enabled_regions = app.get_price_region_ids() region_can_purchase = region.id in enabled_regions restofworld_can_purchase = RESTOFWORLD.id in enabled_regions if not region_can_purchase and not restofworld_can_purchase: log.info('Region {0} is not in {1}; ' 'restofworld purchases are inactive' .format(region.id, enabled_regions)) return Response( {'reason': 'Payments are restricted for this region'}, status=status.HTTP_403_FORBIDDEN) if app.is_premium() and app.has_purchased(request._request.user): log.info('Already purchased: {0}'.format(app.pk)) return Response({'reason': u'Already purchased app.'}, status=status.HTTP_409_CONFLICT) app_pay_cef.log(request._request, 'Preparing JWT', 'preparing_jwt', 'Preparing JWT for: {0}'.format(app.pk), severity=3) log.debug('Starting purchase of app: {0} by user: {1}'.format( app.pk, request._request.user)) contribution = Contribution.objects.create( addon_id=app.pk, amount=app.get_price(region=request._request.REGION.id), paykey=None, price_tier=app.premium.price, source=request._request.REQUEST.get('src', ''), source_locale=request._request.LANG, type=mkt.CONTRIB_PENDING, user=request._request.user, uuid=str(uuid.uuid4()), ) log.debug('Storing contrib for uuid: {0}'.format(contribution.uuid)) token = get_product_jwt(WebAppProduct(app), contribution) return Response(token, status=status.HTTP_201_CREATED)