From 2bc6ceb998146efda95e1f85956405eec22f7a81 Mon Sep 17 00:00:00 2001 From: Jorge Date: Tue, 24 Sep 2024 18:07:49 -0400 Subject: [PATCH] Fix internal server error when uploading or moving files to a shared folder --- chris_backend/core/models.py | 21 +++++++++++++++------ chris_backend/filebrowser/serializers.py | 7 +++++-- chris_backend/userfiles/serializers.py | 15 +++++++++++---- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/chris_backend/core/models.py b/chris_backend/core/models.py index b9ca4fd2..b6ac44e4 100755 --- a/chris_backend/core/models.py +++ b/chris_backend/core/models.py @@ -141,8 +141,11 @@ def move(self, new_path): if new_parent_path != os.path.dirname(path): # parent folder has changed - (parent_folder, _) = ChrisFolder.objects.get_or_create(path=new_parent_path, - owner=self.owner) + try: + parent_folder = ChrisFolder.objects.get(path=new_parent_path) + except ChrisFolder.DoesNotExist: + parent_folder = ChrisFolder.objects.create(path=new_parent_path, + owner=self.owner) self.parent_folder = parent_folder self.save() @@ -551,8 +554,11 @@ def move(self, new_path): new_folder_path = os.path.dirname(new_path) if new_folder_path != old_folder_path: # parent folder has changed - (parent_folder, _) = ChrisFolder.objects.get_or_create(path=new_folder_path, - owner=self.owner) + try: + parent_folder = ChrisFolder.objects.get(path=new_folder_path) + except ChrisFolder.DoesNotExist: + parent_folder = ChrisFolder.objects.create(path=new_folder_path, + owner=self.owner) self.parent_folder = parent_folder self.fname.name = new_path @@ -831,8 +837,11 @@ def move(self, new_path): new_folder_path = os.path.dirname(new_path) if new_folder_path != old_folder_path: # parent folder has changed - (parent_folder, _) = ChrisFolder.objects.get_or_create(path=new_folder_path, - owner=self.owner) + try: + parent_folder = ChrisFolder.objects.get(path=new_folder_path) + except ChrisFolder.DoesNotExist: + parent_folder = ChrisFolder.objects.create(path=new_folder_path, + owner=self.owner) self.parent_folder = parent_folder self.fname.name = new_path diff --git a/chris_backend/filebrowser/serializers.py b/chris_backend/filebrowser/serializers.py index fd64f45c..133181fc 100755 --- a/chris_backend/filebrowser/serializers.py +++ b/chris_backend/filebrowser/serializers.py @@ -43,8 +43,11 @@ def create(self, validated_data): parent_path = os.path.dirname(path) owner = validated_data['owner'] - (parent_folder, _) = ChrisFolder.objects.get_or_create(path=parent_path, - owner=owner) + try: + parent_folder = ChrisFolder.objects.get(path=parent_path) + except ChrisFolder.DoesNotExist: + parent_folder = ChrisFolder.objects.create(path=parent_path, owner=owner) + validated_data['parent'] = parent_folder return super(FileBrowserFolderSerializer, self).create(validated_data) diff --git a/chris_backend/userfiles/serializers.py b/chris_backend/userfiles/serializers.py index 85428507..0cdaffb1 100755 --- a/chris_backend/userfiles/serializers.py +++ b/chris_backend/userfiles/serializers.py @@ -42,8 +42,11 @@ def create(self, validated_data): folder_path = os.path.dirname(upload_path) owner = validated_data['owner'] - (parent_folder, _) = ChrisFolder.objects.get_or_create(path=folder_path, - owner=owner) + try: + parent_folder = ChrisFolder.objects.get(path=folder_path) + except ChrisFolder.DoesNotExist: + parent_folder = ChrisFolder.objects.create(path=folder_path, owner=owner) + validated_data['parent_folder'] = parent_folder user_file = UserFile(**validated_data) user_file.fname.name = upload_path @@ -74,8 +77,12 @@ def update(self, instance, validated_data): folder_path = os.path.dirname(upload_path) owner = instance.owner - (parent_folder, _) = ChrisFolder.objects.get_or_create(path=folder_path, - owner=owner) + + try: + parent_folder = ChrisFolder.objects.get(path=folder_path) + except ChrisFolder.DoesNotExist: + parent_folder = ChrisFolder.objects.create(path=folder_path, owner=owner) + instance.parent_folder = parent_folder instance.fname.name = upload_path