diff --git a/packages/component-manuscript-manager/src/routes/fragments/post.js b/packages/component-manuscript-manager/src/routes/fragments/post.js index 6150932b318d711b2eed23d7db81b6588e2a0799..2ec4ab94af0427c9014609b1927f0db01e40a498 100644 --- a/packages/component-manuscript-manager/src/routes/fragments/post.js +++ b/packages/component-manuscript-manager/src/routes/fragments/post.js @@ -52,7 +52,7 @@ module.exports = models => async (req, res) => { }, } - await MTS.sendPackage(packageFragment) + await MTS.sendPackage({ fragment: packageFragment }) notifications.sendNotifications({ fragment, diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 37677984272615861c98b4d2b2b7f341078933f6..69135f088fdff18442320398441a8db3f40562d5 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js @@ -1,5 +1,6 @@ const uuid = require('uuid') -const { pick } = require('lodash') +const { pick, get } = require('lodash') +const config = require('config') const { services, @@ -7,6 +8,10 @@ const { Collection, } = require('pubsweet-component-helper-service') +const s3Config = get(config, 'pubsweet-component-aws-s3', {}) +const mtsConfig = get(config, 'mts-service', {}) +const MTSService = require('pubsweet-component-mts-package') + const notifications = require('./notifications/notifications') module.exports = models => async (req, res) => { @@ -70,6 +75,20 @@ module.exports = models => async (req, res) => { fragment.revision = pick(fragment, ['authors', 'files', 'metadata']) } + if (isEditorInChief && recommendation === 'publish') { + const { journal, xmlParser, ftp } = mtsConfig + const MTS = new MTSService(journal, xmlParser, s3Config, ftp) + const packageFragment = { + ...fragment, + metadata: { + ...fragment.metadata, + customId: collection.customId, + }, + } + + await MTS.sendPackage({ fragment: packageFragment, isEQA: true }) + } + notifications.sendNotifications({ fragment, collection, diff --git a/packages/component-mts-package/src/MTS.js b/packages/component-mts-package/src/MTS.js index 0d52a235a9d63630cadd9b88cf5e036aced1e11c..a8a9421139c0beafbf844b974658b8e602822b17 100644 --- a/packages/component-mts-package/src/MTS.js +++ b/packages/component-mts-package/src/MTS.js @@ -216,15 +216,19 @@ class MTS { return this.convertToXML(this.composeJson(fragment)) } - sendPackage(fragment = {}) { + sendPackage({ fragment = {}, isEQA = false }) { const xmlFile = this.convertFragmentToXML(fragment) return PackageManager.createFilesPackage(this.s3Config)({ fragment, xmlFile, + isEQA, }).then(() => { - const manuscriptName = get(xmlFile, 'name', '').replace('.xml', '') - const filename = `${manuscriptName}.zip` + const packageName = get(xmlFile, 'name', '').replace('.xml', '') + const filename = isEQA + ? `ACCEPTED_${packageName}.zip` + : `${packageName}.zip` + return PackageManager.uploadFiles({ filename, s3Config: this.s3Config, diff --git a/packages/component-mts-package/src/PackageManager.js b/packages/component-mts-package/src/PackageManager.js index 43d9386c5037e78176ee3a41116fdaf071dfe366..2bbed4fbd45321d05fa6f07d437e36aad552d7fd 100644 --- a/packages/component-mts-package/src/PackageManager.js +++ b/packages/component-mts-package/src/PackageManager.js @@ -19,9 +19,12 @@ const createFilesPackage = (s3Config, archiver = nodeArchiver) => { const asyncGetObject = promisify(s3.getObject.bind(s3)) const asyncListObjects = promisify(s3.listObjects.bind(s3)) - return async ({ fragment, fileTypes, xmlFile }) => { + return async ({ fragment, fileTypes, xmlFile, isEQA = false }) => { const { id } = fragment - const manuscriptName = get(xmlFile, 'name', '').replace('.xml', '') + let packageName = get(xmlFile, 'name', '').replace('.xml', '') + if (isEQA) { + packageName = `ACCEPTED_${packageName}` + } try { const params = { Bucket: s3Config.bucket, @@ -39,7 +42,7 @@ const createFilesPackage = (s3Config, archiver = nodeArchiver) => { ) if (s3Files) { - const packageOutput = fs.createWriteStream(`${manuscriptName}.zip`) + const packageOutput = fs.createWriteStream(`${packageName}.zip`) const archive = archiver('zip') archive.pipe(packageOutput)