Explicitely create collections on GET requests
This commit is contained in:
parent
128a20714b
commit
22e4e3764c
@ -290,7 +290,13 @@ class Application(object):
|
|||||||
return status, {}, answer
|
return status, {}, answer
|
||||||
|
|
||||||
def get(self, environ, collections, content, user):
|
def get(self, environ, collections, content, user):
|
||||||
"""Manage GET request."""
|
"""Manage GET request.
|
||||||
|
|
||||||
|
In Radicale, GET requests create collections when the URL is not
|
||||||
|
available. This is useful for clients with no MKCOL or MKCALENDAR
|
||||||
|
support.
|
||||||
|
|
||||||
|
"""
|
||||||
# Display a "Radicale works!" message if the root URL is requested
|
# Display a "Radicale works!" message if the root URL is requested
|
||||||
if environ["PATH_INFO"] == "/":
|
if environ["PATH_INFO"] == "/":
|
||||||
headers = {"Content-type": "text/html"}
|
headers = {"Content-type": "text/html"}
|
||||||
@ -311,6 +317,10 @@ class Application(object):
|
|||||||
else:
|
else:
|
||||||
return client.GONE, {}, None
|
return client.GONE, {}, None
|
||||||
else:
|
else:
|
||||||
|
# Create the collection if it does not exist
|
||||||
|
if not collection.exists:
|
||||||
|
collection.write()
|
||||||
|
|
||||||
# Get whole collection
|
# Get whole collection
|
||||||
answer_text = collection.text
|
answer_text = collection.text
|
||||||
etag = collection.etag
|
etag = collection.etag
|
||||||
|
@ -284,6 +284,11 @@ class Collection(object):
|
|||||||
"""Get the collection properties."""
|
"""Get the collection properties."""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@property
|
||||||
|
def exists(self):
|
||||||
|
"""``True`` if the collection exists on the storage, else ``False``."""
|
||||||
|
return self.is_node(self.path) or self.is_leaf(self.path)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse(text, item_types, name=None):
|
def _parse(text, item_types, name=None):
|
||||||
"""Find items with type in ``item_types`` in ``text``.
|
"""Find items with type in ``item_types`` in ``text``.
|
||||||
|
@ -96,10 +96,6 @@ class Collection(ical.Collection):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def last_modified(self):
|
def last_modified(self):
|
||||||
# Create collection if needed
|
|
||||||
if not os.path.exists(self._path):
|
|
||||||
self.write()
|
|
||||||
|
|
||||||
modification_time = time.gmtime(os.path.getmtime(self._path))
|
modification_time = time.gmtime(os.path.getmtime(self._path))
|
||||||
return time.strftime("%a, %d %b %Y %H:%M:%S +0000", modification_time)
|
return time.strftime("%a, %d %b %Y %H:%M:%S +0000", modification_time)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user