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.
71 lines
1.9 KiB
Python
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)
|