Jelajahi Sumber

Allow creation of empty collection via PUT

Unrud 9 tahun lalu
induk
melakukan
4861b79878
1 mengubah file dengan 16 tambahan dan 11 penghapusan
  1. 16 11
      radicale/__init__.py

+ 16 - 11
radicale/__init__.py

@@ -547,20 +547,25 @@ class Application:
             # Case 2: Item and ETag precondition verified: Modify item
             # Case 3: Item and no Etag precondition: Force modifying item
             items = list(vobject.readComponents(content or ""))
-            if items:
-                if item:
-                    # PUT is modifying an existing item
+            if item:
+                # PUT is modifying an existing item
+                if items:
                     new_item = collection.update(item_name, items[0])
-                elif item_name:
-                    # PUT is adding a new item
+                else:
+                    new_item = None
+            elif item_name:
+                # PUT is adding a new item
+                if items:
                     new_item = collection.upload(item_name, items[0])
                 else:
-                    # PUT is replacing the whole collection
-                    collection.delete()
-                    new_item = self.Collection.create_collection(
-                        environ["PATH_INFO"], items)
-                if new_item:
-                    headers["ETag"] = new_item.etag
+                    new_item = None
+            else:
+                # PUT is replacing the whole collection
+                collection.delete()
+                new_item = self.Collection.create_collection(
+                    environ["PATH_INFO"], items)
+            if new_item:
+                headers["ETag"] = new_item.etag
             status = client.CREATED
         else:
             # PUT rejected in all other cases