Files
edx-platform/openedx/core/djangoapps/agreements/api.py
Simon Chen 16cffd206f Revert "[FEAT]: Add mem caching to the API to create and retrieve IntegritySignature" (#27936)
This reverts commit c6192b8b40656c44ba0a89cdd569fb0c0e4f87c4.
The caching does little to save performance and in the case of whole
course interation, it has a netgative performance impact.
2021-06-11 13:59:20 -04:00

71 lines
1.9 KiB
Python

"""
Agreements API
"""
import logging
from django.contrib.auth import get_user_model
from django.core.exceptions import ObjectDoesNotExist
from opaque_keys.edx.keys import CourseKey
from openedx.core.djangoapps.agreements.models import IntegritySignature
log = logging.getLogger(__name__)
User = get_user_model()
def create_integrity_signature(username, course_id):
"""
Create an integrity signature. If a signature already exists, do not create a new one.
Arguments:
* username (str)
* course_id (str)
Returns:
* IntegritySignature object
"""
user = User.objects.get(username=username)
course_key = CourseKey.from_string(course_id)
signature, created = IntegritySignature.objects.get_or_create(user=user, course_key=course_key)
if not created:
log.warning(
'Integrity signature already exists for user_id={user_id} and '
'course_id={course_id}'.format(user_id=user.id, course_id=course_id)
)
return signature
def get_integrity_signature(username, course_id):
"""
Get an integrity signature.
Arguments:
* username (str)
* course_id (str)
Returns:
* An IntegritySignature object, or None if one does not exist for the
user + course combination.
"""
user = User.objects.get(username=username)
course_key = CourseKey.from_string(course_id)
try:
return IntegritySignature.objects.get(user=user, course_key=course_key)
except ObjectDoesNotExist:
return None
def get_integrity_signatures_for_course(course_id):
"""
Get all integrity signatures for a given course.
Arguments:
* course_id (str)
Returns:
* QuerySet of IntegritySignature objects (can be empty).
"""
course_key = CourseKey.from_string(course_id)
return IntegritySignature.objects.filter(course_key=course_key)