ProjectUploadManager.coffee 1.3 KB

12345678910111213141516171819202122232425262728
  1. path = require "path"
  2. rimraf = require "rimraf"
  3. ArchiveManager = require "./ArchiveManager"
  4. FileSystemImportManager = require "./FileSystemImportManager"
  5. ProjectCreationHandler = require "../Project/ProjectCreationHandler"
  6. ProjectRootDocManager = require "../Project/ProjectRootDocManager"
  7. module.exports = ProjectUploadHandler =
  8. createProjectFromZipArchive: (owner_id, name, zipPath, callback = (error, project) ->) ->
  9. ProjectCreationHandler.createBlankProject owner_id, name, (error, project) =>
  10. return callback(error) if error?
  11. @insertZipArchiveIntoFolder project._id, project.rootFolder[0]._id, zipPath, (error) ->
  12. return callback(error) if error?
  13. ProjectRootDocManager.setRootDocAutomatically project._id, (error) ->
  14. return callback(error) if error?
  15. callback(error, project)
  16. insertZipArchiveIntoFolder: (project_id, folder_id, path, callback = (error) ->) ->
  17. destination = @_getDestinationDirectory path
  18. ArchiveManager.extractZipArchive path, destination, (error) ->
  19. return callback(error) if error?
  20. FileSystemImportManager.addFolderContents project_id, folder_id, destination, false, (error) ->
  21. return callback(error) if error?
  22. rimraf(destination, callback)
  23. _getDestinationDirectory: (source) ->
  24. return path.join(path.dirname(source), "#{path.basename(source, ".zip")}-#{Date.now()}")