PY-14036: Support remote Django (and other) project creation

* See PyProjectSynchronizer for entry point
* DownloadAction refactored to extract  download
* VagrantSupportImpl refactored to fetch mapped folders
This commit is contained in:
Ilya.Kazakevich
2016-10-25 20:43:52 +03:00
parent 2f30abfe38
commit 2de0aa4aa0
15 changed files with 633 additions and 63 deletions
@@ -13,7 +13,6 @@ import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.DirectoryProjectGenerator;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.jetbrains.edu.coursecreator.actions.CCCreateLesson;
@@ -27,6 +26,7 @@ import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
import com.jetbrains.python.PythonLanguage;
import com.jetbrains.python.newProject.PyNewProjectSettings;
import com.jetbrains.python.newProject.PythonProjectGenerator;
import com.jetbrains.python.remote.PyProjectSynchronizer;
import icons.CourseCreatorPythonIcons;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -38,7 +38,7 @@ import java.io.File;
import static com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator.OUR_COURSES_DIR;
public class PyCCProjectGenerator extends PythonProjectGenerator<PyNewProjectSettings> {
public class PyCCProjectGenerator extends PythonProjectGenerator<PyNewProjectSettings> {
private static final Logger LOG = Logger.getInstance(PyCCProjectGenerator.class);
private CCNewProjectPanel mySettingsPanel;
@@ -57,7 +57,9 @@ public class PyCCProjectGenerator extends PythonProjectGenerator<PyNewProjectSet
@Override
public void configureProject(@NotNull final Project project, @NotNull final VirtualFile baseDir,
@NotNull PyNewProjectSettings settings, @NotNull Module module) {
@NotNull PyNewProjectSettings settings,
@NotNull Module module,
@Nullable final PyProjectSynchronizer synchronizer) {
generateProject(project, baseDir, mySettingsPanel);
}
@@ -84,7 +86,8 @@ public class PyCCProjectGenerator extends PythonProjectGenerator<PyNewProjectSet
}
private static void createTestHelper(@NotNull Project project, PsiDirectory projectDir) {
final FileTemplate template = FileTemplateManager.getInstance(project).getInternalTemplate(FileUtil.getNameWithoutExtension(EduNames.TEST_HELPER));
final FileTemplate template =
FileTemplateManager.getInstance(project).getInternalTemplate(FileUtil.getNameWithoutExtension(EduNames.TEST_HELPER));
try {
FileTemplateUtil.createFromTemplate(template, EduNames.TEST_HELPER, null, projectDir);
}
@@ -20,7 +20,6 @@ import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl;
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.DirectoryProjectGenerator;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.intellij.util.BooleanFunction;
@@ -34,6 +33,7 @@ import com.jetbrains.python.newProject.PyNewProjectSettings;
import com.jetbrains.python.newProject.PythonProjectGenerator;
import com.jetbrains.python.packaging.PyPackageManager;
import com.jetbrains.python.psi.LanguageLevel;
import com.jetbrains.python.remote.PyProjectSynchronizer;
import com.jetbrains.python.sdk.AbstractCreateVirtualEnvDialog;
import com.jetbrains.python.sdk.PyDetectedSdk;
import com.jetbrains.python.sdk.PythonSdkAdditionalData;
@@ -118,7 +118,9 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
@Override
public void configureProject(@NotNull final Project project, @NotNull final VirtualFile baseDir,
@NotNull PyNewProjectSettings settings, @NotNull Module module) {
@NotNull PyNewProjectSettings settings,
@NotNull Module module,
@Nullable PyProjectSynchronizer synchronizer) {
myGenerator.generateProject(project, baseDir);
final String testHelper = "test_helper.py";
if (baseDir.findChild(testHelper) != null) return;