From 1f58406d9e0e4a7e2bbb4afa02d3c96b82bd0de1 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 7 Aug 2020 17:34:13 +0200 Subject: add generic file upload --- .../cli/app/controllers/upload_controller.py | 4 +- .../app/views/media/components/media.form.js | 11 +++- .../app/views/media/components/media.formFile.js | 67 ++++++++++++++++++++++ .../app/views/media/containers/media.index.js | 19 ++++++ 4 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 animism-align/frontend/app/views/media/components/media.formFile.js (limited to 'animism-align') diff --git a/animism-align/cli/app/controllers/upload_controller.py b/animism-align/cli/app/controllers/upload_controller.py index e910f28..3b6e661 100644 --- a/animism-align/cli/app/controllers/upload_controller.py +++ b/animism-align/cli/app/controllers/upload_controller.py @@ -73,8 +73,8 @@ class UploadView(FlaskView): # TODO: here check sha256 # upload = Upload.query.get(id) - if ext[1:] not in VALID_IMAGE_EXTS: - return jsonify({ 'status': 'error', 'error': 'Not a valid image' }) + # if ext[1:] not in VALID_IMAGE_EXTS: + # return jsonify({ 'status': 'error', 'error': 'Not a valid image' }) # convert string of image data to uint8 file.seek(0) diff --git a/animism-align/frontend/app/views/media/components/media.form.js b/animism-align/frontend/app/views/media/components/media.form.js index a646e8e..76d6f3e 100644 --- a/animism-align/frontend/app/views/media/components/media.form.js +++ b/animism-align/frontend/app/views/media/components/media.form.js @@ -7,6 +7,7 @@ import { TextInput, LabelDescription, Select, TextArea, Checkbox, SubmitButton, import MediaImageForm from './media.formImage' import MediaVideoForm from './media.formVideo' +import MediaFileForm from './media.formFile' const newMedia = () => ({ type: 'image', @@ -25,7 +26,7 @@ const newMedia = () => ({ }) const MEDIA_UPLOAD_TYPES = [ - 'image', 'video' + 'image', 'video', 'file', ].map(name => ({ name, label: capitalize(name) })) export default class MediaForm extends Component { @@ -172,6 +173,14 @@ export default class MediaForm extends Component { /> } + {data.type === 'file' && + + } + { + this.handleSettingsChange("file", data.res) + }) + } + + render() { + const { data } = this.props + console.log(data.settings) + return ( +
+ + {data.settings.file && + + {data.settings.file.url} + + } +
+ ) + } +} diff --git a/animism-align/frontend/app/views/media/containers/media.index.js b/animism-align/frontend/app/views/media/containers/media.index.js index ef6e3be..7935563 100644 --- a/animism-align/frontend/app/views/media/containers/media.index.js +++ b/animism-align/frontend/app/views/media/containers/media.index.js @@ -76,6 +76,8 @@ class MediaIndex extends Component { {order.filter(id => lookup[id].type === 'image').map(id => )}

Video

{order.filter(id => lookup[id].type === 'video').map(id => )} +

Files

+ {order.filter(id => lookup[id].type === 'file').map(id => )} {order.length >= 50 && } @@ -104,6 +106,23 @@ const MediaItem = ({ data }) => { ) } +const FileItem = ({ data }) => { + // console.log(data) + return ( +
+
+ +
+ {data.title}
+ {data.settings.file.url}
+
+ +
+
+ ) +} + + const mapStateToProps = state => ({ media: state.media, }) -- cgit v1.2.3-70-g09d2