From dce3de0ef57bebb42d82b66739981bf71383a7c1 Mon Sep 17 00:00:00 2001 From: "liana.bakradze" Date: Mon, 15 May 2017 15:44:36 +0300 Subject: [PATCH] EDU-943 Check is not available if not authorized --- .../jetbrains/edu/learning/actions/StudyCheckAction.java | 7 +------ .../jetbrains/edu/learning/checker/StudyTaskChecker.java | 3 ++- .../edu/learning/checker/TaskWithSubtasksChecker.java | 3 ++- .../edu/learning/courseFormat/tasks/ChoiceTask.java | 8 +++++++- .../edu/learning/courseFormat/tasks/CodeTask.java | 8 +++++++- .../edu/learning/courseFormat/tasks/TheoryTask.java | 3 ++- .../edu/learning/checker/PyStudyTaskChecker.java | 4 ++-- 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java b/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java index ebd28d96deb2..a08d8f23adc7 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java @@ -29,7 +29,6 @@ import com.jetbrains.edu.learning.courseFormat.tasks.Task; import com.jetbrains.edu.learning.courseFormat.tasks.TheoryTask; import com.jetbrains.edu.learning.editor.StudyEditor; import com.jetbrains.edu.learning.statistics.EduUsagesCollector; -import com.jetbrains.edu.learning.stepic.StepicUser; import icons.EducationalCoreIcons; import org.jetbrains.annotations.NotNull; @@ -175,11 +174,7 @@ public class StudyCheckAction extends StudyActionWithShortcut { } private StudyCheckResult checkOnRemote() { - final StepicUser user = StudySettings.getInstance().getUser(); - if (user == null) { - return new StudyCheckResult(StudyStatus.Unchecked, "Failed to launch checking: you're not authorized"); - } - return myChecker.checkOnRemote(user); + return myChecker.checkOnRemote(StudySettings.getInstance().getUser()); } } } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/checker/StudyTaskChecker.java b/python/educational-core/src/com/jetbrains/edu/learning/checker/StudyTaskChecker.java index 7fcd1715b2d3..dc02bcd90307 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/checker/StudyTaskChecker.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/checker/StudyTaskChecker.java @@ -7,6 +7,7 @@ import com.jetbrains.edu.learning.courseFormat.StudyStatus; import com.jetbrains.edu.learning.courseFormat.tasks.Task; import com.jetbrains.edu.learning.stepic.StepicUser; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class StudyTaskChecker { @NotNull protected final T myTask; @@ -31,7 +32,7 @@ public class StudyTaskChecker { return new StudyCheckResult(StudyStatus.Unchecked, "Check for " + myTask.getTaskType() + " task isn't available"); } - public StudyCheckResult checkOnRemote(@NotNull StepicUser user) { + public StudyCheckResult checkOnRemote(@Nullable StepicUser user) { return new StudyCheckResult(StudyStatus.Unchecked, "Remote check for " + myTask.getTaskType() + " task isn't available"); } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/checker/TaskWithSubtasksChecker.java b/python/educational-core/src/com/jetbrains/edu/learning/checker/TaskWithSubtasksChecker.java index 42242c7bc06d..68bfca862beb 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/checker/TaskWithSubtasksChecker.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/checker/TaskWithSubtasksChecker.java @@ -16,6 +16,7 @@ import com.jetbrains.edu.learning.courseFormat.tasks.PyCharmTask; import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks; import com.jetbrains.edu.learning.stepic.StepicUser; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Map; @@ -39,7 +40,7 @@ public class TaskWithSubtasksChecker extends StudyTaskChecker } @Override - public StudyCheckResult checkOnRemote(@NotNull StepicUser user) { + public StudyCheckResult checkOnRemote(@Nullable StepicUser user) { if (myPyCharmTaskChecker != null) { return myPyCharmTaskChecker.checkOnRemote(user); } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/ChoiceTask.java b/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/ChoiceTask.java index bc4804f56973..a5d54a5809b1 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/ChoiceTask.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/ChoiceTask.java @@ -4,13 +4,16 @@ import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; import com.intellij.openapi.project.Project; import com.jetbrains.edu.learning.StudyUtils; +import com.jetbrains.edu.learning.actions.StudyCheckAction; import com.jetbrains.edu.learning.checker.StudyCheckResult; import com.jetbrains.edu.learning.checker.StudyTaskChecker; +import com.jetbrains.edu.learning.courseFormat.StudyStatus; import com.jetbrains.edu.learning.editor.StudyChoiceVariantsPanel; import com.jetbrains.edu.learning.stepic.EduAdaptiveStepicConnector; import com.jetbrains.edu.learning.stepic.StepicUser; import com.jetbrains.edu.learning.ui.StudyToolWindow; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -61,7 +64,10 @@ public class ChoiceTask extends Task { public StudyTaskChecker getChecker(@NotNull Project project) { return new StudyTaskChecker(this, project) { @Override - public StudyCheckResult checkOnRemote(@NotNull StepicUser user) { + public StudyCheckResult checkOnRemote(@Nullable StepicUser user) { + if (user == null) { + return new StudyCheckResult(StudyStatus.Unchecked, StudyCheckAction.FAILED_CHECK_LAUNCH); + } return EduAdaptiveStepicConnector.checkChoiceTask(myProject, myTask, user); } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/CodeTask.java b/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/CodeTask.java index cf1595a561e7..e73f796763de 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/CodeTask.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/CodeTask.java @@ -1,12 +1,15 @@ package com.jetbrains.edu.learning.courseFormat.tasks; import com.intellij.openapi.project.Project; +import com.jetbrains.edu.learning.actions.StudyCheckAction; import com.jetbrains.edu.learning.checker.StudyCheckResult; import com.jetbrains.edu.learning.checker.StudyCheckUtils; import com.jetbrains.edu.learning.checker.StudyTaskChecker; +import com.jetbrains.edu.learning.courseFormat.StudyStatus; import com.jetbrains.edu.learning.stepic.EduAdaptiveStepicConnector; import com.jetbrains.edu.learning.stepic.StepicUser; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class CodeTask extends Task { @SuppressWarnings("unused") //used for deserialization @@ -31,7 +34,10 @@ public class CodeTask extends Task { } @Override - public StudyCheckResult checkOnRemote(@NotNull StepicUser user) { + public StudyCheckResult checkOnRemote(@Nullable StepicUser user) { + if (user == null) { + return new StudyCheckResult(StudyStatus.Unchecked, StudyCheckAction.FAILED_CHECK_LAUNCH); + } return EduAdaptiveStepicConnector.checkCodeTask(myProject, myTask, user); } }; diff --git a/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/TheoryTask.java b/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/TheoryTask.java index 9e43a500c9a5..2e39f96f4059 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/TheoryTask.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/courseFormat/tasks/TheoryTask.java @@ -6,6 +6,7 @@ import com.jetbrains.edu.learning.checker.StudyTaskChecker; import com.jetbrains.edu.learning.courseFormat.StudyStatus; import com.jetbrains.edu.learning.stepic.StepicUser; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class TheoryTask extends Task { @SuppressWarnings("unused") //used for deserialization @@ -33,7 +34,7 @@ public class TheoryTask extends Task { } @Override - public StudyCheckResult checkOnRemote(@NotNull StepicUser user) { + public StudyCheckResult checkOnRemote(@Nullable StepicUser user) { return check(); } }; diff --git a/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/checker/PyStudyTaskChecker.java b/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/checker/PyStudyTaskChecker.java index 6b2f117354e8..ab739a7d05c1 100644 --- a/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/checker/PyStudyTaskChecker.java +++ b/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/checker/PyStudyTaskChecker.java @@ -111,11 +111,11 @@ public class PyStudyTaskChecker extends StudyTaskChecker { } @Override - public StudyCheckResult checkOnRemote(@NotNull StepicUser user) { + public StudyCheckResult checkOnRemote(@Nullable StepicUser user) { StudyCheckResult result = check(); final Course course = StudyTaskManager.getInstance(myProject).getCourse(); StudyStatus status = result.getStatus(); - if (course != null && EduNames.STUDY.equals(course.getCourseMode()) && status != StudyStatus.Unchecked) { + if (user != null && course != null && EduNames.STUDY.equals(course.getCourseMode()) && status != StudyStatus.Unchecked) { EduStepicConnector.postSolution(myTask, status == StudyStatus.Solved, myProject); } return result;