|
Line
Link Here
|
| 0 |
-- a/etesync_dav/radicale/storage_etebase_collection.py |
0 |
++ b/etesync_dav/radicale/storage_etebase_collection.py |
|
Lines 1-3
Link Here
|
|
|
1 |
from email.utils import formatdate |
| 1 |
import re |
2 |
import re |
| 2 |
|
3 |
|
| 3 |
import vobject |
4 |
import vobject |
|
Lines 274-280
Link Here
|
| 274 |
item.contents["version"][0].value = "3.0" |
275 |
item.contents["version"][0].value = "3.0" |
| 275 |
except Exception as e: |
276 |
except Exception as e: |
| 276 |
raise RuntimeError("Failed to parse item %r in %r" % (href, self.path)) from e |
277 |
raise RuntimeError("Failed to parse item %r in %r" % (href, self.path)) from e |
| 277 |
last_modified = "" |
278 |
# radicale 3.8 asserts a non-empty Last-Modified in GET |
|
|
279 |
try: |
| 280 |
mtime = etesync_item.meta.get("mtime") |
| 281 |
except Exception: |
| 282 |
mtime = None |
| 283 |
last_modified = formatdate(mtime / 1000 if mtime else None, usegmt=True) |
| 278 |
|
284 |
|
| 279 |
return EteSyncItem( |
285 |
return EteSyncItem( |
| 280 |
collection=self, vobject_item=item, href=href, last_modified=last_modified, etesync_item=etesync_item |
286 |
collection=self, vobject_item=item, href=href, last_modified=last_modified, etesync_item=etesync_item |
|
Lines 334-340
Link Here
|
| 334 |
ret = {} |
340 |
ret = {} |
| 335 |
meta = self.collection.meta |
341 |
meta = self.collection.meta |
| 336 |
for key in meta.keys(): |
342 |
for key in meta.keys(): |
| 337 |
ret[key] = self.meta_mappings.map_get(meta, key)[1] |
343 |
# radicale 3.8 expects "NS:tag" property names here |
|
|
344 |
dav_key = self.meta_mappings._mapping_get(key)[0] |
| 345 |
if ":" not in dav_key: |
| 346 |
continue |
| 347 |
ret[dav_key] = self.meta_mappings.map_get(meta, dav_key)[1] |
| 338 |
return ret |
348 |
return ret |
| 339 |
else: |
349 |
else: |
| 340 |
meta = self.collection.meta |
350 |
meta = self.collection.meta |