Fix uploading of whole address books

This commit is contained in:
Unrud 2017-07-01 00:11:00 +02:00
parent 69086c6d70
commit c135dc026d
2 changed files with 7 additions and 7 deletions

View File

@ -824,17 +824,21 @@ class Application:
content_type = environ.get("CONTENT_TYPE", "").split(";")[0]
tags = {value: key for key, value in xmlutils.MIMETYPES.items()}
tag = tags.get(content_type)
if items and items[0].name == "VCALENDAR":
tag = "VCALENDAR"
elif items and items[0].name == "VCARD":
tag = "VADDRESSBOOK"
if write_whole_collection:
try:
new_item = self.Collection.create_collection(
path, items, {"tag": tag})
path, items, {"tag": tag} if tag else None)
except ValueError as e:
self.logger.warning(
"Bad PUT request on %r: %s", path, e, exc_info=True)
return BAD_REQUEST
else:
if tag:
if tag and not parent_item.get_meta("tag"):
parent_item.set_meta({"tag": tag})
href = posixpath.basename(path.strip("/"))
try:

View File

@ -708,10 +708,6 @@ class Collection(BaseCollection):
sane_path = sanitize_path(href).strip("/")
filesystem_path = path_to_filesystem(folder, sane_path)
if not props:
props = {}
if not props.get("tag") and collection:
props["tag"] = collection[0].name
if not props:
cls._makedirs_synced(filesystem_path)
return cls(sane_path)
@ -747,7 +743,7 @@ class Collection(BaseCollection):
vobject_items.get, suffix=".ics")
vobject_items[href] = new_collection
self._upload_all_nonatomic(vobject_items)
elif props.get("tag") == "VCARD":
elif props.get("tag") == "VADDRESSBOOK":
vobject_items = {}
for card in collection:
# href must comply to is_safe_filesystem_path_component