fix: updated cache policy for import_status endpoint (#29342)

* fix: updated cache policy for import_status endpoint
This commit is contained in:
Ahtisham Shahid
2021-11-17 19:40:17 +05:00
committed by GitHub
parent 8b3d7e040c
commit 78e115a05c
3 changed files with 15 additions and 4 deletions

View File

@@ -20,6 +20,7 @@ from django.core.files.storage import FileSystemStorage
from django.db import transaction
from django.http import Http404, HttpResponse, HttpResponseNotFound, StreamingHttpResponse
from django.utils.translation import gettext as _
from django.views.decorators.cache import cache_control
from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.decorators.http import require_GET, require_http_methods
from edx_django_utils.monitoring import set_custom_attribute, set_custom_attributes_for_course_key
@@ -232,6 +233,7 @@ def _write_chunk(request, courselike_key): # lint-amnesty, pylint: disable=too-
@require_GET
@ensure_csrf_cookie
@login_required
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@ensure_valid_course_key
def import_status_handler(request, course_key_string, filename=None):
"""
@@ -273,9 +275,7 @@ def import_status_handler(request, course_key_string, filename=None):
message = artifact.text
else:
status = min(task_status.completed_steps + 1, 3)
if task_status:
logging.info(f'Import Name : {name} task uuid: {task_status.uuid} task status : {task_status.state} status:'
f'{status}')
return JsonResponse({"ImportStatus": status, "Message": message})

View File

@@ -675,6 +675,17 @@ class ImportTestCase(CourseTestCase):
status_response = self.get_import_status(self.course.id, self.good_tar)
self.assertImportStatusResponse(status_response, self.UpdatingError, import_error.UNKNOWN_ERROR_IN_IMPORT)
def test_import_status_response_is_not_cached(self):
"""To test import_status endpoint response is not cached"""
resp = self.client.get(
reverse_course_url(
'import_status_handler',
self.course.id,
kwargs={'filename': os.path.split(self.good_tar)[1]}
)
)
self.assertEqual(resp.headers['Cache-Control'], 'no-cache, no-store, must-revalidate')
@override_settings(CONTENTSTORE=TEST_DATA_CONTENTSTORE)
@ddt.ddt

View File

@@ -28,7 +28,7 @@ define(
var current = {stage: 0, state: STATE.READY};
var deferred = null;
var file = {name: null, url: null};
var timeout = {id: null, delay: 1000};
var timeout = {id: null, delay: 3000};
var $dom = {
stages: $('ol.status-progress').children(),
successStage: $('.item-progresspoint-success'),