Browse Source

Explains exceptions, asks previewer about PDF preview

Adrien Panay 7 years ago
parent
commit
dff894f946
1 changed files with 18 additions and 13 deletions
  1. 18 13
      tracim/tracim/controllers/content.py

+ 18 - 13
tracim/tracim/controllers/content.py View File

10
 from depot.manager import DepotManager
10
 from depot.manager import DepotManager
11
 from preview_generator.exception import PreviewGeneratorException
11
 from preview_generator.exception import PreviewGeneratorException
12
 from preview_generator.manager import PreviewManager
12
 from preview_generator.manager import PreviewManager
13
-from preview_generator.preview.builder.office__libreoffice import OfficePreviewBuilderLibreoffice
14
-from preview_generator.preview.builder.pdf__pypdf2 import PdfPreviewBuilderPyPDF2
15
-from preview_generator.preview.builder.plain_text import PlainTextPreviewBuilder
16
 from sqlalchemy.orm.exc import NoResultFound
13
 from sqlalchemy.orm.exc import NoResultFound
17
 import tg
14
 import tg
18
 from tg import abort
15
 from tg import abort
221
             revision_id = file.revision_id
218
             revision_id = file.revision_id
222
 
219
 
223
         file_path = content_api.get_one_revision_filepath(revision_id)
220
         file_path = content_api.get_one_revision_filepath(revision_id)
221
+
224
         nb_page = 0
222
         nb_page = 0
225
         try:
223
         try:
226
             nb_page = preview_manager.get_page_nb(file_path=file_path)
224
             nb_page = preview_manager.get_page_nb(file_path=file_path)
227
-        except PreviewGeneratorException:
228
-            pass
225
+        except PreviewGeneratorException as e:
226
+            logger.debug(self, 'Exception: {}'.format(e.__str__))
227
+            msg_str = _('Sorry... No preview for {}: {}')  # type: str
228
+            msg = msg_str.format(file.file_name, str(e))  # type: str
229
+            tg.flash(msg, CST.STATUS_ERROR)
229
         preview_urls = []
230
         preview_urls = []
230
         for page in range(int(nb_page)):
231
         for page in range(int(nb_page)):
231
             url_str = '/previews/{}/pages/{}?revision_id={}'
232
             url_str = '/previews/{}/pages/{}?revision_id={}'
234
                                  revision_id)
235
                                  revision_id)
235
             preview_urls.append(url)
236
             preview_urls.append(url)
236
 
237
 
237
-        pdf_ready_mimetypes = []  # type: List[str]
238
-        pdf_ready_mimetypes = \
239
-            OfficePreviewBuilderLibreoffice.get_supported_mimetypes() + \
240
-            PdfPreviewBuilderPyPDF2.get_supported_mimetypes() + \
241
-            PlainTextPreviewBuilder.get_supported_mimetypes()
242
-        enable_pdf_buttons = \
243
-            file.file_mimetype in pdf_ready_mimetypes  # type: bool
244
-        pdf_available = str(enable_pdf_buttons).lower()  # type: str
238
+        pdf_available = 'false'  # type: str
239
+        try:
240
+            enable_pdf_buttons = \
241
+                preview_manager.has_pdf_preview(
242
+                    file_path=file_path,
243
+                )  # type: bool
244
+            pdf_available = str(enable_pdf_buttons).lower()
245
+        except PreviewGeneratorException as e:
246
+            logger.debug(self, 'Exception: {}'.format(e.__str__))
247
+            msg_str = _('Sorry... No PDF downloads for {}: {}')  # type: str
248
+            msg = msg_str.format(file.file_name, str(e))  # type: str
249
+            tg.flash(msg, CST.STATUS_ERROR)
245
 
250
 
246
         fake_api_breadcrumb = self.get_breadcrumb(file_id)
251
         fake_api_breadcrumb = self.get_breadcrumb(file_id)
247
         fake_api_content = DictLikeClass(breadcrumb=fake_api_breadcrumb,
252
         fake_api_content = DictLikeClass(breadcrumb=fake_api_breadcrumb,