Browse Source

add empty endpoints for previews

Guénaël Muller 6 years ago
parent
commit
ba9f6d56e5
1 changed files with 147 additions and 39 deletions
  1. 147 39
      tracim/views/contents_api/file_controller.py

+ 147 - 39
tracim/views/contents_api/file_controller.py View File

47
     #@hapic.input_files()
47
     #@hapic.input_files()
48
     @hapic.output_body(NoContentSchema(), default_http_code=HTTPStatus.NO_CONTENT)  # nopep8
48
     @hapic.output_body(NoContentSchema(), default_http_code=HTTPStatus.NO_CONTENT)  # nopep8
49
     def upload_file(self, context, request: TracimRequest, hapic_data=None):
49
     def upload_file(self, context, request: TracimRequest, hapic_data=None):
50
-        # TODO - G.M - 2018-07-05 - Do this endpoint
51
         app_config = request.registry.settings['CFG']
50
         app_config = request.registry.settings['CFG']
52
         api = ContentApi(
51
         api = ContentApi(
53
             current_user=request.current_user,
52
             current_user=request.current_user,
79
     @hapic.input_path(WorkspaceAndContentIdPathSchema())
78
     @hapic.input_path(WorkspaceAndContentIdPathSchema())
80
     @hapic.output_file([])
79
     @hapic.output_file([])
81
     def download_file(self, context, request: TracimRequest, hapic_data=None):
80
     def download_file(self, context, request: TracimRequest, hapic_data=None):
82
-        # TODO - G.M - 2018-07-05 - Do this endpoint
83
         app_config = request.registry.settings['CFG']
81
         app_config = request.registry.settings['CFG']
84
         api = ContentApi(
82
         api = ContentApi(
85
             current_user=request.current_user,
83
             current_user=request.current_user,
96
         response.app_iter = FileIter(file)
94
         response.app_iter = FileIter(file)
97
         return response
95
         return response
98
 
96
 
99
-
100
-    # Previews
101
     @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
97
     @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
102
-    @require_workspace_role(UserRoleInWorkspace.CONTRIBUTOR)
98
+    @require_workspace_role(UserRoleInWorkspace.READER)
103
     @require_content_types([file_type])
99
     @require_content_types([file_type])
104
     @hapic.input_path(WorkspaceAndContentIdPathSchema())
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
     # File infos
182
     # File infos
127
     @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
183
     @hapic.with_api_doc(tags=[FILE_ENDPOINTS_TAG])
244
         return
300
         return
245
 
301
 
246
     def bind(self, configurator: Configurator) -> None:
302
     def bind(self, configurator: Configurator) -> None:
303
+
304
+        # file info #
247
         # Get file info
305
         # Get file info
248
         configurator.add_route(
306
         configurator.add_route(
249
             'file_info',
307
             'file_info',
251
             request_method='GET'
309
             request_method='GET'
252
         )
310
         )
253
         configurator.add_view(self.get_file_infos, route_name='file_info')  # nopep8
311
         configurator.add_view(self.get_file_infos, route_name='file_info')  # nopep8
254
-
255
         # update file
312
         # update file
256
         configurator.add_route(
313
         configurator.add_route(
257
             'update_file_info',
314
             'update_file_info',
260
         )  # nopep8
317
         )  # nopep8
261
         configurator.add_view(self.update_file_info, route_name='update_file_info')  # nopep8
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
         configurator.add_route(
322
         configurator.add_route(
265
             'upload_file',
323
             'upload_file',
266
-            '/workspaces/{workspace_id}/files/{content_id}/file_data',  # nopep8
324
+            '/workspaces/{workspace_id}/files/{content_id}/raw',  # nopep8
267
             request_method='PUT'
325
             request_method='PUT'
268
         )
326
         )
269
         configurator.add_view(self.upload_file, route_name='upload_file')  # nopep8
327
         configurator.add_view(self.upload_file, route_name='upload_file')  # nopep8
270
-
271
-        # download file data
328
+        # download raw file
272
         configurator.add_route(
329
         configurator.add_route(
273
             'download_file',
330
             'download_file',
274
-            '/workspaces/{workspace_id}/files/{content_id}/file_data',  # nopep8
331
+            '/workspaces/{workspace_id}/files/{content_id}/raw',  # nopep8
275
             request_method='GET'
332
             request_method='GET'
276
         )
333
         )
277
         configurator.add_view(self.download_file, route_name='download_file')  # nopep8
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
         # get file revisions
394
         # get file revisions
279
         configurator.add_route(
395
         configurator.add_route(
280
             'file_revisions',
396
             'file_revisions',
290
             request_method='PUT'
406
             request_method='PUT'
291
         )
407
         )
292
         configurator.add_view(self.set_file_status, route_name='set_file_status')  # nopep8
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