Explorar o código

Merge branch 'trycatch-broken-objects' of https://github.com/pbiering/Radicale into pbiering-trycatch-broken-objects

Guillaume Ayoub %!s(int64=9) %!d(string=hai) anos
pai
achega
5d67257555
Modificáronse 3 ficheiros con 10 adicións e 0 borrados
  1. 2 0
      radicale/__init__.py
  2. 6 0
      radicale/storage.py
  3. 2 0
      radicale/xmlutils.py

+ 2 - 0
radicale/__init__.py

@@ -244,6 +244,8 @@ class Application:
         read_allowed_items = []
         write_allowed_items = []
         for item in items:
+            if not item:
+                continue
             if isinstance(item, self.Collection):
                 path = item.path
             else:

+ 6 - 0
radicale/storage.py

@@ -34,6 +34,7 @@ import stat
 import subprocess
 import threading
 import time
+import datetime
 from contextlib import contextmanager
 from hashlib import md5
 from importlib import import_module
@@ -699,8 +700,13 @@ class Collection(BaseCollection):
 
     def serialize(self):
         items = []
+        time_begin = datetime.datetime.now()
         for href in self.list():
             items.append(self.get(href).item)
+        time_end = datetime.datetime.now()
+        self.logger.info(
+            "Collection read %d items in %s sec from %s", len(items),
+            (time_end - time_begin).total_seconds(), self._filesystem_path)
         if self.get_meta("tag") == "VCALENDAR":
             collection = vobject.iCalendar()
             for item in items:

+ 2 - 0
radicale/xmlutils.py

@@ -872,6 +872,8 @@ def report(base_prefix, path, xml_request, collection):
             items = collection.pre_filtered_list(filters)
 
         for item in items:
+            if not item:
+                continue
             if filters:
                 match = (
                     _comp_match if collection.get_meta("tag") == "VCALENDAR"