42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
"""
|
|
Courseware services.
|
|
"""
|
|
|
|
|
|
import json
|
|
|
|
from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
|
|
|
|
from lms.djangoapps.courseware.models import StudentModule
|
|
from common.djangoapps.student.models import get_user_by_username_or_email
|
|
|
|
|
|
class UserStateService:
|
|
"""
|
|
User state service to make state accessible in runtime.
|
|
"""
|
|
|
|
def get_state_as_dict(self, username_or_email, block_id):
|
|
"""
|
|
Return dict containing user state for a given set of parameters.
|
|
|
|
Arguments:
|
|
username_or_email: username or email of the user for whom the data is being retrieved
|
|
block_id: string/object representation of the block whose user state is required
|
|
|
|
Returns:
|
|
Returns a dict containing user state, if present, else empty.
|
|
"""
|
|
try:
|
|
user = get_user_by_username_or_email(username_or_email=username_or_email)
|
|
except User.DoesNotExist:
|
|
return {}
|
|
try:
|
|
student_module = StudentModule.objects.get(
|
|
student=user,
|
|
module_state_key=block_id
|
|
)
|
|
return json.loads(student_module.state)
|
|
except StudentModule.DoesNotExist:
|
|
return {}
|