From cb9147f19fed55c5b8b101efea46063b04705b11 Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Thu, 24 Nov 2016 15:34:20 +0300 Subject: [PATCH] Fix EDU-793 PyCharm freezes when creating course from Stepik Freeze on course creation was caused by EduEduStepicAuthorizedClient which tried to login before getting step. Now we use an authorized client only if user logged in at project creation (it's required for private and adaptive courses), otherwise an unauthorized client is used. --- .../edu/learning/stepic/EduStepicConnector.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java index b1ba4950ea44..6037be15c049 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.courseFormat.Course; import com.jetbrains.edu.learning.courseFormat.Lesson; import com.jetbrains.edu.learning.courseFormat.Task; @@ -273,8 +274,16 @@ public class EduStepicConnector { } public static StepicWrappers.StepSource getStep(@NotNull Project project, int step) throws IOException { - return EduStepicAuthorizedClient.getFromStepic(EduStepicNames.STEPS + String.valueOf(step), - StepicWrappers.StepContainer.class, project).steps.get(0); + final StudyTaskManager taskManager = StudyTaskManager.getInstance(project); + final boolean isAuthorized = taskManager.getUser().getAccessToken() != null; + if (isAuthorized) { + return EduStepicAuthorizedClient.getFromStepic(EduStepicNames.STEPS + String.valueOf(step), + StepicWrappers.StepContainer.class, project).steps.get(0); + } + else { + return EduStepicClient.getFromStepic(EduStepicNames.STEPS + String.valueOf(step), + StepicWrappers.StepContainer.class).steps.get(0); + } } public static void postAttempt(@NotNull final Task task, boolean passed, @NotNull final Project project) {