Skip to content

Commit e809599

Browse files
committed
Enable and test clearing files for a dataset
1 parent a9e34b5 commit e809599

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

sasdata/fair_database/data/test/test_dataset.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,12 @@ def test_update_dataset_replace_files(self):
554554
self.public_dataset.files.add(self.file)
555555
self.public_dataset.files.remove(file)
556556

557+
def test_update_dataset_clear_files(self):
558+
request = self.auth_client1.put("/v1/data/set/1/", data={"files": [""]})
559+
self.assertEqual(request.status_code, status.HTTP_200_OK)
560+
self.assertEqual(len(DataSet.objects.get(id=1).files.all()), 0)
561+
self.public_dataset.files.add(self.file)
562+
557563
# Test that a dataset cannot be updated to be private and unowned
558564
def test_update_dataset_no_private_unowned(self):
559565
request1 = self.auth_client1.put("/v1/data/set/2/", data={"current_user": ""})

sasdata/fair_database/data/views.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,8 +300,18 @@ def put(self, request, data_id, version=None):
300300
serializer = DataSetSerializer(
301301
db, request.data, context={"request": request}, partial=True
302302
)
303+
clear_files = "files" in request.data and not request.data["files"]
304+
if clear_files:
305+
data_copy = request.data.copy()
306+
data_copy.pop("files")
307+
serializer = DataSetSerializer(
308+
db, data_copy, context={"request": request}, partial=True
309+
)
303310
if serializer.is_valid(raise_exception=True):
304311
serializer.save()
312+
if clear_files:
313+
db.files.clear()
314+
db.save()
305315
data = {"data_id": db.id, "name": db.name, "is_public": db.is_public}
306316
return Response(data)
307317

0 commit comments

Comments
 (0)