Skip to content
Snippets Groups Projects
Commit 7e8a56d0 authored by Martin Jeppesen's avatar Martin Jeppesen
Browse files

Add username to zip output and fix the command to get all zips (backup scenario)

parent 8bf1afe1
Branches
No related tags found
No related merge requests found
...@@ -23,6 +23,8 @@ echo "/build-pdf.sh $course $course_zip $jobid" ...@@ -23,6 +23,8 @@ echo "/build-pdf.sh $course $course_zip $jobid"
unzip $course_zip -d $project unzip $course_zip -d $project
if [[ $? != 0 ]]; then if [[ $? != 0 ]]; then
echo "Dump of folder:"
ls -als "$(dirname -- "$course_zip")"
exit 1 exit 1
fi fi
......
...@@ -14,9 +14,14 @@ export default ({ config, db }) => resource({ ...@@ -14,9 +14,14 @@ export default ({ config, db }) => resource({
*/ */
load(req, id, callback) { load(req, id, callback) {
db.projects.findOne({_id: ObjectId(id)}, (err, project) => { db.projects.findOne({_id: ObjectId(id)}, (project_err, project) => {
db.users.findOne({_id: project.owner_ref}, (err, user) => {
if (!err) {
project.owner_user = user;
}
console.dir(project); console.dir(project);
// callback(err, project); callback(project_err, project);
});
}); });
}, },
...@@ -28,12 +33,22 @@ export default ({ config, db }) => resource({ ...@@ -28,12 +33,22 @@ export default ({ config, db }) => resource({
var allDetails = []; var allDetails = [];
logger.info(`Zipping all projects`); logger.info(`Zipping all projects`);
console.dir(projects); console.dir(projects);
var jobs = projects.map( (project) => { var jobs = projects
.filter(( (project) => (!project.archived)))
.map( (project) => {
return (callback) => { return (callback) => {
db.users.findOne({_id: project.owner_ref}, (err, user) => {
if (!err) {
project.owner_user = user;
}
logger.info(`got user ${err} ${user} ${user.first_name} ${user.email}`);
zipProject(db, project, (err, details) => { zipProject(db, project, (err, details) => {
allDetails.push(details); allDetails.push(details);
callback(err, details); callback(err, details);
}, (progress_text) => {
logger.info(progress_text);
}) })
});
} }
}); });
logger.info(`Total zip jobs: ${jobs.length} ${allDetails}`); logger.info(`Total zip jobs: ${jobs.length} ${allDetails}`);
......
...@@ -70,11 +70,11 @@ export function initializeDBs(callback) { ...@@ -70,11 +70,11 @@ export function initializeDBs(callback) {
} }
if (!dbs.sharelatex_db) { if (!dbs.sharelatex_db) {
jobs.push(connectMongoJS(config.db_urls.sharelatex_db, ["projects", "docs", "docOps"], (db) => { dbs.sharelatex_db = db } )); jobs.push(connectMongoJS(config.db_urls.sharelatex_db, ["projects", "docs", "docOps", "users"], (db) => { dbs.sharelatex_db = db } ));
} }
if (!dbs.getpdf_db) { if (!dbs.getpdf_db) {
jobs.push(connectMongoJS(config.db_urls.getpdf_db, ["projects", "docs", "docOps"], (db) => { dbs.getpdf_db = db } )); jobs.push(connectMongoJS(config.db_urls.getpdf_db, ["projects", "docs", "docOps", "users"], (db) => { dbs.getpdf_db = db } ));
} }
if (jobs.length === 0) { if (jobs.length === 0) {
......
...@@ -12,7 +12,9 @@ class BuildPDFJob { ...@@ -12,7 +12,9 @@ class BuildPDFJob {
jobFunc(job, done) { jobFunc(job, done) {
logger.info("Starting BuildPDF Job"); logger.info("Starting BuildPDF Job");
const zipPath = zipFilePath(this.project._id, this.project.name); const user = this.project.owner_user;
const zipPath = zipFilePath(this.project._id, this.project.name, user ? user.first_name : null);
const cmd = `./build-pdf.sh ${this.course_id} ${zipPath} ${job.attrs._id.toString()} `; const cmd = `./build-pdf.sh ${this.course_id} ${zipPath} ${job.attrs._id.toString()} `;
......
...@@ -31,7 +31,10 @@ export default class ZipJob { ...@@ -31,7 +31,10 @@ export default class ZipJob {
done(); done();
return; return;
} }
this.sldb.users.findOne({_id: project.owner_ref}, (user_err, user) => {
if (!user_err) {
project.owner_user = user;
}
logToLoggerAndJob(`Loaded Project; zipping it up. ${course} ${project_id}`, job); logToLoggerAndJob(`Loaded Project; zipping it up. ${course} ${project_id}`, job);
zipProject(this.sldb, project, (err, details) => { zipProject(this.sldb, project, (err, details) => {
...@@ -52,4 +55,5 @@ export default class ZipJob { ...@@ -52,4 +55,5 @@ export default class ZipJob {
logToLoggerAndJob(progress_msg, job); logToLoggerAndJob(progress_msg, job);
}) })
}); });
});
}} }}
...@@ -24,14 +24,16 @@ function _getAllFoldersFromProject(project, callback) { ...@@ -24,14 +24,16 @@ function _getAllFoldersFromProject(project, callback) {
callback(null, folders) callback(null, folders)
} }
export function zipFilePath(project_id, project_name) { export function zipFilePath(project_id, project_name, user_name = 'unknown') {
return path.join(sharelatexDataPath(), "backups", `${project_id}_${project_name}.zip`); return path.join(sharelatexDataPath(), "backups", `${user_name}-${project_id}_${project_name}.zip`);
} }
export function zipProject(db, project, zipDone, progress = () => {} ) { export function zipProject(db, project, zipDone, progress = () => {} ) {
const archive = archiver("zip"); const archive = archiver("zip");
const zipPath = zipFilePath(project._id, project.name); const user = project.owner_user;
const zipPath = zipFilePath(project._id, project.name, user ? user.first_name : null);
archive.on("error", (err) => { archive.on("error", (err) => {
logger.error("Can't create zip"); logger.error("Can't create zip");
...@@ -48,6 +50,7 @@ export function zipProject(db, project, zipDone, progress = () => {} ) { ...@@ -48,6 +50,7 @@ export function zipProject(db, project, zipDone, progress = () => {} ) {
} }
}); });
progress(`ZIP: beginning creation of ${zipPath}`);
progress(`ZIP: unlinking existing file ${zipPath}`); progress(`ZIP: unlinking existing file ${zipPath}`);
// First, unlink the existing archive. // First, unlink the existing archive.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment