Просмотр исходного кода

add empty endpoints for previews

Guénaël Muller 6 лет назад
Родитель
Сommit
ba9f6d56e5
1 измененных файлов: 147 добавлений и 39 удалений
  1. 147 39
      tracim/views/contents_api/file_controller.py

+ 147 - 39
tracim/views/contents_api/file_controller.py Просмотреть файл

@@ -47,7 +47,6 @@ class FileController(Controller):
47 47
     #@hapic.input_files()
48 48
     @hapic.output_body(NoContentSchema(), default_http_code=HTTPStatus.NO_CONTENT)  # nopep8
49 49
     def upload_file(self, context, request: TracimRequest, hapic_data=None):
50
-        # TODO - G.M - 2018-07-05 - Do this endpoint
51 50
         app_config = request.registry.settings['CFG']
52 51
         api = ContentApi(
53 52
             current_user=request.current_user,
@@ -79,7 +78,6 @@ class FileController(Controller):
79 78
     @hapic.input_path(WorkspaceAndContentIdPathSchema())
80 79
     @hapic.output_file([])
81 80
     def download_file(self, context, request: TracimRequest, hapic_data=None):
82
-        # TODO - G.M - 2018-07-05 - Do this endpoint
83 81
         app_config = request.registry.settings['CFG']
84 82
         api = ContentApi(
85 83
             current_user=request.current_user,
@@ -96,32 +94,90 @@ class FileController(Controller):
96 94
         response.app_iter = FileIter(file)
97 95
         return response
98 96
 
99
-
100
-    # Previews
101 97
     @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
102
-    @require_workspace_role(UserRoleInWorkspace.CONTRIBUTOR)
98
+    @require_workspace_role(UserRoleInWorkspace.READER)
103 99
     @require_content_types([file_type])
104 100
     @hapic.input_path(WorkspaceAndContentIdPathSchema())
105
-    #@hapic.output_file([])
106
-    def get_file_preview_info(self, context, request: TracimRequest, hapic_data=None):  # nopep8
107
-        # TODO - G.M - 2018-07-05 - Do this endpoint
108
-        app_config = request.registry.settings['CFG']
109
-        preview_manager = PreviewManager(app_config.PREVIEW_CACHE_DIR, create_folder=True)  # nopep8
110
-        api = ContentApi(
111
-            current_user=request.current_user,
112
-            session=request.dbsession,
113
-            config=app_config,
114
-        )
115
-        content = api.get_one(
116
-            hapic_data.path.content_id,
117
-            content_type=ContentType.Any
118
-        )
119
-        file_path = api.get_one_revision_filepath(content.revision_id)
120
-        return {
121
-            'nb_pages': preview_manager.get_page_nb(file_path),
122
-            'pdf_preview': preview_manager.has_pdf_preview(file_path),
123
-            'mimetype':  preview_manager.get_mimetype(file_path),
124
-        }
101
+    @hapic.output_file([])
102
+    def download_revisions_file(self, context, request: TracimRequest, hapic_data=None):
103
+        raise NotImplemented()
104
+
105
+    # preview
106
+    # pdf
107
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
108
+    @require_workspace_role(UserRoleInWorkspace.READER)
109
+    @require_content_types([file_type])
110
+    @hapic.output_file([])
111
+    def preview_pdf(self, context, request: TracimRequest, hapic_data=None):
112
+        raise NotImplemented()
113
+
114
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
115
+    @require_workspace_role(UserRoleInWorkspace.READER)
116
+    @require_content_types([file_type])
117
+    @hapic.output_file([])
118
+    def preview_pdf_full(self, context, request: TracimRequest, hapic_data=None):
119
+        raise NotImplemented()
120
+
121
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
122
+    @require_workspace_role(UserRoleInWorkspace.READER)
123
+    @require_content_types([file_type])
124
+    @hapic.output_file([])
125
+    def preview_pdf_revision(self, context, request: TracimRequest, hapic_data=None):
126
+        raise NotImplemented()
127
+
128
+    # jpg
129
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
130
+    @require_workspace_role(UserRoleInWorkspace.READER)
131
+    @require_content_types([file_type])
132
+    @hapic.output_file([])
133
+    def preview_jpg(self, context, request: TracimRequest, hapic_data=None):
134
+        raise NotImplemented()
135
+
136
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
137
+    @require_workspace_role(UserRoleInWorkspace.READER)
138
+    @require_content_types([file_type])
139
+    @hapic.output_file([])
140
+    def sized_preview_jpg(self, context, request: TracimRequest, hapic_data=None):
141
+        raise NotImplemented()
142
+
143
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
144
+    @require_workspace_role(UserRoleInWorkspace.READER)
145
+    @require_content_types([file_type])
146
+    @hapic.output_file([])
147
+    def sized_preview_jpg_revision(self, context, request: TracimRequest, hapic_data=None):
148
+        raise NotImplemented()
149
+
150
+    @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
151
+    @require_workspace_role(UserRoleInWorkspace.READER)
152
+    @require_content_types([file_type])
153
+    @hapic.output_file([])
154
+    def allowed_dim_preview_jpg(self, context, request: TracimRequest, hapic_data=None):
155
+        raise NotImplemented()
156
+
157
+    # @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
158
+    # @require_workspace_role(UserRoleInWorkspace.CONTRIBUTOR)
159
+    # @require_content_types([file_type])
160
+    # @hapic.input_path(WorkspaceAndContentIdPathSchema())
161
+    # #@hapic.output_file([])
162
+    # def get_file_preview_info(self, context, request: TracimRequest, hapic_data=None):  # nopep8
163
+    #     # TODO - G.M - 2018-07-05 - Do this endpoint
164
+    #     app_config = request.registry.settings['CFG']
165
+    #     preview_manager = PreviewManager(app_config.PREVIEW_CACHE_DIR, create_folder=True)  # nopep8
166
+    #     api = ContentApi(
167
+    #         current_user=request.current_user,
168
+    #         session=request.dbsession,
169
+    #         config=app_config,
170
+    #     )
171
+    #     content = api.get_one(
172
+    #         hapic_data.path.content_id,
173
+    #         content_type=ContentType.Any
174
+    #     )
175
+    #     file_path = api.get_one_revision_filepath(content.revision_id)
176
+    #     return {
177
+    #         'nb_pages': preview_manager.get_page_nb(file_path),
178
+    #         'pdf_preview': preview_manager.has_pdf_preview(file_path),
179
+    #         'mimetype':  preview_manager.get_mimetype(file_path),
180
+    #     }
125 181
 
126 182
     # File infos
127 183
     @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
@@ -244,6 +300,8 @@ class FileController(Controller):
244 300
         return
245 301
 
246 302
     def bind(self, configurator: Configurator) -> None:
303
+
304
+        # file info #
247 305
         # Get file info
248 306
         configurator.add_route(
249 307
             'file_info',
@@ -251,7 +309,6 @@ class FileController(Controller):
251 309
             request_method='GET'
252 310
         )
253 311
         configurator.add_view(self.get_file_infos, route_name='file_info')  # nopep8
254
-
255 312
         # update file
256 313
         configurator.add_route(
257 314
             'update_file_info',
@@ -260,21 +317,80 @@ class FileController(Controller):
260 317
         )  # nopep8
261 318
         configurator.add_view(self.update_file_info, route_name='update_file_info')  # nopep8
262 319
 
263
-        # upload new file data
320
+        # raw file #
321
+        # upload raw file
264 322
         configurator.add_route(
265 323
             'upload_file',
266
-            '/workspaces/{workspace_id}/files/{content_id}/file_data',  # nopep8
324
+            '/workspaces/{workspace_id}/files/{content_id}/raw',  # nopep8
267 325
             request_method='PUT'
268 326
         )
269 327
         configurator.add_view(self.upload_file, route_name='upload_file')  # nopep8
270
-
271
-        # download file data
328
+        # download raw file
272 329
         configurator.add_route(
273 330
             'download_file',
274
-            '/workspaces/{workspace_id}/files/{content_id}/file_data',  # nopep8
331
+            '/workspaces/{workspace_id}/files/{content_id}/raw',  # nopep8
275 332
             request_method='GET'
276 333
         )
277 334
         configurator.add_view(self.download_file, route_name='download_file')  # nopep8
335
+        # download raw file of revision
336
+        configurator.add_route(
337
+            'download_revision',
338
+            '/workspaces/{workspace_id}/files/{content_id}/revisions/{content_revision}/raw',  # nopep8
339
+            request_method='GET'
340
+        )
341
+        configurator.add_view(self.download_revisions_file, route_name='download_revision')  # nopep8
342
+
343
+        # previews #
344
+        # get preview pdf full
345
+        configurator.add_route(
346
+            'preview_pdf_full',
347
+            '/workspaces/{workspace_id}/files/{content_id}/preview/pdf/full',  # nopep8
348
+            request_method='GET'
349
+        )
350
+        configurator.add_view(self.preview_pdf_full, route_name='preview_pdf_full')  # nopep8
351
+        # get preview pdf
352
+        configurator.add_route(
353
+            'preview_pdf',
354
+            '/workspaces/{workspace_id}/files/{content_id}/preview/pdf',  # nopep8
355
+            request_method='GET'
356
+        )
357
+        configurator.add_view(self.preview_pdf, route_name='preview_pdf')  # nopep8
358
+        # get preview jpg allowed dims
359
+        configurator.add_route(
360
+            'allowed_dim_preview_jpg',
361
+            '/workspaces/{workspace_id}/files/{content_id}/preview/jpg/allowed_dims',  # nopep8
362
+            request_method='GET'
363
+        )
364
+        configurator.add_view(self.allowed_dim_preview_jpg, route_name='allowed_dim_preview_jpg')  # nopep8
365
+        # get preview jpg
366
+        configurator.add_route(
367
+            'preview_jpg',
368
+            '/workspaces/{workspace_id}/files/{content_id}/preview/jpg',  # nopep8
369
+            request_method='GET'
370
+        )
371
+        configurator.add_view(self.preview_jpg, route_name='preview_jpg')  # nopep8
372
+        # get preview jpg with size
373
+        configurator.add_route(
374
+            'sized_preview_jpg',
375
+            '/workspaces/{workspace_id}/files/{content_id}/preview/jpg/{width}x{height}',  # nopep8
376
+            request_method='GET'
377
+        )
378
+        configurator.add_view(self.sized_preview_jpg, route_name='sized_preview_jpg')  # nopep8
379
+        # get jpg preview for revision
380
+        configurator.add_route(
381
+            'sized_preview_jpg_revision',
382
+            '/workspaces/{workspace_id}/files/{content_id}/revisions/{revision_id}/preview/jpg/{width}x{height}',  # nopep8
383
+            request_method='GET'
384
+        )
385
+        configurator.add_view(self.sized_preview_jpg_revision, route_name='sized_preview_jpg_revision')  # nopep8
386
+        # get jpg preview for revision
387
+        configurator.add_route(
388
+            'preview_pdf_revision',
389
+            '/workspaces/{workspace_id}/files/{content_id}/revisions/{revision_id}/preview/pdf',  # nopep8
390
+            request_method='GET'
391
+        )
392
+        configurator.add_view(self.preview_pdf_revision, route_name='preview_pdf_revision')  # nopep8
393
+        # others #
278 394
         # get file revisions
279 395
         configurator.add_route(
280 396
             'file_revisions',
@@ -290,11 +406,3 @@ class FileController(Controller):
290 406
             request_method='PUT'
291 407
         )
292 408
         configurator.add_view(self.set_file_status, route_name='set_file_status')  # nopep8
293
-
294
-        # get preview info
295
-        configurator.add_route(
296
-            'preview_info',
297
-            '/workspaces/{workspace_id}/files/{content_id}/preview/info',  # nopep8
298
-            request_method='GET'
299
-        )
300
-        configurator.add_view(self.get_file_preview_info, route_name='preview_info')  # nopep8