Skip to content
Snippets Groups Projects
Commit fe62f266 authored by Nikos Marinos's avatar Nikos Marinos
Browse files

code from Koosum

parent bf921bb8
No related branches found
No related tags found
2 merge requests!114Shared data model,!115Dev
......@@ -7,7 +7,9 @@ const db = require('../utils/db.js')
const { execSync } = require('child_process')
const uuidv4 = require('uuid/v4')
const config = require('config')
const manuscriptModel = require('../xpub-model/entities/manuscript/data-access')
const Manuscript = require('../xpub-model/entities/manuscript/data-access')
// const manuscriptModel = require('../xpub-model/entities/manuscript')
const Team = require('../xpub-model/entities/team/data-access')
const ftpTagger = config.get('ftp_tagger')
const {
......@@ -16,10 +18,10 @@ const {
errorDevEmail,
} = require('../email')
// const parentRootPath = '/home/yogmatee/projects/PLAY/chokidar/ftp_mock'
const parentRootPath = `${process.env.HOME}/${config.get('ftp_directory')}/${
ftpTagger.username
}`
const rootPath = `${parentRootPath}/Done`
const ignoreNewFolder = `${parentRootPath}/New`
......@@ -74,7 +76,9 @@ async function processFile(path) {
try {
logger.info(`Processing tagged XML packages: ${path}`)
const user = await getUser.getFTPUser(rootPath, path)
const user = await getUser.getFTPUser()
const userId = user.id
const tmpPath = await tar.createTempDir()
const extractedFilePath = await tar.untar(path, tmpPath)
const manifestFilename = await files.getManifestFilename(extractedFilePath)
......@@ -82,7 +86,17 @@ async function processFile(path) {
extractedFilePath,
manifestFilename,
)
const filesArr = await files.checkFiles(filesData, tmpPath, user)
const filesArr = await files.checkFiles(filesData, tmpPath, userId)
// create team
/* await Team.insert(
{
manuscriptId,
userId,
roleName: 'reviewer',
},
userId,
)*/
// delete current existing 'tagging' files
await db.deleteTaggingFiles(manuscriptId, user)
......@@ -90,36 +104,63 @@ async function processFile(path) {
// upload to minio
for (let i = 0; i < filesArr.length; i += 1) {
const uuid = uuidv4()
const minioFileName = `${uuid}${filesArr[i].extension}`
filesArr[i].minioFileName = `${uuid}${filesArr[i].extension}`
files.uploadFileToMinio(
minioFileName,
filesArr[i].minioFileName,
filesArr[i].filename,
filesArr[i].url,
filesArr[i].mimeType,
)
filesArr[i].filename = minioFileName
}
const rows = await Manuscript.findByFieldEager(
'id',
manuscriptId,
'[files]',
)
const manuscript = rows[0]
const dbFilesArr = filesArr.map(obj => {
obj.url = `/download/${obj.filename}`
obj.url = `/download/${obj.minioFileName}`
delete obj.extension
delete obj.minioFileName
return obj
})
manuscript.files = manuscript.files.concat(dbFilesArr)
// create rows in 'file' table
await db.createTaggersFiles(dbFilesArr)
await manuscriptModel.updatePdfDepositState(manuscriptId)
// await db.createTaggersFiles(dbFilesArr)
manuscript.pdfDepositState = 'WAITING_FOR_PDF_CONVERSION'
//await manuscriptModel.updatePdfDepositState(manuscriptId)
const manuscriptDb = await new Manuscript(manuscript).saveWithUserAndRole(
{
relate: true,
unrelate: true,
},
userId,
'tagger',
)
/*
manuscriptModel.update(
{ id: manuscriptId, pdfDepositState: 'WAITING_FOR_PDF_CONVERSION' },
user.id,
)
*/
await files.renameFile(path)
logger.info('Uploading to Minio and the database has been completed.')
const manuscriptObj = await manuscriptModel.getManuscriptById(manuscriptId)
//const manuscriptObj = await manuscriptModel.getManuscriptById(manuscriptId)
// send email to taggers
processedTaggerEmail(
ftpTagger.email,
manuscriptId,
manuscriptObj[0]['meta,title'],
manuscriptDb['meta,title'],
`${path}`,
)
// clean up tmp folder
......
......@@ -64,7 +64,7 @@ module.exports.getManifestFileData = function getManifestFileData(
})
}
module.exports.checkFiles = function checkFiles(files, tmpPath, user) {
module.exports.checkFiles = function checkFiles(files, tmpPath, userId) {
return new Promise((resolve, reject) => {
const filesArr = []
for (let i = 0; i < files.length; i += 1) {
......@@ -95,7 +95,7 @@ module.exports.checkFiles = function checkFiles(files, tmpPath, user) {
size: fileSizeInBytes,
url: file,
label: fileLabel,
updatedBy: user.userId,
updatedBy: userId,
})
}
resolve(filesArr)
......
......@@ -5,27 +5,11 @@ const Identity = rfr('server/xpub-model/entities/identity/data-access')
const User = rfr('server/xpub-model/entities/user/data-access')
const ftpUsers = config.get('users')
module.exports.getFTPUser = function getFTPUser(rootPath, filename) {
module.exports.getFTPUser = function getFTPUser() {
return new Promise((resolve, reject) => {
const userName = 'taggers'
Identity.findByFieldEager(
'meta',
`{"ftpUserName": "${userName}"}`,
'[user]',
)
.then(identityDb => {
const user = ftpUsers.find(user =>
user.identities
.filter(identity => identity.meta)
.find(identity => identity.meta.ftpUserName === userName),
)
const identity = user.identities
.filter(identity => identity.meta)
.find(identity => identity.meta.ftpUserName === userName)
/* eslint-disable dot-notation */
identity['userId'] = identityDb[0].userId
resolve(identity)
User.findByEmail('taggers@internal.ebi.ac.uk')
.then(user => {
resolve(user)
})
.catch(error => reject(error))
})
......
......@@ -16,8 +16,8 @@ class Team extends EpmcBaseModel {
// static idColumn = ['article_id', 'member_id'];
static get idColumn() {
// return ['manuscript_id', 'user_id', 'role_name']
return 'id'
return ['manuscript_id', 'user_id', 'role_name']
// return 'id'
}
/*
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment