fix:get-folder
This commit is contained in:
parent
6cec537a2e
commit
1861bd9131
@ -1635,6 +1635,8 @@ class BulkEditObjectsView(PassUserMixin):
|
|||||||
shelves.delete()
|
shelves.delete()
|
||||||
warehouse.delete()
|
warehouse.delete()
|
||||||
|
|
||||||
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
elif operation == "delete" and object_type == "folders":
|
elif operation == "delete" and object_type == "folders":
|
||||||
for folder_id in object_ids:
|
for folder_id in object_ids:
|
||||||
folder = Folder.objects.get(id=int(folder_id))
|
folder = Folder.objects.get(id=int(folder_id))
|
||||||
@ -1651,7 +1653,7 @@ class BulkEditObjectsView(PassUserMixin):
|
|||||||
|
|
||||||
delete_folder_hierarchy(folder)
|
delete_folder_hierarchy(folder)
|
||||||
|
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
elif operation == "delete":
|
elif operation == "delete":
|
||||||
|
|
||||||
@ -1959,6 +1961,7 @@ class WarehouseViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
# try:
|
# try:
|
||||||
|
currentUser = request.user
|
||||||
serializer = WarehouseSerializer(data=request.data)
|
serializer = WarehouseSerializer(data=request.data)
|
||||||
parent_warehouse = None
|
parent_warehouse = None
|
||||||
if serializer.is_valid(raise_exception=True):
|
if serializer.is_valid(raise_exception=True):
|
||||||
@ -1969,14 +1972,17 @@ class WarehouseViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
if serializer.validated_data.get("type") == Warehouse.WAREHOUSE and not parent_warehouse:
|
if serializer.validated_data.get("type") == Warehouse.WAREHOUSE and not parent_warehouse:
|
||||||
warehouse = serializer.save()
|
warehouse = serializer.save()
|
||||||
warehouse.path = str(warehouse.id)
|
warehouse.path = str(warehouse.id)
|
||||||
|
warehouse.owner = currentUser
|
||||||
warehouse.save()
|
warehouse.save()
|
||||||
elif serializer.validated_data.get("type", "") == Warehouse.SHELF and getattr(parent_warehouse, 'type', "") == Warehouse.WAREHOUSE :
|
elif serializer.validated_data.get("type", "") == Warehouse.SHELF and getattr(parent_warehouse, 'type', "") == Warehouse.WAREHOUSE :
|
||||||
warehouse = serializer.save(type=Warehouse.SHELF, parent_warehouse=parent_warehouse)
|
warehouse = serializer.save(type=Warehouse.SHELF, parent_warehouse=parent_warehouse)
|
||||||
warehouse.path = f"{parent_warehouse.path}/{warehouse.id}"
|
warehouse.path = f"{parent_warehouse.path}/{warehouse.id}"
|
||||||
|
warehouse.owner = currentUser
|
||||||
warehouse.save()
|
warehouse.save()
|
||||||
elif serializer.validated_data.get("type", "") == Warehouse.BOXCASE and getattr(parent_warehouse, 'type', "") == Warehouse.SHELF :
|
elif serializer.validated_data.get("type", "") == Warehouse.BOXCASE and getattr(parent_warehouse, 'type', "") == Warehouse.SHELF :
|
||||||
warehouse = serializer.save(type=Warehouse.BOXCASE, parent_warehouse=parent_warehouse)
|
warehouse = serializer.save(type=Warehouse.BOXCASE, parent_warehouse=parent_warehouse)
|
||||||
warehouse.path = f"{parent_warehouse.path}/{warehouse.id}"
|
warehouse.path = f"{parent_warehouse.path}/{warehouse.id}"
|
||||||
|
warehouse.owner = currentUser
|
||||||
warehouse.save()
|
warehouse.save()
|
||||||
else:
|
else:
|
||||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||||
@ -2089,17 +2095,39 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
ordering_fields = ("name", "path", "parent_folder", "document_count")
|
ordering_fields = ("name", "path", "parent_folder", "document_count")
|
||||||
|
|
||||||
|
|
||||||
def getFolderDoc(self, fol):
|
def getFolderDoc(self, request):
|
||||||
|
currentUser = request.user
|
||||||
documents = list(Document.objects.filter(folder=fol).order_by("-created").values())
|
documents = list(Document.objects.filter(folder=None, owner=currentUser).order_by("-created").values())
|
||||||
folders = list(Folder.objects.filter(parent_folder=fol).order_by("name").values())
|
folders = list(Folder.objects.filter(parent_folder=None, owner=currentUser).order_by("name").values())
|
||||||
return {
|
return {
|
||||||
"documents": documents,
|
"documents": documents,
|
||||||
"folders": folders,
|
"folders": folders,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@action(methods=["get"], detail=False)
|
||||||
|
def folders_documents(self, request):
|
||||||
|
|
||||||
|
if request.method == "GET":
|
||||||
|
try:
|
||||||
|
return Response(self.getFolderDoc(request))
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"An error occurred retrieving folders: {e!s}")
|
||||||
|
return Response(
|
||||||
|
{"error": "Error retrieving folders, check logs for more detail."},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def getFolderDocById(self, fol):
|
||||||
|
|
||||||
|
documents = list(Document.objects.filter(folder=fol).order_by("-created").values())
|
||||||
|
child_folders = list(Folder.objects.filter(parent_folder=fol).order_by("name").values())
|
||||||
|
return {
|
||||||
|
"documents": documents,
|
||||||
|
"child_folders": child_folders,
|
||||||
|
}
|
||||||
|
|
||||||
@action(methods=["get"], detail=True)
|
@action(methods=["get"], detail=True)
|
||||||
def folders_documents(self, request, pk=None):
|
def folders_documents_by_id(self, request, pk=None):
|
||||||
currentUser = request.user
|
currentUser = request.user
|
||||||
try:
|
try:
|
||||||
fol = Folder.objects.get(pk=pk)
|
fol = Folder.objects.get(pk=pk)
|
||||||
@ -2114,7 +2142,7 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
|
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
try:
|
try:
|
||||||
return Response(self.getFolderDoc(fol))
|
return Response(self.getFolderDocById(fol))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"An error occurred retrieving folders: {e!s}")
|
logger.warning(f"An error occurred retrieving folders: {e!s}")
|
||||||
return Response(
|
return Response(
|
||||||
@ -2124,6 +2152,7 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
# try:
|
# try:
|
||||||
|
currentUser = request.user
|
||||||
serializer = FolderSerializer(data=request.data)
|
serializer = FolderSerializer(data=request.data)
|
||||||
parent_folder = None
|
parent_folder = None
|
||||||
if serializer.is_valid(raise_exception=True):
|
if serializer.is_valid(raise_exception=True):
|
||||||
@ -2134,10 +2163,12 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
if parent_folder == None:
|
if parent_folder == None:
|
||||||
folder = serializer.save()
|
folder = serializer.save()
|
||||||
folder.path = str(folder.id)
|
folder.path = str(folder.id)
|
||||||
|
folder.owner = currentUser
|
||||||
folder.save()
|
folder.save()
|
||||||
elif parent_folder:
|
elif parent_folder:
|
||||||
folder = serializer.save(parent_folder=parent_folder)
|
folder = serializer.save(parent_folder=parent_folder)
|
||||||
folder.path = f"{parent_folder.path}/{folder.id}"
|
folder.path = f"{parent_folder.path}/{folder.id}"
|
||||||
|
folder.owner = currentUser
|
||||||
folder.save()
|
folder.save()
|
||||||
else:
|
else:
|
||||||
return Response(status=status.HTTP_400_BAD_REQUEST)
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||||
@ -2147,6 +2178,17 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
def update(self, request, *args, **kwargs):
|
def update(self, request, *args, **kwargs):
|
||||||
partial = kwargs.pop('partial', False)
|
partial = kwargs.pop('partial', False)
|
||||||
instance = self.get_object()
|
instance = self.get_object()
|
||||||
|
|
||||||
|
if 'parent_folder' in request.data and int(request.data['parent_folder']) == instance.id:
|
||||||
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
if 'parent_folder' in request.data :
|
||||||
|
new_parent_folder = Folder.objects.get(id=int(request.data['parent_folder']))
|
||||||
|
if new_parent_folder.path.startswith(instance.path):
|
||||||
|
return Response(status=status.HTTP_400_BAD_REQUEST, data={'error': 'Cannot move a folder into one of its child folders.'})
|
||||||
|
else:
|
||||||
|
request.data['parent_folder'] = None
|
||||||
|
|
||||||
serializer = self.get_serializer(instance, data=request.data, partial=partial)
|
serializer = self.get_serializer(instance, data=request.data, partial=partial)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
|
|
||||||
@ -2157,6 +2199,7 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
if old_parent_folder != instance.parent_folder:
|
if old_parent_folder != instance.parent_folder:
|
||||||
if instance.parent_folder:
|
if instance.parent_folder:
|
||||||
instance.path = f"{instance.parent_folder.path}/{instance.id}"
|
instance.path = f"{instance.parent_folder.path}/{instance.id}"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
instance.path = f"{instance.id}"
|
instance.path = f"{instance.id}"
|
||||||
instance.save()
|
instance.save()
|
||||||
@ -2168,6 +2211,17 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
def partial_update(self, request, *args, **kwargs):
|
def partial_update(self, request, *args, **kwargs):
|
||||||
partial = kwargs.pop('partial', True)
|
partial = kwargs.pop('partial', True)
|
||||||
instance = self.get_object()
|
instance = self.get_object()
|
||||||
|
|
||||||
|
if 'parent_folder' in request.data and int(request.data['parent_folder']) == instance.id:
|
||||||
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
if 'parent_folder' in request.data :
|
||||||
|
new_parent_folder = Folder.objects.get(id=int(request.data['parent_folder']))
|
||||||
|
if new_parent_folder.path.startswith(instance.path):
|
||||||
|
return Response(status=status.HTTP_400_BAD_REQUEST, data={'error': 'Cannot move a folder into one of its child folders.'})
|
||||||
|
else:
|
||||||
|
request.data['parent_folder'] = None
|
||||||
|
|
||||||
serializer = self.get_serializer(instance, data=request.data, partial=partial)
|
serializer = self.get_serializer(instance, data=request.data, partial=partial)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
|
|
||||||
@ -2212,5 +2266,5 @@ class FolderViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
|||||||
|
|
||||||
delete_folder_hierarchy(folder)
|
delete_folder_hierarchy(folder)
|
||||||
|
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user