From d8c24159926ef5a6b1ddc66b65a14bcd4d844572 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 07 2017 09:53:02 +0000 Subject: Add support for uploading multiple files to an issue at once Fixes https://pagure.io/pagure/issue/2315 Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index c0a6313..c0ce5bb 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2511,7 +2511,7 @@ def add_attachment(repo, issue, attachmentfolder, user, filename, filestream): hashlib.sha256(filestream.read()).hexdigest(), werkzeug.secure_filename(filename) ) - filedir = os.path.join(attachmentfolder, repo.fullname) + filedir = os.path.join(attachmentfolder, repo.fullname, 'files') filepath = os.path.join(filedir, filename) if os.path.exists(filepath): diff --git a/pagure/static/upload.js b/pagure/static/upload.js index 387669b..6c9c251 100644 --- a/pagure/static/upload.js +++ b/pagure/static/upload.js @@ -63,16 +63,17 @@ function doUpload(csrf_token, files) { return; } else { - console.log(data); var _txt = $("#comment").val(); if (_txt) { _txt += '\n'; } - $("#comment").val( - _txt - + '[![' + data.filename + '](' + data.filelocation + ')](' - + data.filelocation + ')' - ) + var _urls = ''; + for (var i = 0, ie = data.filenames.length; i < ie; i++) { + _urls += '[![' + data.filenames[i] + '](' + + data.filelocations[i] + ')](' + + data.filelocations[i] + ')' + } + $("#comment").val(_txt + _urls) } setTimeout( function(){ diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 9c897b4..deb93c9 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -1249,26 +1249,33 @@ def upload_issue(repo, issueid, username=None, namespace=None): form = pagure.forms.UploadFileForm() if form.validate_on_submit(): - filestream = flask.request.files['filestream'] - new_filename = pagure.lib.add_attachment( - repo=repo, - issue=issue, - attachmentfolder=APP.config['ATTACHMENTS_FOLDER'], - user=user_obj, - filename=filestream.filename, - filestream=filestream.stream, - ) + filenames = [] + for filestream in flask.request.files.getlist('filestream'): + filenames.append(filestream.filename) + new_filename = pagure.lib.add_attachment( + repo=repo, + issue=issue, + attachmentfolder=APP.config['ATTACHMENTS_FOLDER'], + user=user_obj, + filename=filestream.filename, + filestream=filestream.stream, + ) return flask.jsonify({ 'output': 'ok', - 'filename': new_filename.split('-', 1)[1], - 'filelocation': flask.url_for( - 'view_issue_raw_file', - repo=repo.name, - username=username, - namespace=repo.namespace, - filename=new_filename, - ) + 'filenames': [ + filename.split('-', 1)[1] + for filename in filenames], + 'filelocations': [ + flask.url_for( + 'view_issue_raw_file', + repo=repo.name, + username=username, + namespace=repo.namespace, + filename=new_filename, + ) + for new_filename in filenames + ] }) else: return flask.jsonify({'output': 'notok'})