Commit Graph

1918 Commits

Author SHA1 Message Date
6f5e30670f Don't change permissions of lock file
The file is part of the storage folder. Setting permissions of the storage folder is not handled by Radicale.
2017-06-15 23:44:39 +02:00
7c50256749 Update description of rights file 2017-06-15 23:44:39 +02:00
f1f94dffbd Output raw collection path
The same as everywhere else.
2017-06-15 23:44:35 +02:00
04bc6c5996 Remove TODO.rst 2017-06-15 23:17:14 +02:00
9ffafc47e2 Remove README 2017-06-15 23:17:06 +02:00
4c379eff02 Simplify logging, point to documentation instead 2017-06-10 21:24:40 +02:00
714483bf0e Update Dockerfile 2017-06-10 16:15:45 +02:00
6b8de92c57 Small improvements for Collection 2017-06-09 02:59:29 +02:00
e09d33f3ee Document properties of BaseCollection 2017-06-09 02:59:29 +02:00
79e7232ecb Rename self._meta to self._meta_cache and self._etag to self._etag_cache 2017-06-09 02:59:29 +02:00
12871fdcb3 Workaround for bugs in VObject during filtering 2017-06-09 02:59:29 +02:00
db572e91f8 Test time range filtering with RDATE 2017-06-09 02:59:29 +02:00
c54196bb72 Test time range filtering with overwritten recurrence 2017-06-09 02:59:29 +02:00
f9d299fbb9 Match time against all components 2017-06-09 02:59:29 +02:00
f5835cfe46 raise VObjectBugException for bugs with recurrence rules 2017-06-09 02:59:29 +02:00
02371685bd Respond with bad request when MKCOL, MCALENDAR or MOVE fails 2017-06-09 02:59:29 +02:00
48d2a33053 Rename upload_all_atomic to _upload_all_atomic 2017-06-09 02:59:29 +02:00
dbd06a1952 Default implementation for BaseCollection.serialize 2017-06-09 02:59:29 +02:00
47d311b101 Improve doc strings 2017-06-09 02:59:29 +02:00
12f9ac44c2 Remove __init__ from BaseCollection
It's not used anywhere
2017-06-09 02:59:29 +02:00
a4fc123286 Use last_modified attribute of item 2017-06-09 02:59:29 +02:00
578d0e1376 Merge pull request #631 from Unrud/improveerrors
Detect errors in recurrence rules early
2017-06-07 22:15:13 +02:00
30a4105065 Add TODO comments for time ranges 2017-06-07 21:54:49 +02:00
bab35e9692 Detect errors in recurrence rules early 2017-06-07 21:54:38 +02:00
16c4e93a6e Merge pull request #629 from Unrud/fixinfinity
Fix detection of infinite recurrence
2017-06-07 17:27:11 +02:00
0e35ab1baf Fix detection of infinite recurrence
* The RRULE field might not exist.
* vobject also accepts lower case COUNT and UNTIL.
2017-06-07 15:31:05 +02:00
82fc6f7eb6 Merge pull request #627 from Unrud/improveerrors
Small improvements for error handling
2017-06-07 14:37:30 +02:00
3753364fc8 XML error message for invalid sync-token 2017-06-07 14:17:57 +02:00
13381fb829 Change logging level of invalid sync token to warning
Some clients stop to work, when told their sync-token are invalid.
2017-06-07 14:15:30 +02:00
1b54b23bb3 Add info about disabling locking to error message 2017-06-07 14:14:09 +02:00
217859bf5e Fix empty REPORT requests 2017-06-07 14:13:12 +02:00
b30c1d11e5 Merge pull request #624 from Unrud/improveerrors
Small improvements for error handling
2017-06-06 23:32:44 +02:00
2860c664d0 Check that vobject_item have a UID 2017-06-06 20:01:09 +02:00
fe97741f08 Better reporting of errors in PUT requests 2017-06-06 20:01:07 +02:00
e47747d4d4 return None instead of False if UID field is missing 2017-06-06 20:01:06 +02:00
bea855cb80 Improve file names used when uploading whole collection
* Use 64 bit random sequence (extremely low chance of collisions)
* Improve error message in case of collisions
* Add file extension to names
2017-06-06 20:01:04 +02:00
a6a3756e05 Check error code of PUT request
Detect errors early
2017-06-06 20:01:02 +02:00
5660f70753 Rename deleted item in test
The backend may derive the item name from the UID (e.g. "event1.ics" from the UID "event1").
2017-06-06 20:00:59 +02:00
f1350717ce Merge pull request #623 from Unrud/improveweb
Improvements for the web interface
2017-06-04 15:56:09 +02:00
ee214d6697 Remove user from URL
It's not supported by many clients.
2017-06-04 15:43:55 +02:00
37c9a1da18 Store user and password in session storage
Allow reloading of the page.
2017-06-04 15:43:27 +02:00
4afbefbc9f Disable update timer 2017-06-04 15:43:20 +02:00
fca70f482f Web interface: Wrapping of URLs, titles, ... 2017-06-04 15:42:33 +02:00
396b9ffecb Log error message from parser for items in storage 2017-06-02 16:36:02 +02:00
a1ebc52b39 Don't delete cache entry that gets overwritten
It's unnecessary.
2017-06-02 14:19:53 +02:00
07c792f14e Use %r n error messages for token names 2017-06-02 14:18:39 +02:00
9ceae0a751 Make Radicale fast (#569)
* Change get_multi to also return missing items

get_multi is not used anywhere and this makes it easier to use.

* Use get_multi for report requests

* Add get_all to BaseCollection

This can be used for optimization on multifilesystem.

* Use iterator for files

* Remove unnecessary checks

This never happens and would be an error.

* Don't raise exception when calling get with colliding name

This behavior is wrong, it should be handled as if the file doesn't exist.

* Use get_all and get_multi to skip unnecessary checks

Collision checks are slow on big collections.

* Use exception instead of existence checks

It's a bit faster.

* Use os.scandir instead of os.listdir

It's faster and doesn't load all files at once.

* Cache metadata when storage is read-only

Metadata is queried a lot during a request. It's quiet slow to load and parse the file every time.

* Cache the etag when the storage is read-only

The etag is calculated twice for GET requests on collections.

* Add helper method for cleaning caches

* Use item etags to calculate collection etag

It's very slow and unnecessary to parse all files with VObject and serialize them again.

* Cache serialized collections in file system

Serialization is very slow for big collections. This caches the result in a file.

* Add helper function for prefilters

The simplify_prefilters functions converts XML filters to a simple tag and time range, which can be easily matched against the tag and time range that are extracted from vobject_items by the function find_tag_and_time_range.

* Add ability to cache etag and serialization of item

Parsing items with vobject is very slow and not required for many requests.
Caching can be used to speed it up.

* Cache metadata and serialization from items in file system

Store the serialized text and the tag and time range from vobject_items in the cache.
The metadata is used for prefilters.

* Remove the cache for the serialization of collections

* Serialize calendars without vobject

Merge the calendar components manually. This is much faster and requires less memory. Caching of the result is not required anymore.

* Allow pre_filtered_list to indicate that filters match

The storage backend can indicate that it evaluated the filters completely.

* Skip filtering with vobject if prefiltering is sufficient

``simplify_prefilters`` indicates if the simplified condition is identical to ``filters``.
This is used in the multifilesystem backend to detect if prefiltering is sufficient.

* Make constants global

* Use generator expressions

* Only extract elements from inside of VCALENDAR

This is unnecessary at the moment, the text representation should never contain anything but VCALENDAR.

* Improve comments

* restore backward compatiblity

* Small improvements for fastbackend
2017-06-02 14:14:55 +02:00
78a62aee86 Merge pull request #565 from Unrud/synctoken
Support for sync-token and sync-collection
2017-06-02 13:01:54 +02:00
7687afc4c6 Merge pull request #622 from Unrud/clientcertificate
Add option for CA certificate for validating clients
2017-06-02 12:59:35 +02:00
5c50cae9f2 Merge pull request #621 from Unrud/small
Small improvements
2017-06-02 12:55:40 +02:00