def put(self, request, addon, version): if 'upload' in request.FILES: filedata = request.FILES['upload'] else: return Response( {'error': _('Missing "upload" key in multipart file data.')}, status=status.HTTP_400_BAD_REQUEST) try: # Parse the file to get and validate package data with the addon. pkg = parse_addon(filedata, addon) except forms.ValidationError as e: return Response({'error': e.message}, status=status.HTTP_400_BAD_REQUEST) if pkg['version'] != version: return Response( {'error': _('Version does not match install.rdf.')}, status=status.HTTP_400_BAD_REQUEST) elif addon.versions.filter(version=version).exists(): return Response({'error': _('Version already exists.')}, status=status.HTTP_409_CONFLICT) file_upload = handle_upload( filedata=filedata, user=request.user, addon=addon, submit=True) return Response(FileUploadSerializer(file_upload).data, status=status.HTTP_202_ACCEPTED)
def put(self, request, addon, version_string): if 'upload' in request.FILES: filedata = request.FILES['upload'] else: return Response( {'error': _('Missing "upload" key in multipart file data.')}, status=status.HTTP_400_BAD_REQUEST) try: # Parse the file to get and validate package data with the addon. pkg = parse_addon(filedata, addon) if not acl.submission_allowed(request.user, pkg): raise forms.ValidationError( _(u'You cannot submit this type of add-ons')) except forms.ValidationError as e: return Response({'error': e.message}, status=status.HTTP_400_BAD_REQUEST) if pkg['version'] != version_string: return Response( {'error': _('Version does not match install.rdf.')}, status=status.HTTP_400_BAD_REQUEST) elif (addon is not None and addon.versions.filter( version=version_string, files__status__in=amo.REVIEWED_STATUSES).exists()): return Response({'error': _('Version already exists.')}, status=status.HTTP_409_CONFLICT) if addon is None: addon = Addon.create_addon_from_upload_data(data=pkg, user=request.user, is_listed=False) status_code = status.HTTP_201_CREATED else: status_code = status.HTTP_202_ACCEPTED file_upload = handle_upload(filedata=filedata, user=request.user, addon=addon, submit=True) return Response(FileUploadSerializer(file_upload).data, status=status_code)
def put(self, request, addon, version_string): if 'upload' in request.FILES: filedata = request.FILES['upload'] else: return Response( {'error': _('Missing "upload" key in multipart file data.')}, status=status.HTTP_400_BAD_REQUEST) try: # Parse the file to get and validate package data with the addon. pkg = parse_addon(filedata, addon) if not acl.submission_allowed(request.user, pkg): raise forms.ValidationError( _(u'You cannot submit this type of add-ons')) except forms.ValidationError as e: return Response({'error': e.message}, status=status.HTTP_400_BAD_REQUEST) if pkg['version'] != version_string: return Response( {'error': _('Version does not match install.rdf.')}, status=status.HTTP_400_BAD_REQUEST) elif (addon is not None and addon.versions.filter( version=version_string, files__status__in=amo.REVIEWED_STATUSES).exists()): return Response({'error': _('Version already exists.')}, status=status.HTTP_409_CONFLICT) if addon is None: addon = Addon.create_addon_from_upload_data( data=pkg, user=request.user, is_listed=False) status_code = status.HTTP_201_CREATED else: status_code = status.HTTP_202_ACCEPTED file_upload = handle_upload( filedata=filedata, user=request.user, addon=addon, submit=True) return Response(FileUploadSerializer(file_upload).data, status=status_code)