def create(self, request, *args, **kwargs): """ Custom create method allowing us to re-use form logic and distinguish packaged app from hosted apps, applying delays to the validation task if necessary. Doesn't rely on any serializer, just forms. """ data = self.request.DATA packaged = "upload" in data form = NewPackagedForm(data) if packaged else NewManifestForm(data) if not form.is_valid(): return Response(form.errors, status=HTTP_400_BAD_REQUEST) if not packaged: upload = FileUpload.objects.create(user=request.user if request.user.is_authenticated() else None) # The hosted app validator is pretty fast. tasks.fetch_manifest(form.cleaned_data["manifest"], upload.pk) else: upload = form.file_upload # The packaged app validator is much heavier. tasks.validator.delay(upload.pk) log.info("Validation created: %s" % upload.pk) self.kwargs = {"pk": upload.pk} # Re-fetch the object, fetch_manifest() might have altered it. upload = self.get_object() serializer = self.get_serializer(upload) status = HTTP_201_CREATED if upload.processed else HTTP_202_ACCEPTED return Response(serializer.data, status=status)
def create(self, request, *args, **kwargs): """ Custom create method allowing us to re-use form logic and distinguish packaged app from hosted apps, applying delays to the validation task if necessary. Doesn't rely on any serializer, just forms. """ data = self.request.DATA packaged = 'upload' in data form = (NewPackagedForm(data) if packaged else NewManifestForm(data)) if not form.is_valid(): return Response(form.errors, status=HTTP_400_BAD_REQUEST) if not packaged: upload = FileUpload.objects.create( user=request.user if request.user.is_authenticated() else None) # The hosted app validator is pretty fast. tasks.fetch_manifest(form.cleaned_data['manifest'], upload.pk) else: upload = form.file_upload # The packaged app validator is much heavier. tasks.validator.delay(upload.pk) log.info('Validation created: %s' % upload.pk) self.kwargs = {'pk': upload.pk} # Re-fetch the object, fetch_manifest() might have altered it. upload = self.get_object() serializer = self.get_serializer(upload) status = HTTP_201_CREATED if upload.processed else HTTP_202_ACCEPTED return Response(serializer.data, status=status)
def obj_create(self, bundle, request=None, **kwargs): packaged = "upload" in bundle.data form = NewPackagedForm(bundle.data) if packaged else NewManifestForm(bundle.data) if not form.is_valid(): raise self.form_errors(form) if not packaged: upload = FileUpload.objects.create(user=amo.get_user()) # The hosted app validator is pretty fast. tasks.fetch_manifest(form.cleaned_data["manifest"], upload.pk) else: upload = form.file_upload # The packaged app validator is much heavier. tasks.validator.delay(upload.pk) # This is a reget of the object, we do this to get the refreshed # results if not celery delayed. bundle.obj = FileUpload.uncached.get(pk=upload.pk) log.info("Validation created: %s" % bundle.obj.pk) return bundle
def obj_create(self, bundle, request=None, **kwargs): packaged = 'upload' in bundle.data form = (NewPackagedForm(bundle.data) if packaged else NewManifestForm(bundle.data)) if not form.is_valid(): raise self.form_errors(form) if not packaged: upload = FileUpload.objects.create( user=getattr(request, 'amo_user', None)) # The hosted app validator is pretty fast. tasks.fetch_manifest(form.cleaned_data['manifest'], upload.pk) else: upload = form.file_upload # The packaged app validator is much heavier. tasks.validator.delay(upload.pk) # This is a reget of the object, we do this to get the refreshed # results if not celery delayed. bundle.obj = FileUpload.uncached.get(pk=upload.pk) log.info('Validation created: %s' % bundle.obj.pk) return bundle