Merge branch 'Unrud-remupdate'

This commit is contained in:
Guillaume Ayoub 2016-08-26 22:50:45 +02:00
commit a25374000b
2 changed files with 2 additions and 28 deletions

View File

@ -612,10 +612,7 @@ class Application:
if tag: if tag:
parent_item.set_meta({"tag": tag}) parent_item.set_meta({"tag": tag})
href = posixpath.basename(path.strip("/")) href = posixpath.basename(path.strip("/"))
if item: new_item = parent_item.upload(href, items[0])
new_item = parent_item.update(href, items[0])
else:
new_item = parent_item.upload(href, items[0])
headers = {"ETag": new_item.etag} headers = {"ETag": new_item.etag}
return client.CREATED, headers, None return client.CREATED, headers, None

View File

@ -320,19 +320,9 @@ class BaseCollection:
return self.get(href) is not None return self.get(href) is not None
def upload(self, href, vobject_item): def upload(self, href, vobject_item):
"""Upload a new item.""" """Upload a new or replace an existing item."""
raise NotImplementedError raise NotImplementedError
def update(self, href, vobject_item):
"""Update an item.
Functionally similar to ``delete`` plus ``upload``, but might bring
performance benefits on some storages when used cleverly.
"""
self.delete(href)
self.upload(href, vobject_item)
def delete(self, href=None): def delete(self, href=None):
"""Delete an item. """Delete an item.
@ -654,19 +644,6 @@ class Collection(BaseCollection):
if not is_safe_filesystem_path_component(href): if not is_safe_filesystem_path_component(href):
raise UnsafePathError(href) raise UnsafePathError(href)
path = path_to_filesystem(self._filesystem_path, href) path = path_to_filesystem(self._filesystem_path, href)
if os.path.exists(path):
raise ComponentExistsError(href)
item = Item(self, vobject_item, href)
with self._atomic_write(path, newline="") as fd:
fd.write(item.serialize())
return item
def update(self, href, vobject_item):
if not is_safe_filesystem_path_component(href):
raise UnsafePathError(href)
path = path_to_filesystem(self._filesystem_path, href)
if not os.path.isfile(path):
raise ComponentNotFoundError(href)
item = Item(self, vobject_item, href) item = Item(self, vobject_item, href)
with self._atomic_write(path, newline="") as fd: with self._atomic_write(path, newline="") as fd:
fd.write(item.serialize()) fd.write(item.serialize())