From 09aa5b41f8f3553e0f80a3ee7df89b84f63b01b7 Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Tue, 17 Jan 2017 16:01:37 +0300 Subject: [PATCH] EDU-850 Couldn't save and change stepic login settings outside study project Now we don't need study project to store user login credentials --- .../learning/stepic/StepicStudyOptions.java | 76 +++++++++---------- 1 file changed, 36 insertions(+), 40 deletions(-) diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java index 1c63b9a67559..0bf98022f7e6 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/stepic/StepicStudyOptions.java @@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.components.JBCheckBox; @@ -50,8 +51,6 @@ public class StepicStudyOptions implements StudyOptionsProvider { }); myProject = StudyUtils.getStudyProject(); if (myProject == null) { - myLoginTextField.setEnabled(false); - myPasswordField.setEnabled(false); myEnableTestingFromSamples.setEnabled(false); } } @@ -82,7 +81,7 @@ public class StepicStudyOptions implements StudyOptionsProvider { private void setPassword(@NotNull final String password) { myPasswordField.setText(password); } - + private boolean isTestingFromSamplesEnabled() { return myEnableTestingFromSamples.isSelected(); } @@ -92,14 +91,11 @@ public class StepicStudyOptions implements StudyOptionsProvider { Project project = StudyUtils.getStudyProject(); if (project != null) { StudyTaskManager taskManager = StudyTaskManager.getInstance(project); - final StepicUser user = StepicUpdateSettings.getInstance().getUser(); - setLogin(user.getEmail()); - setPassword(user.getPassword()); myEnableTestingFromSamples.setSelected(taskManager.isEnableTestingFromSamples()); } - else { - LOG.warn("No study object is opened"); - } + final StepicUser user = StepicUpdateSettings.getInstance().getUser(); + setLogin(user.getEmail()); + setPassword(user.getPassword()); } @Override @@ -112,39 +108,37 @@ public class StepicStudyOptions implements StudyOptionsProvider { if (myProject != null) { StudyTaskManager taskManager = StudyTaskManager.getInstance(myProject); - if (isTestingFromSamplesEnabled() != taskManager.isEnableTestingFromSamples()){ + if (isTestingFromSamplesEnabled() != taskManager.isEnableTestingFromSamples()) { taskManager.setEnableTestingFromSamples(isTestingFromSamplesEnabled()); } + } - final StepicUser user = StepicUpdateSettings.getInstance().getUser(); - final boolean isCredentialsModified = !getLogin().equals(user.getEmail()) || !getPassword().equals(user.getPassword()); - if (isCredentialsModified) { - final String login = getLogin(); - final String password = getPassword(); - if (!StringUtil.isEmptyOrSpaces(login) && !StringUtil.isEmptyOrSpaces(password)) { - // login to post credentials - final StepicUser[] stepicUser = new StepicUser[1]; - ProgressManager.getInstance().runProcessWithProgressSynchronously( - () -> { - ProgressManager.getInstance().getProgressIndicator().setIndeterminate(true); - stepicUser[0] = StudyUtils.execCancelable(() -> EduStepicAuthorizedClient.login(login, password)); - }, "Logging In", true, - myProject); + final StepicUser user = StepicUpdateSettings.getInstance().getUser(); + final boolean isCredentialsModified = !getLogin().equals(user.getEmail()) || !getPassword().equals(user.getPassword()); + if (isCredentialsModified) { + final String login = getLogin(); + final String password = getPassword(); + if (!StringUtil.isEmptyOrSpaces(login) && !StringUtil.isEmptyOrSpaces(password)) { + // login to post credentials + final StepicUser[] stepicUser = new StepicUser[1]; + final Project project = myProject == null ? ProjectUtil.guessCurrentProject(myPane) : myProject; + ProgressManager.getInstance().runProcessWithProgressSynchronously( + () -> { + ProgressManager.getInstance().getProgressIndicator().setIndeterminate(true); + stepicUser[0] = StudyUtils.execCancelable(() -> EduStepicAuthorizedClient.login(login, password)); + }, "Logging In", true, + project); - if (stepicUser[0] != null && stepicUser[0].getAccessToken() != null) { - StepicUpdateSettings.getInstance().setUser(stepicUser[0]); - } - else { - throw new ConfigurationException("Unable to login"); - } + if (stepicUser[0] != null && stepicUser[0].getAccessToken() != null) { + StepicUpdateSettings.getInstance().setUser(stepicUser[0]); } else { - removeCredentials(); + throw new ConfigurationException("Unable to login"); } } - } - else { - LOG.warn("No study object is opened"); + else { + removeCredentials(); + } } } @@ -161,14 +155,16 @@ public class StepicStudyOptions implements StudyOptionsProvider { public boolean isModified() { final Project project = StudyUtils.getStudyProject(); - if (project == null) return false; - - final StudyTaskManager taskManager = StudyTaskManager.getInstance(project); + boolean isTestOptionModified = false; + if (project != null) { + final StudyTaskManager taskManager = StudyTaskManager.getInstance(project); + isTestOptionModified = !isTestingFromSamplesEnabled() == taskManager.isEnableTestingFromSamples(); + } final StepicUser user = StepicUpdateSettings.getInstance().getUser(); - - return !getLogin().equals(user.getEmail()) + + return !getLogin().equals(user.getEmail()) || !getPassword().equals(user.getPassword()) - || !isTestingFromSamplesEnabled() == taskManager.isEnableTestingFromSamples(); + || isTestOptionModified; } private void createUIComponents() {