53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
"""
|
|
Helpers for the CourseGraph app
|
|
"""
|
|
from django.core.cache import cache
|
|
from django.utils import timezone
|
|
|
|
|
|
class TimeRecordingCacheBase(object):
|
|
"""
|
|
A base class for caching the current time for some key.
|
|
"""
|
|
# cache_prefix should be defined in children classes
|
|
cache_prefix = None
|
|
_cache = cache
|
|
|
|
def _key(self, course_key):
|
|
"""
|
|
Make a cache key from the prefix and a course_key
|
|
:param course_key: CourseKey object
|
|
:return: a cache key
|
|
"""
|
|
return self.cache_prefix + unicode(course_key)
|
|
|
|
def get(self, course_key):
|
|
"""
|
|
Gets the time value associated with the CourseKey.
|
|
:param course_key: a CourseKey object.
|
|
:return: the time the key was last set.
|
|
"""
|
|
return self._cache.get(self._key(course_key))
|
|
|
|
def set(self, course_key):
|
|
"""
|
|
Sets the current time for a CourseKey key.
|
|
:param course_key: a CourseKey object.
|
|
"""
|
|
return self._cache.set(self._key(course_key), timezone.now())
|
|
|
|
|
|
class CourseLastPublishedCache(TimeRecordingCacheBase):
|
|
"""
|
|
Used to record the last time that a course had a publish event run on it.
|
|
"""
|
|
cache_prefix = u'course_last_published'
|
|
|
|
|
|
class CommandLastRunCache(TimeRecordingCacheBase):
|
|
"""
|
|
Used to record the last time that the dump_to_neo4j command was run on a
|
|
course.
|
|
"""
|
|
cache_prefix = u'dump_to_neo4j_command_last_run'
|