API: Upload new version of an extension #138
@ -197,44 +197,36 @@ class UploadExtensionVersionView(APIView):
|
|||||||
status=status.HTTP_403_FORBIDDEN,
|
status=status.HTTP_403_FORBIDDEN,
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
# Create a NewVersionView instance to handle file creation
|
||||||
# Create a NewVersionView instance to handle file creation
|
new_version_view = NewVersionView(request=request, extension=extension)
|
||||||
new_version_view = NewVersionView(request=request, extension=extension)
|
|
||||||
|
|
||||||
# Pass the version_file to the form
|
# Pass the version_file to the form
|
||||||
form = new_version_view.get_form(FileFormSkipAgreed)
|
form = new_version_view.get_form(FileFormSkipAgreed)
|
||||||
form.fields['source'].initial = version_file
|
form.fields['source'].initial = version_file
|
||||||
|
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return Response({'message': form.errors}, status=status.HTTP_400_BAD_REQUEST)
|
return Response({'message': form.errors}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
# Create the file instance
|
# Create the file instance
|
||||||
file_instance = form.save(commit=False)
|
file_instance = form.save(commit=False)
|
||||||
file_instance.user = user
|
file_instance.user = user
|
||||||
file_instance.save()
|
file_instance.save()
|
||||||
|
|
||||||
|
|||||||
# Create the version from the file
|
# Create the version from the file
|
||||||
version = Version.objects.update_or_create(
|
version = Version.objects.update_or_create(
|
||||||
extension=extension,
|
extension=extension,
|
||||||
file=file_instance,
|
file=file_instance,
|
||||||
release_notes=release_notes,
|
release_notes=release_notes,
|
||||||
**file_instance.parsed_version_fields,
|
**file_instance.parsed_version_fields,
|
||||||
)[0]
|
)[0]
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
{
|
{
|
||||||
'message': 'Extension version uploaded successfully!',
|
'message': 'Extension version uploaded successfully!',
|
||||||
'extension_id': extension_id,
|
'extension_id': extension_id,
|
||||||
'version_file': version_file.name,
|
'version_file': version_file.name,
|
||||||
'release_notes': version.release_notes,
|
'release_notes': version.release_notes,
|
||||||
},
|
},
|
||||||
status=status.HTTP_201_CREATED,
|
status=status.HTTP_201_CREATED,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
|
||||||
return Response(
|
|
||||||
{
|
|
||||||
'message': str(e),
|
|
||||||
},
|
|
||||||
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
||||||
)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user
btw, what's the use case for update here? why we are not just creating the object?
I guess I was just copying the same code we used on UploadFileView.form_valid. Which probably should be changed as well.
Anyways, changing the PR to use create(), and will merge after testing.