Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions openedx/core/djangoapps/courseware_api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from completion.exceptions import UnavailableCompletionData
from completion.utilities import get_key_to_last_completed_block
from django.conf import settings
from django.db import transaction
from django.db import transaction, IntegrityError
from django.utils.decorators import method_decorator
from django.utils.functional import cached_property
from edx_django_utils.cache import TieredCache
Expand Down Expand Up @@ -498,12 +498,20 @@ def set_last_seen_courseware_timezone(self, user):
browser_timezone = self.request.query_params.get('browser_timezone', None)
cached_value = TieredCache.get_cached_response(cache_key)
if not cached_value.is_found:
if browser_timezone:
TieredCache.set_all_tiers(cache_key, str(browser_timezone), 86400) # Refresh the cache daily
return

if browser_timezone:
TieredCache.set_all_tiers(cache_key, str(browser_timezone), 86400) # Refresh the cache daily
try:
LastSeenCoursewareTimezone.objects.update_or_create(
user=user,
defaults={'last_seen_courseware_timezone': browser_timezone},
)
except IntegrityError:
# Race condition: record already exists, just update it
obj = LastSeenCoursewareTimezone.objects.get(user=user)
obj.last_seen_courseware_timezone = browser_timezone
obj.save()

def get_object(self):
"""
Expand Down
Loading