mirror of
https://github.com/inventree/InvenTree.git
synced 2026-07-04 06:00:38 +00:00
[bug] Fix double save (#12194)
* Prevent double-save when creating an order * Prevent double-save for BuildOrder * More fixes * Additional unit tests * Revert code, remove create method against StockTrackingList * Fix mixins
This commit is contained in:
@@ -395,9 +395,7 @@ class BuildList(
|
||||
serializer = self.get_serializer(data=self.clean_data(request.data))
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
build = serializer.save()
|
||||
build.issued_by = request.user
|
||||
build.save()
|
||||
serializer.save(issued_by=request.user)
|
||||
|
||||
headers = self.get_success_headers(serializer.data)
|
||||
return Response(
|
||||
|
||||
@@ -479,9 +479,7 @@ class NotesImageList(ListCreateAPI):
|
||||
|
||||
def perform_create(self, serializer):
|
||||
"""Create (upload) a new notes image."""
|
||||
image = serializer.save()
|
||||
image.user = self.request.user
|
||||
image.save()
|
||||
serializer.save(user=self.request.user)
|
||||
|
||||
|
||||
class ProjectCodeList(DataExportViewMixin, ListCreateAPI):
|
||||
@@ -810,9 +808,7 @@ class AttachmentList(AttachmentMixin, BulkDeleteMixin, ListCreateAPI):
|
||||
|
||||
def perform_create(self, serializer):
|
||||
"""Save the user information when a file is uploaded."""
|
||||
attachment = serializer.save()
|
||||
attachment.upload_user = self.request.user
|
||||
attachment.save()
|
||||
serializer.save(upload_user=self.request.user)
|
||||
|
||||
def validate_delete(self, queryset, request) -> None:
|
||||
"""Ensure that the user has correct permissions for a bulk-delete.
|
||||
|
||||
@@ -103,9 +103,7 @@ class OrderCreateMixin:
|
||||
serializer = self.get_serializer(data=self.clean_data(request.data))
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
item = serializer.save()
|
||||
item.created_by = request.user
|
||||
item.save()
|
||||
serializer.save(created_by=request.user)
|
||||
|
||||
headers = self.get_success_headers(serializer.data)
|
||||
return Response(
|
||||
|
||||
@@ -1512,10 +1512,7 @@ class StockItemTestResultList(
|
||||
Also, check if an attachment was uploaded alongside the test result,
|
||||
and save it to the database if it were.
|
||||
"""
|
||||
# Capture the user information
|
||||
test_result = serializer.save()
|
||||
test_result.user = self.request.user
|
||||
test_result.save()
|
||||
serializer.save(user=self.request.user)
|
||||
|
||||
|
||||
class StockTrackingDetail(RetrieveAPI):
|
||||
@@ -1664,32 +1661,6 @@ class StockTrackingList(
|
||||
|
||||
return Response(data)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
"""Create a new StockItemTracking object.
|
||||
|
||||
Here we override the default 'create' implementation,
|
||||
to save the user information associated with the request object.
|
||||
"""
|
||||
# Clean up input data
|
||||
data = self.clean_data(request.data)
|
||||
|
||||
serializer = self.get_serializer(data=data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
# Record the user who created this Part object
|
||||
item = serializer.save()
|
||||
item.user = request.user
|
||||
item.system = False
|
||||
|
||||
# quantity field cannot be explicitly adjusted here
|
||||
item.quantity = item.item.quantity
|
||||
item.save()
|
||||
|
||||
headers = self.get_success_headers(serializer.data)
|
||||
return Response(
|
||||
serializer.data, status=status.HTTP_201_CREATED, headers=headers
|
||||
)
|
||||
|
||||
filter_backends = SEARCH_ORDER_FILTER
|
||||
|
||||
ordering = '-date'
|
||||
|
||||
Reference in New Issue
Block a user