mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Enable existing_image on PATCH requests (#6126)
* Enable existing_image on PATCH requests * Fix CI problems * Solution * Change check to whitelist and add unit tests
This commit is contained in:
parent
4b14986591
commit
9db3efa085
@ -617,7 +617,10 @@ class PartSerializer(
|
|||||||
|
|
||||||
if not create:
|
if not create:
|
||||||
# These fields are only used for the LIST API endpoint
|
# These fields are only used for the LIST API endpoint
|
||||||
for f in self.skip_create_fields()[1:]:
|
for f in self.skip_create_fields():
|
||||||
|
# Fields required for certain operations, but are not part of the model
|
||||||
|
if f in ["remote_image", "existing_image"]:
|
||||||
|
continue
|
||||||
self.fields.pop(f)
|
self.fields.pop(f)
|
||||||
|
|
||||||
if not pricing:
|
if not pricing:
|
||||||
|
@ -1575,6 +1575,64 @@ class PartDetailTests(PartAPITestBase):
|
|||||||
|
|
||||||
self.assertEqual(response.data['image'], image_name)
|
self.assertEqual(response.data['image'], image_name)
|
||||||
|
|
||||||
|
def test_update_existing_image(self):
|
||||||
|
"""Test that we can update the image of an existing part with an already existing image"""
|
||||||
|
# First, upload an image for an existing part
|
||||||
|
p = Part.objects.first()
|
||||||
|
|
||||||
|
fn = 'part_image_123abc.png'
|
||||||
|
|
||||||
|
img = PIL.Image.new('RGB', (128, 128), color='blue')
|
||||||
|
img.save(fn)
|
||||||
|
|
||||||
|
# Upload the image to a part
|
||||||
|
with open(fn, 'rb') as img_file:
|
||||||
|
response = self.upload_client.patch(
|
||||||
|
reverse('api-part-detail', kwargs={'pk': p.pk}),
|
||||||
|
{
|
||||||
|
'image': img_file,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
image_name = response.data['image']
|
||||||
|
self.assertTrue(image_name.startswith('/media/part_images/part_image'))
|
||||||
|
|
||||||
|
# Create a new part without an image
|
||||||
|
response = self.post(
|
||||||
|
reverse('api-part-list'),
|
||||||
|
{
|
||||||
|
'name': 'Some New Part',
|
||||||
|
'description': 'Description of the part',
|
||||||
|
'category': 1
|
||||||
|
},
|
||||||
|
expected_code=201
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(response.data['image'], None)
|
||||||
|
part_pk = response.data['pk']
|
||||||
|
|
||||||
|
# Add image from the first part to the new part
|
||||||
|
response = self.patch(
|
||||||
|
reverse('api-part-detail', kwargs={'pk': part_pk}),
|
||||||
|
{
|
||||||
|
'existing_image': image_name
|
||||||
|
},
|
||||||
|
expected_code=200
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(response.data['image'], image_name)
|
||||||
|
|
||||||
|
# Attempt to add a non-existent image to an existing part
|
||||||
|
last_p = Part.objects.last()
|
||||||
|
response = self.patch(
|
||||||
|
reverse('api-part-detail', kwargs={'pk': last_p.pk}),
|
||||||
|
{
|
||||||
|
'existing_image': 'bogus_image.jpg'
|
||||||
|
},
|
||||||
|
expected_code=400
|
||||||
|
)
|
||||||
|
|
||||||
def test_details(self):
|
def test_details(self):
|
||||||
"""Test that the required details are available."""
|
"""Test that the required details are available."""
|
||||||
p = Part.objects.get(pk=1)
|
p = Part.objects.get(pk=1)
|
||||||
|
Loading…
Reference in New Issue
Block a user