diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 7e890255..57133b47 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -84,6 +84,18 @@ def upload_token(portfolio_id): return jsonify(render_args) +@task_orders_bp.route("/task_orders//download_link") +@user_can(Permissions.CREATE_TASK_ORDER, message="edit task order form") +def download_link(portfolio_id): + filename = http_request.args.get("filename") + object_name = http_request.args.get("objectName") + render_args = { + "downloadLink": app.csp.files.generate_download_link(object_name, filename) + } + + return jsonify(render_args) + + @task_orders_bp.route("/task_orders//edit") @user_can(Permissions.CREATE_TASK_ORDER, message="edit task order form") def edit(task_order_id): @@ -117,14 +129,10 @@ def edit(task_order_id): @task_orders_bp.route("/task_orders//form/step_1") @user_can(Permissions.CREATE_TASK_ORDER, message="view task order form") def form_step_one_add_pdf(portfolio_id=None, task_order_id=None): - (token, object_name) = current_app.uploader.get_token() - extra_args = {"token": token, "object_name": object_name} - return render_task_orders_edit( "task_orders/step_1.html", portfolio_id=portfolio_id, task_order_id=task_order_id, - extra_args=extra_args, ) @@ -228,11 +236,9 @@ def form_step_four_review(task_order_id): (token, object_name) = current_app.uploader.get_token() extra_args = { - "token": token, - "object_name": object_name, "pdf_download_url": current_app.uploader.generate_download_link( task_order.pdf.object_name, task_order.pdf.filename - ), + ) } if task_order.is_completed == False: diff --git a/js/components/upload_input.js b/js/components/upload_input.js index df0cab99..394c0057 100644 --- a/js/components/upload_input.js +++ b/js/components/upload_input.js @@ -18,7 +18,7 @@ export default { props: { name: String, initialData: { - type: String, + type: Object, }, initialErrors: { type: Boolean, @@ -39,10 +39,11 @@ export default { data: function() { return { hasInitialData: !!this.initialData, - attachment: this.initialData || null, + attachment: this.initialData.filename || null, changed: false, uploadError: false, sizeError: false, + downloadLink: '', } }, @@ -52,6 +53,11 @@ export default { name: this.name, valid: this.hasAttachment, }) + + if (this.hasInitialData) { + const { filename, objectName } = this.initialData + this.downloadLink = await this.getDownloadLink(filename, objectName) + } }, methods: { @@ -70,6 +76,10 @@ export default { this.attachment = e.target.value this.$refs.attachmentFilename.value = file.name this.$refs.attachmentObjectName.value = response.objectName + this.downloadLink = await this.getDownloadLink( + file.name, + response.objectName + ) } else { this.uploadError = true } @@ -110,6 +120,15 @@ export default { .then(response => response.json()) .then(({ token, objectName }) => buildUploader(token, objectName)) }, + getDownloadLink: async function(filename, objectName) { + const { downloadLink } = await fetch( + `/task_orders/${ + this.portfolioId + }/download_link?filename=${filename}&objectName=${objectName}`, + { credentials: 'include' } + ).then(r => r.json()) + return downloadLink + }, }, computed: { diff --git a/templates/components/upload_input.html b/templates/components/upload_input.html index c2cc176d..10177664 100644 --- a/templates/components/upload_input.html +++ b/templates/components/upload_input.html @@ -4,7 +4,7 @@
{{ Icon("check-circle-solid") }} - + Remove