EDU-943 Check is not available if not authorized

This commit is contained in:
liana.bakradze
2017-05-15 15:47:08 +03:00
parent 78f11e259b
commit dce3de0ef5
7 changed files with 23 additions and 13 deletions
@@ -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());
}
}
}
@@ -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<T extends Task> {
@NotNull protected final T myTask;
@@ -31,7 +32,7 @@ public class StudyTaskChecker<T extends Task> {
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");
}
@@ -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<TaskWithSubtasks>
}
@Override
public StudyCheckResult checkOnRemote(@NotNull StepicUser user) {
public StudyCheckResult checkOnRemote(@Nullable StepicUser user) {
if (myPyCharmTaskChecker != null) {
return myPyCharmTaskChecker.checkOnRemote(user);
}
@@ -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<ChoiceTask>(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);
}
@@ -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);
}
};
@@ -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();
}
};
@@ -111,11 +111,11 @@ public class PyStudyTaskChecker extends StudyTaskChecker<PyCharmTask> {
}
@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;