[
https://issues.apache.org/jira/browse/AIRAVATA-3281?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marcus Christie updated AIRAVATA-3281:
--------------------------------------
Description:
h2. Proposal
- store {{mime-type}} in {{DataProduct.productMetadata}}
- For input files, {{mime-type}} value is whatever is present in the upload
request.
- For output files, {{mime-type}} value comes from
{{OutputDataObjectType.metaData['file-metadata']}}. When output data staging
register the DataProduct, it will need to read the
OutputDataObjectType.metaData and copy the file-metadata to the DataProduct's
productMetadata
-- Application output can be configured with the metadata like the following:
{code}
{
"file-metadata": {
"mime-type": "text/plain"
}
}
{code}
- in Django portal, when downloading data product, if metadata has
{{mime-type}} then use that as the content type. Otherwise, set the content
type to {{application/octet-stream}} and add a {{Content-Disposition}} header
with value {{attachment; filename=...}} (which is what is currently happening
all the time).
h3. Other details
- Django portal should retain DataProduct metadata when moving or copying input
files
- The DataProduct download URL will accept a {{download}} query param to force
download even when there is a mime-type in metadata
- image outputs can be displayed inline
- if there is no mime-type for a file, try to guess based on file extension
(using [mimetypes|https://docs.python.org/3/library/mimetypes.html] Python
module)
h3. TODO
- [x] Capture mime-type when files are uploaded
-- input files
-- data store files, XHR upload
-- data store files, tus upload
- [x] copy metadata when input files are moved/copied in storage
- [x] images can be displayed inline
- [x] In backend, copy mime-type to {{DataProduct.productMetadata}} when
registering output file
- [x] fallback on guessing mime-type based on file extension
- [x] only allow viewing/previewing files with known mime-type
- [x] when browser says file is application/octet-stream, check if it is text
by trying to read it as unicode (https://stackoverflow.com/a/30273352) and if
so set to text/plain
- [ ] add an button to download the file?
h3. Testing
- (/) mime-type is copied for input files when experiment is cloned
- (/) mime-type is added to DataProduct for output files by the
OutputDataStagingTask when it is provided in OutputDataObjectType.metaData
- image outputs are displayed inline in Experiment Summary (requires an
application that generates image outputs)
was:
h2. Proposal
- store {{mime-type}} in {{DataProduct.productMetadata}}
- For input files, {{mime-type}} value is whatever is present in the upload
request.
- For output files, {{mime-type}} value comes from
{{OutputDataObjectType.metaData['file-metadata']}}. When output data staging
register the DataProduct, it will need to read the
OutputDataObjectType.metaData and copy the file-metadata to the DataProduct's
productMetadata
- in Django portal, when downloading data product, if metadata has
{{mime-type}} then use that as the content type. Otherwise, set the content
type to {{application/octet-stream}} and add a {{Content-Disposition}} header
with value {{attachment; filename=...}} (which is what is currently happening
all the time).
h3. Other details
- Django portal should retain DataProduct metadata when moving or copying input
files
- The DataProduct download URL will accept a {{download}} query param to force
download even when there is a mime-type in metadata
- image outputs can be displayed inline
- if there is no mime-type for a file, try to guess based on file extension
(using [mimetypes|https://docs.python.org/3/library/mimetypes.html] Python
module)
h3. TODO
- [x] Capture mime-type when files are uploaded
-- input files
-- data store files, XHR upload
-- data store files, tus upload
- [x] copy metadata when input files are moved/copied in storage
- [x] images can be displayed inline
- [x] In backend, copy mime-type to {{DataProduct.productMetadata}} when
registering output file
- [x] fallback on guessing mime-type based on file extension
- [x] only allow viewing/previewing files with known mime-type
- [x] when browser says file is application/octet-stream, check if it is text
by trying to read it as unicode (https://stackoverflow.com/a/30273352) and if
so set to text/plain
- [ ] add an button to download the file?
h3. Testing
- (/) mime-type is copied for input files when experiment is cloned
- (/) mime-type is added to DataProduct for output files by the
OutputDataStagingTask when it is provided in OutputDataObjectType.metaData
- image outputs are displayed inline in Experiment Summary (requires an
application that generates image outputs)
> Capture and use mime-type for input and output files
> ----------------------------------------------------
>
> Key: AIRAVATA-3281
> URL: https://issues.apache.org/jira/browse/AIRAVATA-3281
> Project: Airavata
> Issue Type: Bug
> Components: Django Portal
> Reporter: Marcus Christie
> Assignee: Marcus Christie
> Priority: Major
>
> h2. Proposal
> - store {{mime-type}} in {{DataProduct.productMetadata}}
> - For input files, {{mime-type}} value is whatever is present in the upload
> request.
> - For output files, {{mime-type}} value comes from
> {{OutputDataObjectType.metaData['file-metadata']}}. When output data staging
> register the DataProduct, it will need to read the
> OutputDataObjectType.metaData and copy the file-metadata to the DataProduct's
> productMetadata
> -- Application output can be configured with the metadata like the following:
> {code}
> {
> "file-metadata": {
> "mime-type": "text/plain"
> }
> }
> {code}
> - in Django portal, when downloading data product, if metadata has
> {{mime-type}} then use that as the content type. Otherwise, set the content
> type to {{application/octet-stream}} and add a {{Content-Disposition}} header
> with value {{attachment; filename=...}} (which is what is currently happening
> all the time).
> h3. Other details
> - Django portal should retain DataProduct metadata when moving or copying
> input files
> - The DataProduct download URL will accept a {{download}} query param to
> force download even when there is a mime-type in metadata
> - image outputs can be displayed inline
> - if there is no mime-type for a file, try to guess based on file extension
> (using [mimetypes|https://docs.python.org/3/library/mimetypes.html] Python
> module)
> h3. TODO
> - [x] Capture mime-type when files are uploaded
> -- input files
> -- data store files, XHR upload
> -- data store files, tus upload
> - [x] copy metadata when input files are moved/copied in storage
> - [x] images can be displayed inline
> - [x] In backend, copy mime-type to {{DataProduct.productMetadata}} when
> registering output file
> - [x] fallback on guessing mime-type based on file extension
> - [x] only allow viewing/previewing files with known mime-type
> - [x] when browser says file is application/octet-stream, check if it is text
> by trying to read it as unicode (https://stackoverflow.com/a/30273352) and if
> so set to text/plain
> - [ ] add an button to download the file?
> h3. Testing
> - (/) mime-type is copied for input files when experiment is cloned
> - (/) mime-type is added to DataProduct for output files by the
> OutputDataStagingTask when it is provided in OutputDataObjectType.metaData
> - image outputs are displayed inline in Experiment Summary (requires an
> application that generates image outputs)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)