Fix uploading of whole address books
This commit is contained in:
parent
69086c6d70
commit
c135dc026d
@ -824,17 +824,21 @@ class Application:
|
|||||||
content_type = environ.get("CONTENT_TYPE", "").split(";")[0]
|
content_type = environ.get("CONTENT_TYPE", "").split(";")[0]
|
||||||
tags = {value: key for key, value in xmlutils.MIMETYPES.items()}
|
tags = {value: key for key, value in xmlutils.MIMETYPES.items()}
|
||||||
tag = tags.get(content_type)
|
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:
|
if write_whole_collection:
|
||||||
try:
|
try:
|
||||||
new_item = self.Collection.create_collection(
|
new_item = self.Collection.create_collection(
|
||||||
path, items, {"tag": tag})
|
path, items, {"tag": tag} if tag else None)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
self.logger.warning(
|
self.logger.warning(
|
||||||
"Bad PUT request on %r: %s", path, e, exc_info=True)
|
"Bad PUT request on %r: %s", path, e, exc_info=True)
|
||||||
return BAD_REQUEST
|
return BAD_REQUEST
|
||||||
else:
|
else:
|
||||||
if tag:
|
if tag and not parent_item.get_meta("tag"):
|
||||||
parent_item.set_meta({"tag": tag})
|
parent_item.set_meta({"tag": tag})
|
||||||
href = posixpath.basename(path.strip("/"))
|
href = posixpath.basename(path.strip("/"))
|
||||||
try:
|
try:
|
||||||
|
@ -708,10 +708,6 @@ class Collection(BaseCollection):
|
|||||||
sane_path = sanitize_path(href).strip("/")
|
sane_path = sanitize_path(href).strip("/")
|
||||||
filesystem_path = path_to_filesystem(folder, sane_path)
|
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:
|
if not props:
|
||||||
cls._makedirs_synced(filesystem_path)
|
cls._makedirs_synced(filesystem_path)
|
||||||
return cls(sane_path)
|
return cls(sane_path)
|
||||||
@ -747,7 +743,7 @@ class Collection(BaseCollection):
|
|||||||
vobject_items.get, suffix=".ics")
|
vobject_items.get, suffix=".ics")
|
||||||
vobject_items[href] = new_collection
|
vobject_items[href] = new_collection
|
||||||
self._upload_all_nonatomic(vobject_items)
|
self._upload_all_nonatomic(vobject_items)
|
||||||
elif props.get("tag") == "VCARD":
|
elif props.get("tag") == "VADDRESSBOOK":
|
||||||
vobject_items = {}
|
vobject_items = {}
|
||||||
for card in collection:
|
for card in collection:
|
||||||
# href must comply to is_safe_filesystem_path_component
|
# href must comply to is_safe_filesystem_path_component
|
||||||
|
Loading…
x
Reference in New Issue
Block a user