|
25 | 25 | from lib.remote_page import RemotePageNotFound, request_for_response |
26 | 26 | from lib.viewbase import BaseFormView, BaseRedirectMixin, BaseView |
27 | 27 | from userprofile.models import UserProfile |
| 28 | +from .cache.exercise import ExerciseCache |
28 | 29 | from .cache.points import CachedPoints, ModulePoints, ExercisePoints |
29 | 30 | from .models import BaseExercise, LearningObject, LearningObjectDisplay |
30 | 31 | from .protocol.exercise_page import ExercisePage |
@@ -296,6 +297,16 @@ def submission_check(self, request=None): |
296 | 297 | ) |
297 | 298 | return submission_status, submission_allowed, issues, students |
298 | 299 |
|
| 300 | + def _get_current_exercise_version(self, request: HttpRequest, students: List[UserProfile]) -> Optional[str]: |
| 301 | + cache = ExerciseCache( |
| 302 | + self.exercise, |
| 303 | + get_language(), |
| 304 | + request, |
| 305 | + students, |
| 306 | + self.post_url_name, |
| 307 | + ) |
| 308 | + return cache.exercise_version() or None |
| 309 | + |
299 | 310 | def get_page(self, request: HttpRequest, students: List[UserProfile]) -> ExercisePage: |
300 | 311 | """ |
301 | 312 | Determines which page should be displayed for this exercise: |
@@ -338,6 +349,21 @@ def get_page(self, request: HttpRequest, students: List[UserProfile]) -> Exercis |
338 | 349 | url_name=self.post_url_name, |
339 | 350 | ) |
340 | 351 | if self.feedback_revealed: |
| 352 | + submission_version = (submission.meta_data or {}).get('exercise_version') |
| 353 | + submission_language = submission.lang |
| 354 | + current_language = get_language() |
| 355 | + current_version = self._get_current_exercise_version(request, students) |
| 356 | + if ( |
| 357 | + (submission_language is not None |
| 358 | + and submission_language != current_language) |
| 359 | + or (current_version is not None |
| 360 | + and submission_version != current_version) |
| 361 | + ): |
| 362 | + return self.exercise.load( |
| 363 | + request, |
| 364 | + students, |
| 365 | + url_name=self.post_url_name, |
| 366 | + ) |
341 | 367 | page = ExercisePage(self.exercise) |
342 | 368 | page.content = submission.feedback |
343 | 369 | page.is_loaded = True |
|
0 commit comments