♻️(backend) override document perform_create

We override the perform_create method of
the DocumentViewSet to save the document with
the id provided if a id is provided in the request.
We do that because in offline mode we will create
the document locally and we will need to save it
with the id created locally to have our next
requests to the server to be able to find the
document with the id provided.
This commit is contained in:
Anthony LC
2024-06-20 15:24:10 +02:00
committed by Anthony LC
parent bf10fbd25f
commit aef5dd51fc
2 changed files with 38 additions and 0 deletions

View File

@@ -311,6 +311,19 @@ class DocumentViewSet(
resource_field_name = "document"
queryset = models.Document.objects.all()
def perform_create(self, serializer):
"""
Override perform_create to use the provided ID in the payload if it exists
"""
document_id = self.request.data.get("id")
document = serializer.save(id=document_id) if document_id else serializer.save()
self.access_model_class.objects.create(
user=self.request.user,
role=models.RoleChoices.OWNER,
**{self.resource_field_name: document},
)
@decorators.action(detail=True, methods=["get"], url_path="versions")
def versions_list(self, request, *args, **kwargs):
"""