|
@@ -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
|