|
@@ -1,4 +1,6 @@
|
1
|
1
|
# coding: utf8
|
|
2
|
+import logging
|
|
3
|
+
|
2
|
4
|
import os
|
3
|
5
|
|
4
|
6
|
import transaction
|
|
@@ -27,6 +29,9 @@ from tracim.lib.webdav.utils import normpath
|
27
|
29
|
|
28
|
30
|
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
|
29
|
31
|
|
|
32
|
+logger = logging.getLogger()
|
|
33
|
+
|
|
34
|
+
|
30
|
35
|
class ManageActions(object):
|
31
|
36
|
"""
|
32
|
37
|
This object is used to encapsulate all Deletion/Archiving related method as to not duplicate too much code
|
|
@@ -474,14 +479,22 @@ class Folder(Workspace):
|
474
|
479
|
for content in visible_children:
|
475
|
480
|
content_path = '%s/%s' % (self.path, transform_to_display(content.get_label_as_file()))
|
476
|
481
|
|
477
|
|
- if content.type == ContentType.Folder:
|
478
|
|
- members.append(Folder(content_path, self.environ, self.workspace, content))
|
479
|
|
- elif content.type == ContentType.File:
|
480
|
|
- self._file_count += 1
|
481
|
|
- members.append(File(content_path, self.environ, content))
|
482
|
|
- else:
|
483
|
|
- self._file_count += 1
|
484
|
|
- members.append(OtherFile(content_path, self.environ, content))
|
|
482
|
+ try:
|
|
483
|
+ if content.type == ContentType.Folder:
|
|
484
|
+ members.append(Folder(content_path, self.environ, self.workspace, content))
|
|
485
|
+ elif content.type == ContentType.File:
|
|
486
|
+ self._file_count += 1
|
|
487
|
+ members.append(File(content_path, self.environ, content))
|
|
488
|
+ else:
|
|
489
|
+ self._file_count += 1
|
|
490
|
+ members.append(OtherFile(content_path, self.environ, content))
|
|
491
|
+ except Exception as exc:
|
|
492
|
+ logger.exception(
|
|
493
|
+ 'Unable to construct member {}'.format(
|
|
494
|
+ content_path,
|
|
495
|
+ ),
|
|
496
|
+ exc_info=True,
|
|
497
|
+ )
|
485
|
498
|
|
486
|
499
|
if self._file_count > 0 and self.provider.show_history():
|
487
|
500
|
members.append(
|