def install(request): form = forms.ReceiptForm(request.DATA) if not form.is_valid(): return Response({'error_message': form.errors}, status=400) obj = form.cleaned_data['app'] type_ = install_type(request, obj) if type_ == apps.INSTALL_TYPE_DEVELOPER: receipt = install_record(obj, request, apps.INSTALL_TYPE_DEVELOPER) else: # The app must be public and if its a premium app, you # must have purchased it. if not obj.is_public(): log.info('App not public: %s' % obj.pk) return Response('App not public.', status=403) if (obj.is_premium() and not obj.has_purchased(request.amo_user)): # Apps that are premium but have no charge will get an # automatic purchase record created. This will ensure that # the receipt will work into the future if the price changes. if obj.premium and not obj.premium.price.price: log.info('Create purchase record: {0}'.format(obj.pk)) AddonPurchase.objects.get_or_create(addon=obj, user=request.amo_user, type=CONTRIB_NO_CHARGE) else: log.info('App not purchased: %s' % obj.pk) return Response('You have not purchased this app.', status=402) receipt = install_record(obj, request, type_) utils_record(request, obj) return Response({'receipt': receipt}, status=201)
def install(request): form = forms.ReceiptForm(request.DATA) if not form.is_valid(): return Response({'error_message': form.errors}, status=400) obj = form.cleaned_data['app'] type_ = install_type(request, obj) if type_ == apps.INSTALL_TYPE_DEVELOPER: receipt = install_record(obj, request, apps.INSTALL_TYPE_DEVELOPER) else: # The app must be public and if its a premium app, you # must have purchased it. if not obj.is_public(): log.info('App not public: %s' % obj.pk) return Response('App not public.', status=403) if (obj.is_premium() and not obj.has_purchased(request.user)): # Apps that are premium but have no charge will get an # automatic purchase record created. This will ensure that # the receipt will work into the future if the price changes. if obj.premium and not obj.premium.price.price: log.info('Create purchase record: {0}'.format(obj.pk)) AddonPurchase.objects.get_or_create(addon=obj, user=request.user, type=CONTRIB_NO_CHARGE) else: log.info('App not purchased: app ID={a}; user={u}'.format( a=obj.pk, u=request.user)) return Response('You have not purchased this app.', status=402) receipt = install_record(obj, request, type_) utils_record(request, obj) return Response({'receipt': receipt}, status=201)