diff --git a/cms/envs/common.py b/cms/envs/common.py index 92cc46a843..35109ffb03 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -215,6 +215,13 @@ from lms.envs.common import ( COURSE_KEY_PATTERN, COURSE_ID_PATTERN, USAGE_KEY_PATTERN, ASSET_KEY_PATTERN ) + +######################### CSRF ######################################### + +# Forwards-compatibility with Django 1.7 +CSRF_COOKIE_AGE = 60 * 60 * 24 * 7 * 52 + + #################### CAPA External Code Evaluation ############################# XQUEUE_INTERFACE = { 'url': 'http://localhost:8888', diff --git a/common/djangoapps/cors_csrf/decorators.py b/common/djangoapps/cors_csrf/decorators.py new file mode 100644 index 0000000000..db3913ceb7 --- /dev/null +++ b/common/djangoapps/cors_csrf/decorators.py @@ -0,0 +1,28 @@ +"""Decorators for cross-domain CSRF. """ +from django.views.decorators.csrf import ensure_csrf_cookie + + +def ensure_csrf_cookie_cross_domain(func): + """View decorator for sending a cross-domain CSRF cookie. + + This works like Django's `@ensure_csrf_cookie`, but + will also set an additional CSRF cookie for use + cross-domain. + + Arguments: + func (function): The view function to decorate. + + """ + def _inner(*args, **kwargs): # pylint: disable=missing-docstring + if args: + # Set the META `CROSS_DOMAIN_CSRF_COOKIE_USED` flag so + # that `CsrfCrossDomainCookieMiddleware` knows to set + # the cross-domain version of the CSRF cookie. + request = args[0] + request.META['CROSS_DOMAIN_CSRF_COOKIE_USED'] = True + + # Decorate the request with Django's + # `ensure_csrf_cookie` to ensure that the usual + # CSRF cookie gets set. + return ensure_csrf_cookie(func)(*args, **kwargs) + return _inner diff --git a/common/djangoapps/cors_csrf/middleware.py b/common/djangoapps/cors_csrf/middleware.py index c4541d5549..920acaeea9 100644 --- a/common/djangoapps/cors_csrf/middleware.py +++ b/common/djangoapps/cors_csrf/middleware.py @@ -1,6 +1,10 @@ """ Middleware for handling CSRF checks with CORS requests + +CSRF and referrer domain checks +------------------------------- + When processing HTTPS requests, the default CSRF middleware checks that the referer domain and protocol is the same as the request's domain and protocol. This is meant to avoid a type of attack for sites which serve their content with both HTTP and HTTPS, @@ -15,6 +19,27 @@ middle attack vector. We thus do the CSRF check of requests coming from an authorized CORS host separately in this middleware, applying the same protections as the default CSRF middleware, but without the referrer check, when both the request and the referer use HTTPS. + + +CSRF cookie domains +------------------- + +In addition, in order to make cross-domain AJAX calls to CSRF-protected end-points, +we need to send the CSRF token in the HTTP header of the request. + +The simple way to do this would be to set the CSRF_COOKIE_DOMAIN to ".edx.org", +but unfortunately this can cause problems. For example, suppose that +"first.edx.org" sets the cookie with domain ".edx.org", but "second.edx.org" +sets a cookie with domain "second.edx.org". In this case, the browser +would have two different CSRF tokens set (one for each cookie domain), +which can cause non-deterministic failures depending on which cookie +is sent first. + +For this reason, we add a second cookie that (a) has the domain set to ".edx.org", +but (b) does NOT have the same name as the CSRF_COOKIE_NAME. Clients making +cross-domain requests can use this cookie instead of the subdomain-specific +CSRF cookie. + """ import logging @@ -22,35 +47,91 @@ import urlparse from django.conf import settings from django.middleware.csrf import CsrfViewMiddleware +from django.core.exceptions import MiddlewareNotUsed, ImproperlyConfigured log = logging.getLogger(__name__) +def is_cross_domain_request_allowed(request): + """Check whether we should allow the cross-domain request. + + We allow a cross-domain request only if: + + 1) The request is made securely and the referer has "https://" as the protocol. + 2) The referer domain has been whitelisted. + + Arguments: + request (HttpRequest) + + Returns: + bool + + """ + referer = request.META.get('HTTP_REFERER') + referer_parts = urlparse.urlparse(referer) if referer else None + referer_hostname = referer_parts.hostname if referer_parts is not None else None + + # Use CORS_ALLOW_INSECURE *only* for development and testing environments; + # it should never be enabled in production. + if not getattr(settings, 'CORS_ALLOW_INSECURE', False): + if not request.is_secure(): + log.debug( + u"Request is not secure, so we cannot send the CSRF token. " + u"For testing purposes, you can disable this check by setting " + u"`CORS_ALLOW_INSECURE` to True in the settings" + ) + return False + + if not referer: + log.debug(u"No referer provided over a secure connection, so we cannot check the protocol.") + return False + + if not referer_parts.scheme == 'https': + log.debug(u"Referer '%s' must have the scheme 'https'") + return False + + domain_is_whitelisted = ( + getattr(settings, 'CORS_ORIGIN_ALLOW_ALL', False) or + referer_hostname in getattr(settings, 'CORS_ORIGIN_WHITELIST', []) + ) + if not domain_is_whitelisted: + if referer_hostname is None: + # If no referer is specified, we can't check if it's a cross-domain + # request or not. + log.debug(u"Referrer hostname is `None`, so it is not on the whitelist.") + elif referer_hostname != request.get_host(): + log.warning( + ( + u"Domain '%s' is not on the cross domain whitelist. " + u"Add the domain to `CORS_ORIGIN_WHITELIST` or set " + u"`CORS_ORIGIN_ALLOW_ALL` to True in the settings." + ), referer_hostname + ) + else: + log.debug( + ( + u"Domain '%s' is the same as the hostname in the request, " + u"so we are not going to treat it as a cross-domain request." + ), referer_hostname + ) + return False + + return True + + class CorsCSRFMiddleware(CsrfViewMiddleware): """ Middleware for handling CSRF checks with CORS requests """ - def is_enabled(self, request): - """ - Override the `is_enabled()` method to allow cross-domain HTTPS requests - """ + def __init__(self): + """Disable the middleware if the feature flag is disabled. """ if not settings.FEATURES.get('ENABLE_CORS_HEADERS'): - return False - - referer = request.META.get('HTTP_REFERER') - if not referer: - return False - referer_parts = urlparse.urlparse(referer) - - if referer_parts.hostname not in getattr(settings, 'CORS_ORIGIN_WHITELIST', []): - return False - if not request.is_secure() or referer_parts.scheme != 'https': - return False - - return True + raise MiddlewareNotUsed() def process_view(self, request, callback, callback_args, callback_kwargs): - if not self.is_enabled(request): + """Skip the usual CSRF referer check if this is an allowed cross-domain request. """ + if not is_cross_domain_request_allowed(request): + log.debug("Could not disable CSRF middleware referer check for cross-domain request.") return is_secure_default = request.is_secure @@ -65,3 +146,77 @@ class CorsCSRFMiddleware(CsrfViewMiddleware): res = super(CorsCSRFMiddleware, self).process_view(request, callback, callback_args, callback_kwargs) request.is_secure = is_secure_default return res + + +class CsrfCrossDomainCookieMiddleware(object): + """Set an additional "cross-domain" CSRF cookie. + + Usage: + + 1) Decorate a view with `@ensure_csrf_cookie_cross_domain`. + 2) Set `CROSS_DOMAIN_CSRF_COOKIE_NAME` and `CROSS_DOMAIN_CSRF_COOKIE_DOMAIN` + in settings. + 3) Add the domain to `CORS_ORIGIN_WHITELIST` + 4) Enable `FEATURES['ENABLE_CROSS_DOMAIN_CSRF_COOKIE']` + + For testing, it is often easier to relax the security checks by setting: + * `CORS_ALLOW_INSECURE = True` + * `CORS_ORIGIN_ALLOW_ALL = True` + + """ + + def __init__(self): + """Disable the middleware if the feature is not enabled. """ + if not settings.FEATURES.get('ENABLE_CROSS_DOMAIN_CSRF_COOKIE'): + raise MiddlewareNotUsed() + + if not getattr(settings, 'CROSS_DOMAIN_CSRF_COOKIE_NAME', ''): + raise ImproperlyConfigured( + "You must set `CROSS_DOMAIN_CSRF_COOKIE_NAME` when " + "`FEATURES['ENABLE_CROSS_DOMAIN_CSRF_COOKIE']` is True." + ) + + if not getattr(settings, 'CROSS_DOMAIN_CSRF_COOKIE_DOMAIN', ''): + raise ImproperlyConfigured( + "You must set `CROSS_DOMAIN_CSRF_COOKIE_DOMAIN` when " + "`FEATURES['ENABLE_CROSS_DOMAIN_CSRF_COOKIE']` is True." + ) + + def process_response(self, request, response): + """Set the cross-domain CSRF cookie. """ + + # Check whether this is a secure request from a domain on our whitelist. + if not is_cross_domain_request_allowed(request): + log.debug("Could not set cross-domain CSRF cookie.") + return response + + # Check whether (a) the CSRF middleware has already set a cookie, and + # (b) this is a view decorated with `@ensure_cross_domain_csrf_cookie` + # If so, we can send the cross-domain CSRF cookie. + should_set_cookie = ( + request.META.get('CROSS_DOMAIN_CSRF_COOKIE_USED', False) and + request.META.get('CSRF_COOKIE_USED', False) and + request.META.get('CSRF_COOKIE') is not None + ) + + if should_set_cookie: + # This is very similar to the code in Django's CSRF middleware + # implementation, with two exceptions: + # 1) We change the cookie name and domain so it can be used cross-domain. + # 2) We always set "secure" to True, so that the CSRF token must be + # sent over a secure connection. + response.set_cookie( + settings.CROSS_DOMAIN_CSRF_COOKIE_NAME, + request.META['CSRF_COOKIE'], + max_age=settings.CSRF_COOKIE_AGE, + domain=settings.CROSS_DOMAIN_CSRF_COOKIE_DOMAIN, + path=settings.CSRF_COOKIE_PATH, + secure=True + ) + log.debug( + "Set cross-domain CSRF cookie '%s' for domain '%s'", + settings.CROSS_DOMAIN_CSRF_COOKIE_NAME, + settings.CROSS_DOMAIN_CSRF_COOKIE_DOMAIN + ) + + return response diff --git a/common/djangoapps/cors_csrf/tests.py b/common/djangoapps/cors_csrf/tests.py deleted file mode 100644 index 7e6c4f4a36..0000000000 --- a/common/djangoapps/cors_csrf/tests.py +++ /dev/null @@ -1,101 +0,0 @@ -""" -Tests for the CORS CSRF middleware -""" - -from mock import patch, Mock - -from django.test import TestCase -from django.test.utils import override_settings -from django.middleware.csrf import CsrfViewMiddleware - -from cors_csrf.middleware import CorsCSRFMiddleware - - -SENTINEL = object() - - -class TestCorsMiddlewareProcessRequest(TestCase): - """ - Test processing a request through the middleware - """ - def get_request(self, is_secure, http_referer): - """ - Build a test request - """ - request = Mock() - request.META = {'HTTP_REFERER': http_referer} - request.is_secure = lambda: is_secure - return request - - def setUp(self): - self.middleware = CorsCSRFMiddleware() - - def check_not_enabled(self, request): - """ - Check that the middleware does NOT process the provided request - """ - with patch.object(CsrfViewMiddleware, 'process_view') as mock_method: - res = self.middleware.process_view(request, None, None, None) - - self.assertIsNone(res) - self.assertFalse(mock_method.called) - - def check_enabled(self, request): - """ - Check that the middleware does process the provided request - """ - def cb_check_req_is_secure_false(request, callback, args, kwargs): - """ - Check that the request doesn't pass (yet) the `is_secure()` test - """ - self.assertFalse(request.is_secure()) - return SENTINEL - - with patch.object(CsrfViewMiddleware, 'process_view') as mock_method: - mock_method.side_effect = cb_check_req_is_secure_false - res = self.middleware.process_view(request, None, None, None) - - self.assertIs(res, SENTINEL) - self.assertTrue(request.is_secure()) - - @override_settings(FEATURES={'ENABLE_CORS_HEADERS': True}, - CORS_ORIGIN_WHITELIST=['foo.com']) - def test_enabled(self): - request = self.get_request(is_secure=True, - http_referer='https://foo.com/bar') - self.check_enabled(request) - - @override_settings(FEATURES={'ENABLE_CORS_HEADERS': False}, - CORS_ORIGIN_WHITELIST=['foo.com']) - def test_disabled_no_cors_headers(self): - request = self.get_request(is_secure=True, - http_referer='https://foo.com/bar') - self.check_not_enabled(request) - - @override_settings(FEATURES={'ENABLE_CORS_HEADERS': True}, - CORS_ORIGIN_WHITELIST=['bar.com']) - def test_disabled_wrong_cors_domain(self): - request = self.get_request(is_secure=True, - http_referer='https://foo.com/bar') - self.check_not_enabled(request) - - @override_settings(FEATURES={'ENABLE_CORS_HEADERS': True}, - CORS_ORIGIN_WHITELIST=['foo.com']) - def test_disabled_wrong_cors_domain_reversed(self): - request = self.get_request(is_secure=True, - http_referer='https://bar.com/bar') - self.check_not_enabled(request) - - @override_settings(FEATURES={'ENABLE_CORS_HEADERS': True}, - CORS_ORIGIN_WHITELIST=['foo.com']) - def test_disabled_http_request(self): - request = self.get_request(is_secure=False, - http_referer='https://foo.com/bar') - self.check_not_enabled(request) - - @override_settings(FEATURES={'ENABLE_CORS_HEADERS': True}, - CORS_ORIGIN_WHITELIST=['foo.com']) - def test_disabled_http_referer(self): - request = self.get_request(is_secure=True, - http_referer='http://foo.com/bar') - self.check_not_enabled(request) diff --git a/common/djangoapps/cors_csrf/tests/__init__.py b/common/djangoapps/cors_csrf/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/common/djangoapps/cors_csrf/tests/test_decorators.py b/common/djangoapps/cors_csrf/tests/test_decorators.py new file mode 100644 index 0000000000..a9452158c2 --- /dev/null +++ b/common/djangoapps/cors_csrf/tests/test_decorators.py @@ -0,0 +1,24 @@ +"""Tests for cross-domain CSRF decorators. """ +import json +import mock +from django.http import HttpResponse +from django.test import TestCase +from cors_csrf.decorators import ensure_csrf_cookie_cross_domain + + +def fake_view(request): + """Fake view that returns the request META as a JSON-encoded string. """ + return HttpResponse(json.dumps(request.META)) + + +class TestEnsureCsrfCookieCrossDomain(TestCase): + """Test the `ensucre_csrf_cookie_cross_domain` decorator. """ + + def test_ensure_csrf_cookie_cross_domain(self): + request = mock.Mock() + request.META = {} + wrapped_view = ensure_csrf_cookie_cross_domain(fake_view) + response = wrapped_view(request) + response_meta = json.loads(response.content) + self.assertEqual(response_meta['CROSS_DOMAIN_CSRF_COOKIE_USED'], True) + self.assertEqual(response_meta['CSRF_COOKIE_USED'], True) diff --git a/common/djangoapps/cors_csrf/tests/test_middleware.py b/common/djangoapps/cors_csrf/tests/test_middleware.py new file mode 100644 index 0000000000..bfc4f0817f --- /dev/null +++ b/common/djangoapps/cors_csrf/tests/test_middleware.py @@ -0,0 +1,275 @@ +""" +Tests for the CORS CSRF middleware +""" + +from mock import patch, Mock +import ddt + +from django.test import TestCase +from django.test.utils import override_settings +from django.core.exceptions import MiddlewareNotUsed, ImproperlyConfigured +from django.http import HttpResponse +from django.middleware.csrf import CsrfViewMiddleware + +from cors_csrf.middleware import CorsCSRFMiddleware, CsrfCrossDomainCookieMiddleware + + +SENTINEL = object() + + +class TestCorsMiddlewareProcessRequest(TestCase): + """ + Test processing a request through the middleware + """ + def get_request(self, is_secure, http_referer): + """ + Build a test request + """ + request = Mock() + request.META = {'HTTP_REFERER': http_referer} + request.is_secure = lambda: is_secure + return request + + @override_settings(FEATURES={'ENABLE_CORS_HEADERS': True}) + def setUp(self): + super(TestCorsMiddlewareProcessRequest, self).setUp() + self.middleware = CorsCSRFMiddleware() + + def check_not_enabled(self, request): + """ + Check that the middleware does NOT process the provided request + """ + with patch.object(CsrfViewMiddleware, 'process_view') as mock_method: + res = self.middleware.process_view(request, None, None, None) + + self.assertIsNone(res) + self.assertFalse(mock_method.called) + + def check_enabled(self, request): + """ + Check that the middleware does process the provided request + """ + def cb_check_req_is_secure_false(request, callback, args, kwargs): + """ + Check that the request doesn't pass (yet) the `is_secure()` test + """ + self.assertFalse(request.is_secure()) + return SENTINEL + + with patch.object(CsrfViewMiddleware, 'process_view') as mock_method: + mock_method.side_effect = cb_check_req_is_secure_false + res = self.middleware.process_view(request, None, None, None) + + self.assertIs(res, SENTINEL) + self.assertTrue(request.is_secure()) + + @override_settings(CORS_ORIGIN_WHITELIST=['foo.com']) + def test_enabled(self): + request = self.get_request(is_secure=True, http_referer='https://foo.com/bar') + self.check_enabled(request) + + @override_settings( + FEATURES={'ENABLE_CORS_HEADERS': False}, + CORS_ORIGIN_WHITELIST=['foo.com'] + ) + def test_disabled_no_cors_headers(self): + with self.assertRaises(MiddlewareNotUsed): + CorsCSRFMiddleware() + + @override_settings(CORS_ORIGIN_WHITELIST=['bar.com']) + def test_disabled_wrong_cors_domain(self): + request = self.get_request(is_secure=True, http_referer='https://foo.com/bar') + self.check_not_enabled(request) + + @override_settings(CORS_ORIGIN_WHITELIST=['foo.com']) + def test_disabled_wrong_cors_domain_reversed(self): + request = self.get_request(is_secure=True, http_referer='https://bar.com/bar') + self.check_not_enabled(request) + + @override_settings(CORS_ORIGIN_WHITELIST=['foo.com']) + def test_disabled_http_request(self): + request = self.get_request(is_secure=False, http_referer='https://foo.com/bar') + self.check_not_enabled(request) + + @override_settings(CORS_ORIGIN_WHITELIST=['foo.com']) + def test_disabled_http_referer(self): + request = self.get_request(is_secure=True, http_referer='http://foo.com/bar') + self.check_not_enabled(request) + + +@ddt.ddt +class TestCsrfCrossDomainCookieMiddleware(TestCase): + """Tests for `CsrfCrossDomainCookieMiddleware`. """ + + REFERER = 'https://www.example.com' + COOKIE_NAME = 'shared-csrftoken' + COOKIE_VALUE = 'abcd123' + COOKIE_DOMAIN = '.edx.org' + + @override_settings( + FEATURES={'ENABLE_CROSS_DOMAIN_CSRF_COOKIE': True}, + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN + ) + def setUp(self): + super(TestCsrfCrossDomainCookieMiddleware, self).setUp() + self.middleware = CsrfCrossDomainCookieMiddleware() + + @override_settings(FEATURES={'ENABLE_CROSS_DOMAIN_CSRF_COOKIE': False}) + def test_disabled_by_feature_flag(self): + with self.assertRaises(MiddlewareNotUsed): + CsrfCrossDomainCookieMiddleware() + + @ddt.data('CROSS_DOMAIN_CSRF_COOKIE_NAME', 'CROSS_DOMAIN_CSRF_COOKIE_DOMAIN') + def test_improperly_configured(self, missing_setting): + settings = { + 'FEATURES': {'ENABLE_CROSS_DOMAIN_CSRF_COOKIE': True}, + 'CROSS_DOMAIN_CSRF_COOKIE_NAME': self.COOKIE_NAME, + 'CROSS_DOMAIN_CSRF_COOKIE_DOMAIN': self.COOKIE_DOMAIN + } + del settings[missing_setting] + + with override_settings(**settings): + with self.assertRaises(ImproperlyConfigured): + CsrfCrossDomainCookieMiddleware() + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_ALLOW_ALL=True + ) + def test_skip_if_not_secure(self): + response = self._get_response(is_secure=False) + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_ALLOW_ALL=True + ) + def test_skip_if_not_sending_csrf_token(self): + response = self._get_response(csrf_cookie_used=False) + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_ALLOW_ALL=True + ) + def test_skip_if_not_cross_domain_decorator(self): + response = self._get_response(cross_domain_decorator=False) + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_WHITELIST=['other.example.com'] + ) + def test_skip_if_referer_not_whitelisted(self): + response = self._get_response() + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN + ) + def test_skip_if_not_cross_domain(self): + response = self._get_response( + referer="https://courses.edx.org/foo", + host="courses.edx.org" + ) + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_ALLOW_ALL=True + ) + def test_skip_if_no_referer(self): + response = self._get_response(delete_referer=True) + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_ALLOW_ALL=True + ) + def test_skip_if_referer_not_https(self): + response = self._get_response(referer="http://www.example.com") + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_ALLOW_ALL=True + ) + def test_skip_if_referer_no_protocol(self): + response = self._get_response(referer="example.com") + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ALLOW_INSECURE=True + ) + def test_skip_if_no_referer_insecure(self): + response = self._get_response(delete_referer=True) + self._assert_cookie_sent(response, False) + + @override_settings( + CROSS_DOMAIN_CSRF_COOKIE_NAME=COOKIE_NAME, + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN=COOKIE_DOMAIN, + CORS_ORIGIN_WHITELIST=['www.example.com'] + ) + def test_set_cross_domain_cookie(self): + response = self._get_response() + self._assert_cookie_sent(response, True) + + def _get_response(self, + is_secure=True, + csrf_cookie_used=True, + cross_domain_decorator=True, + referer=None, + host=None, + delete_referer=False): + """Process a request using the middleware. """ + request = Mock() + request.META = { + 'HTTP_REFERER': ( + referer if referer is not None + else self.REFERER + ) + } + request.is_secure = lambda: is_secure + + if host is not None: + request.get_host = lambda: host + + if delete_referer: + del request.META['HTTP_REFERER'] + + if csrf_cookie_used: + request.META['CSRF_COOKIE_USED'] = True + request.META['CSRF_COOKIE'] = self.COOKIE_VALUE + + if cross_domain_decorator: + request.META['CROSS_DOMAIN_CSRF_COOKIE_USED'] = True + + return self.middleware.process_response(request, HttpResponse()) + + def _assert_cookie_sent(self, response, is_set): + """Check that the cross-domain CSRF cookie was sent. """ + if is_set: + self.assertIn(self.COOKIE_NAME, response.cookies) + cookie_header = str(response.cookies[self.COOKIE_NAME]) + + expected = 'Set-Cookie: {name}={value}; Domain={domain};'.format( + name=self.COOKIE_NAME, + value=self.COOKIE_VALUE, + domain=self.COOKIE_DOMAIN + ) + self.assertIn(expected, cookie_header) + self.assertIn('Max-Age=31449600; Path=/; secure', cookie_header) + + else: + self.assertNotIn(self.COOKIE_NAME, response.cookies) diff --git a/common/djangoapps/enrollment/views.py b/common/djangoapps/enrollment/views.py index bee302c4a4..e2bb848d2c 100644 --- a/common/djangoapps/enrollment/views.py +++ b/common/djangoapps/enrollment/views.py @@ -4,25 +4,24 @@ consist primarily of authentication, request validation, and serialization. """ from ipware.ip import get_ip -from django.conf import settings +from django.utils.decorators import method_decorator from opaque_keys import InvalidKeyError -from opaque_keys.edx.locator import CourseLocator from openedx.core.djangoapps.user_api import api as user_api from openedx.core.lib.api.permissions import ApiKeyHeaderPermission, ApiKeyHeaderPermissionIsAuthenticated from rest_framework import status -from rest_framework import permissions from rest_framework.response import Response from rest_framework.throttling import UserRateThrottle from rest_framework.views import APIView from opaque_keys.edx.keys import CourseKey -from opaque_keys import InvalidKeyError -from enrollment import api -from enrollment.errors import ( - CourseNotFoundError, CourseEnrollmentError, CourseModeNotFoundError, CourseEnrollmentExistsError -) from embargo import api as embargo_api +from cors_csrf.decorators import ensure_csrf_cookie_cross_domain from util.authentication import SessionAuthenticationAllowInactiveUser, OAuth2AuthenticationAllowInactiveUser from util.disable_rate_limit import can_disable_rate_limit +from enrollment import api +from enrollment.errors import ( + CourseNotFoundError, CourseEnrollmentError, + CourseModeNotFoundError, CourseEnrollmentExistsError +) class EnrollmentUserThrottle(UserRateThrottle): @@ -96,6 +95,10 @@ class EnrollmentView(APIView, ApiKeyPermissionMixIn): permission_classes = ApiKeyHeaderPermissionIsAuthenticated, throttle_classes = EnrollmentUserThrottle, + # Since the course about page on the marketing site + # uses this API to auto-enroll users, we need to support + # cross-domain CSRF. + @method_decorator(ensure_csrf_cookie_cross_domain) def get(self, request, course_id=None, user=None): """Create, read, or update enrollment information for a user. @@ -268,6 +271,10 @@ class EnrollmentListView(APIView, ApiKeyPermissionMixIn): permission_classes = ApiKeyHeaderPermissionIsAuthenticated, throttle_classes = EnrollmentUserThrottle, + # Since the course about page on the marketing site + # uses this API to auto-enroll users, we need to support + # cross-domain CSRF. + @method_decorator(ensure_csrf_cookie_cross_domain) def get(self, request): """ Gets a list of all course enrollments for the currently logged in user. diff --git a/common/test/db_cache/bok_choy_data.json b/common/test/db_cache/bok_choy_data.json index c112ae95e6..054402a541 100644 --- a/common/test/db_cache/bok_choy_data.json +++ b/common/test/db_cache/bok_choy_data.json @@ -1 +1 @@ -[{"pk": 62, "model": "contenttypes.contenttype", "fields": {"model": "accesstoken", "name": "access token", "app_label": "oauth2"}}, {"pk": 131, "model": "contenttypes.contenttype", "fields": {"model": "aiclassifier", "name": "ai classifier", "app_label": "assessment"}}, {"pk": 130, "model": "contenttypes.contenttype", "fields": {"model": "aiclassifierset", "name": "ai classifier set", "app_label": "assessment"}}, {"pk": 133, "model": "contenttypes.contenttype", "fields": {"model": "aigradingworkflow", "name": "ai grading workflow", "app_label": "assessment"}}, {"pk": 132, "model": "contenttypes.contenttype", "fields": {"model": "aitrainingworkflow", "name": "ai training workflow", "app_label": "assessment"}}, {"pk": 33, "model": "contenttypes.contenttype", "fields": {"model": "anonymoususerid", "name": "anonymous user id", "app_label": "student"}}, {"pk": 112, "model": "contenttypes.contenttype", "fields": {"model": "answer", "name": "answer", "app_label": "mentoring"}}, {"pk": 65, "model": "contenttypes.contenttype", "fields": {"model": "article", "name": "article", "app_label": "wiki"}}, {"pk": 66, "model": "contenttypes.contenttype", "fields": {"model": "articleforobject", "name": "Article for object", "app_label": "wiki"}}, {"pk": 69, "model": "contenttypes.contenttype", "fields": {"model": "articleplugin", "name": "article plugin", "app_label": "wiki"}}, {"pk": 67, "model": "contenttypes.contenttype", "fields": {"model": "articlerevision", "name": "article revision", "app_label": "wiki"}}, {"pk": 74, "model": "contenttypes.contenttype", "fields": {"model": "articlesubscription", "name": "article subscription", "app_label": "wiki"}}, {"pk": 121, "model": "contenttypes.contenttype", "fields": {"model": "assessment", "name": "assessment", "app_label": "assessment"}}, {"pk": 124, "model": "contenttypes.contenttype", "fields": {"model": "assessmentfeedback", "name": "assessment feedback", "app_label": "assessment"}}, {"pk": 123, "model": "contenttypes.contenttype", "fields": {"model": "assessmentfeedbackoption", "name": "assessment feedback option", "app_label": "assessment"}}, {"pk": 122, "model": "contenttypes.contenttype", "fields": {"model": "assessmentpart", "name": "assessment part", "app_label": "assessment"}}, {"pk": 134, "model": "contenttypes.contenttype", "fields": {"model": "assessmentworkflow", "name": "assessment workflow", "app_label": "workflow"}}, {"pk": 135, "model": "contenttypes.contenttype", "fields": {"model": "assessmentworkflowstep", "name": "assessment workflow step", "app_label": "workflow"}}, {"pk": 19, "model": "contenttypes.contenttype", "fields": {"model": "association", "name": "association", "app_label": "django_openid_auth"}}, {"pk": 24, "model": "contenttypes.contenttype", "fields": {"model": "association", "name": "association", "app_label": "default"}}, {"pk": 97, "model": "contenttypes.contenttype", "fields": {"model": "certificateitem", "name": "certificate item", "app_label": "shoppingcart"}}, {"pk": 48, "model": "contenttypes.contenttype", "fields": {"model": "certificatewhitelist", "name": "certificate whitelist", "app_label": "certificates"}}, {"pk": 60, "model": "contenttypes.contenttype", "fields": {"model": "client", "name": "client", "app_label": "oauth2"}}, {"pk": 25, "model": "contenttypes.contenttype", "fields": {"model": "code", "name": "code", "app_label": "default"}}, {"pk": 4, "model": "contenttypes.contenttype", "fields": {"model": "contenttype", "name": "content type", "app_label": "contenttypes"}}, {"pk": 91, "model": "contenttypes.contenttype", "fields": {"model": "coupon", "name": "coupon", "app_label": "shoppingcart"}}, {"pk": 92, "model": "contenttypes.contenttype", "fields": {"model": "couponredemption", "name": "coupon redemption", "app_label": "shoppingcart"}}, {"pk": 45, "model": "contenttypes.contenttype", "fields": {"model": "courseaccessrole", "name": "course access role", "app_label": "student"}}, {"pk": 58, "model": "contenttypes.contenttype", "fields": {"model": "courseauthorization", "name": "course authorization", "app_label": "bulk_email"}}, {"pk": 144, "model": "contenttypes.contenttype", "fields": {"model": "coursecontentmilestone", "name": "course content milestone", "app_label": "milestones"}}, {"pk": 147, "model": "contenttypes.contenttype", "fields": {"model": "coursecreator", "name": "course creator", "app_label": "course_creators"}}, {"pk": 55, "model": "contenttypes.contenttype", "fields": {"model": "courseemail", "name": "course email", "app_label": "bulk_email"}}, {"pk": 57, "model": "contenttypes.contenttype", "fields": {"model": "courseemailtemplate", "name": "course email template", "app_label": "bulk_email"}}, {"pk": 43, "model": "contenttypes.contenttype", "fields": {"model": "courseenrollment", "name": "course enrollment", "app_label": "student"}}, {"pk": 44, "model": "contenttypes.contenttype", "fields": {"model": "courseenrollmentallowed", "name": "course enrollment allowed", "app_label": "student"}}, {"pk": 143, "model": "contenttypes.contenttype", "fields": {"model": "coursemilestone", "name": "course milestone", "app_label": "milestones"}}, {"pk": 100, "model": "contenttypes.contenttype", "fields": {"model": "coursemode", "name": "course mode", "app_label": "course_modes"}}, {"pk": 101, "model": "contenttypes.contenttype", "fields": {"model": "coursemodesarchive", "name": "course modes archive", "app_label": "course_modes"}}, {"pk": 94, "model": "contenttypes.contenttype", "fields": {"model": "courseregcodeitem", "name": "course reg code item", "app_label": "shoppingcart"}}, {"pk": 95, "model": "contenttypes.contenttype", "fields": {"model": "courseregcodeitemannotation", "name": "course reg code item annotation", "app_label": "shoppingcart"}}, {"pk": 89, "model": "contenttypes.contenttype", "fields": {"model": "courseregistrationcode", "name": "course registration code", "app_label": "shoppingcart"}}, {"pk": 108, "model": "contenttypes.contenttype", "fields": {"model": "coursererunstate", "name": "course rerun state", "app_label": "course_action_state"}}, {"pk": 51, "model": "contenttypes.contenttype", "fields": {"model": "coursesoftware", "name": "course software", "app_label": "licenses"}}, {"pk": 53, "model": "contenttypes.contenttype", "fields": {"model": "courseusergroup", "name": "course user group", "app_label": "course_groups"}}, {"pk": 54, "model": "contenttypes.contenttype", "fields": {"model": "courseusergrouppartitiongroup", "name": "course user group partition group", "app_label": "course_groups"}}, {"pk": 138, "model": "contenttypes.contenttype", "fields": {"model": "coursevideo", "name": "course video", "app_label": "edxval"}}, {"pk": 119, "model": "contenttypes.contenttype", "fields": {"model": "criterion", "name": "criterion", "app_label": "assessment"}}, {"pk": 120, "model": "contenttypes.contenttype", "fields": {"model": "criterionoption", "name": "criterion option", "app_label": "assessment"}}, {"pk": 10, "model": "contenttypes.contenttype", "fields": {"model": "crontabschedule", "name": "crontab", "app_label": "djcelery"}}, {"pk": 103, "model": "contenttypes.contenttype", "fields": {"model": "darklangconfig", "name": "dark lang config", "app_label": "dark_lang"}}, {"pk": 46, "model": "contenttypes.contenttype", "fields": {"model": "dashboardconfiguration", "name": "dashboard configuration", "app_label": "student"}}, {"pk": 99, "model": "contenttypes.contenttype", "fields": {"model": "donation", "name": "donation", "app_label": "shoppingcart"}}, {"pk": 98, "model": "contenttypes.contenttype", "fields": {"model": "donationconfiguration", "name": "donation configuration", "app_label": "shoppingcart"}}, {"pk": 105, "model": "contenttypes.contenttype", "fields": {"model": "embargoedcourse", "name": "embargoed course", "app_label": "embargo"}}, {"pk": 106, "model": "contenttypes.contenttype", "fields": {"model": "embargoedstate", "name": "embargoed state", "app_label": "embargo"}}, {"pk": 139, "model": "contenttypes.contenttype", "fields": {"model": "encodedvideo", "name": "encoded video", "app_label": "edxval"}}, {"pk": 59, "model": "contenttypes.contenttype", "fields": {"model": "externalauthmap", "name": "external auth map", "app_label": "external_auth"}}, {"pk": 49, "model": "contenttypes.contenttype", "fields": {"model": "generatedcertificate", "name": "generated certificate", "app_label": "certificates"}}, {"pk": 61, "model": "contenttypes.contenttype", "fields": {"model": "grant", "name": "grant", "app_label": "oauth2"}}, {"pk": 2, "model": "contenttypes.contenttype", "fields": {"model": "group", "name": "group", "app_label": "auth"}}, {"pk": 50, "model": "contenttypes.contenttype", "fields": {"model": "instructortask", "name": "instructor task", "app_label": "instructor_task"}}, {"pk": 9, "model": "contenttypes.contenttype", "fields": {"model": "intervalschedule", "name": "interval", "app_label": "djcelery"}}, {"pk": 88, "model": "contenttypes.contenttype", "fields": {"model": "invoice", "name": "invoice", "app_label": "shoppingcart"}}, {"pk": 107, "model": "contenttypes.contenttype", "fields": {"model": "ipfilter", "name": "ip filter", "app_label": "embargo"}}, {"pk": 113, "model": "contenttypes.contenttype", "fields": {"model": "lightchild", "name": "light child", "app_label": "mentoring"}}, {"pk": 21, "model": "contenttypes.contenttype", "fields": {"model": "logentry", "name": "log entry", "app_label": "admin"}}, {"pk": 42, "model": "contenttypes.contenttype", "fields": {"model": "loginfailures", "name": "login failures", "app_label": "student"}}, {"pk": 104, "model": "contenttypes.contenttype", "fields": {"model": "midcoursereverificationwindow", "name": "midcourse reverification window", "app_label": "reverification"}}, {"pk": 15, "model": "contenttypes.contenttype", "fields": {"model": "migrationhistory", "name": "migration history", "app_label": "south"}}, {"pk": 141, "model": "contenttypes.contenttype", "fields": {"model": "milestone", "name": "milestone", "app_label": "milestones"}}, {"pk": 142, "model": "contenttypes.contenttype", "fields": {"model": "milestonerelationshiptype", "name": "milestone relationship type", "app_label": "milestones"}}, {"pk": 18, "model": "contenttypes.contenttype", "fields": {"model": "nonce", "name": "nonce", "app_label": "django_openid_auth"}}, {"pk": 23, "model": "contenttypes.contenttype", "fields": {"model": "nonce", "name": "nonce", "app_label": "default"}}, {"pk": 81, "model": "contenttypes.contenttype", "fields": {"model": "note", "name": "note", "app_label": "notes"}}, {"pk": 78, "model": "contenttypes.contenttype", "fields": {"model": "notification", "name": "notification", "app_label": "django_notify"}}, {"pk": 31, "model": "contenttypes.contenttype", "fields": {"model": "offlinecomputedgrade", "name": "offline computed grade", "app_label": "courseware"}}, {"pk": 32, "model": "contenttypes.contenttype", "fields": {"model": "offlinecomputedgradelog", "name": "offline computed grade log", "app_label": "courseware"}}, {"pk": 56, "model": "contenttypes.contenttype", "fields": {"model": "optout", "name": "optout", "app_label": "bulk_email"}}, {"pk": 86, "model": "contenttypes.contenttype", "fields": {"model": "order", "name": "order", "app_label": "shoppingcart"}}, {"pk": 87, "model": "contenttypes.contenttype", "fields": {"model": "orderitem", "name": "order item", "app_label": "shoppingcart"}}, {"pk": 93, "model": "contenttypes.contenttype", "fields": {"model": "paidcourseregistration", "name": "paid course registration", "app_label": "shoppingcart"}}, {"pk": 96, "model": "contenttypes.contenttype", "fields": {"model": "paidcourseregistrationannotation", "name": "paid course registration annotation", "app_label": "shoppingcart"}}, {"pk": 41, "model": "contenttypes.contenttype", "fields": {"model": "passwordhistory", "name": "password history", "app_label": "student"}}, {"pk": 125, "model": "contenttypes.contenttype", "fields": {"model": "peerworkflow", "name": "peer workflow", "app_label": "assessment"}}, {"pk": 126, "model": "contenttypes.contenttype", "fields": {"model": "peerworkflowitem", "name": "peer workflow item", "app_label": "assessment"}}, {"pk": 40, "model": "contenttypes.contenttype", "fields": {"model": "pendingemailchange", "name": "pending email change", "app_label": "student"}}, {"pk": 39, "model": "contenttypes.contenttype", "fields": {"model": "pendingnamechange", "name": "pending name change", "app_label": "student"}}, {"pk": 12, "model": "contenttypes.contenttype", "fields": {"model": "periodictask", "name": "periodic task", "app_label": "djcelery"}}, {"pk": 11, "model": "contenttypes.contenttype", "fields": {"model": "periodictasks", "name": "periodic tasks", "app_label": "djcelery"}}, {"pk": 1, "model": "contenttypes.contenttype", "fields": {"model": "permission", "name": "permission", "app_label": "auth"}}, {"pk": 136, "model": "contenttypes.contenttype", "fields": {"model": "profile", "name": "profile", "app_label": "edxval"}}, {"pk": 17, "model": "contenttypes.contenttype", "fields": {"model": "psychometricdata", "name": "psychometric data", "app_label": "psychometrics"}}, {"pk": 80, "model": "contenttypes.contenttype", "fields": {"model": "puzzlecomplete", "name": "puzzle complete", "app_label": "foldit"}}, {"pk": 63, "model": "contenttypes.contenttype", "fields": {"model": "refreshtoken", "name": "refresh token", "app_label": "oauth2"}}, {"pk": 38, "model": "contenttypes.contenttype", "fields": {"model": "registration", "name": "registration", "app_label": "student"}}, {"pk": 90, "model": "contenttypes.contenttype", "fields": {"model": "registrationcoderedemption", "name": "registration code redemption", "app_label": "shoppingcart"}}, {"pk": 70, "model": "contenttypes.contenttype", "fields": {"model": "reusableplugin", "name": "reusable plugin", "app_label": "wiki"}}, {"pk": 72, "model": "contenttypes.contenttype", "fields": {"model": "revisionplugin", "name": "revision plugin", "app_label": "wiki"}}, {"pk": 73, "model": "contenttypes.contenttype", "fields": {"model": "revisionpluginrevision", "name": "revision plugin revision", "app_label": "wiki"}}, {"pk": 118, "model": "contenttypes.contenttype", "fields": {"model": "rubric", "name": "rubric", "app_label": "assessment"}}, {"pk": 8, "model": "contenttypes.contenttype", "fields": {"model": "tasksetmeta", "name": "saved group result", "app_label": "djcelery"}}, {"pk": 79, "model": "contenttypes.contenttype", "fields": {"model": "score", "name": "score", "app_label": "foldit"}}, {"pk": 116, "model": "contenttypes.contenttype", "fields": {"model": "score", "name": "score", "app_label": "submissions"}}, {"pk": 117, "model": "contenttypes.contenttype", "fields": {"model": "scoresummary", "name": "score summary", "app_label": "submissions"}}, {"pk": 16, "model": "contenttypes.contenttype", "fields": {"model": "servercircuit", "name": "server circuit", "app_label": "circuit"}}, {"pk": 5, "model": "contenttypes.contenttype", "fields": {"model": "session", "name": "session", "app_label": "sessions"}}, {"pk": 76, "model": "contenttypes.contenttype", "fields": {"model": "settings", "name": "settings", "app_label": "django_notify"}}, {"pk": 71, "model": "contenttypes.contenttype", "fields": {"model": "simpleplugin", "name": "simple plugin", "app_label": "wiki"}}, {"pk": 6, "model": "contenttypes.contenttype", "fields": {"model": "site", "name": "site", "app_label": "sites"}}, {"pk": 102, "model": "contenttypes.contenttype", "fields": {"model": "softwaresecurephotoverification", "name": "software secure photo verification", "app_label": "verify_student"}}, {"pk": 82, "model": "contenttypes.contenttype", "fields": {"model": "splashconfig", "name": "splash config", "app_label": "splash"}}, {"pk": 114, "model": "contenttypes.contenttype", "fields": {"model": "studentitem", "name": "student item", "app_label": "submissions"}}, {"pk": 26, "model": "contenttypes.contenttype", "fields": {"model": "studentmodule", "name": "student module", "app_label": "courseware"}}, {"pk": 27, "model": "contenttypes.contenttype", "fields": {"model": "studentmodulehistory", "name": "student module history", "app_label": "courseware"}}, {"pk": 128, "model": "contenttypes.contenttype", "fields": {"model": "studenttrainingworkflow", "name": "student training workflow", "app_label": "assessment"}}, {"pk": 129, "model": "contenttypes.contenttype", "fields": {"model": "studenttrainingworkflowitem", "name": "student training workflow item", "app_label": "assessment"}}, {"pk": 148, "model": "contenttypes.contenttype", "fields": {"model": "studioconfig", "name": "studio config", "app_label": "xblock_config"}}, {"pk": 115, "model": "contenttypes.contenttype", "fields": {"model": "submission", "name": "submission", "app_label": "submissions"}}, {"pk": 77, "model": "contenttypes.contenttype", "fields": {"model": "subscription", "name": "subscription", "app_label": "django_notify"}}, {"pk": 140, "model": "contenttypes.contenttype", "fields": {"model": "subtitle", "name": "subtitle", "app_label": "edxval"}}, {"pk": 110, "model": "contenttypes.contenttype", "fields": {"model": "surveyanswer", "name": "survey answer", "app_label": "survey"}}, {"pk": 109, "model": "contenttypes.contenttype", "fields": {"model": "surveyform", "name": "survey form", "app_label": "survey"}}, {"pk": 14, "model": "contenttypes.contenttype", "fields": {"model": "taskstate", "name": "task", "app_label": "djcelery"}}, {"pk": 7, "model": "contenttypes.contenttype", "fields": {"model": "taskmeta", "name": "task state", "app_label": "djcelery"}}, {"pk": 47, "model": "contenttypes.contenttype", "fields": {"model": "trackinglog", "name": "tracking log", "app_label": "track"}}, {"pk": 127, "model": "contenttypes.contenttype", "fields": {"model": "trainingexample", "name": "training example", "app_label": "assessment"}}, {"pk": 64, "model": "contenttypes.contenttype", "fields": {"model": "trustedclient", "name": "trusted client", "app_label": "oauth2_provider"}}, {"pk": 75, "model": "contenttypes.contenttype", "fields": {"model": "notificationtype", "name": "type", "app_label": "django_notify"}}, {"pk": 68, "model": "contenttypes.contenttype", "fields": {"model": "urlpath", "name": "URL path", "app_label": "wiki"}}, {"pk": 3, "model": "contenttypes.contenttype", "fields": {"model": "user", "name": "user", "app_label": "auth"}}, {"pk": 84, "model": "contenttypes.contenttype", "fields": {"model": "usercoursetag", "name": "user course tag", "app_label": "user_api"}}, {"pk": 52, "model": "contenttypes.contenttype", "fields": {"model": "userlicense", "name": "user license", "app_label": "licenses"}}, {"pk": 145, "model": "contenttypes.contenttype", "fields": {"model": "usermilestone", "name": "user milestone", "app_label": "milestones"}}, {"pk": 20, "model": "contenttypes.contenttype", "fields": {"model": "useropenid", "name": "user open id", "app_label": "django_openid_auth"}}, {"pk": 85, "model": "contenttypes.contenttype", "fields": {"model": "userorgtag", "name": "user org tag", "app_label": "user_api"}}, {"pk": 83, "model": "contenttypes.contenttype", "fields": {"model": "userpreference", "name": "user preference", "app_label": "user_api"}}, {"pk": 35, "model": "contenttypes.contenttype", "fields": {"model": "userprofile", "name": "user profile", "app_label": "student"}}, {"pk": 36, "model": "contenttypes.contenttype", "fields": {"model": "usersignupsource", "name": "user signup source", "app_label": "student"}}, {"pk": 22, "model": "contenttypes.contenttype", "fields": {"model": "usersocialauth", "name": "user social auth", "app_label": "default"}}, {"pk": 34, "model": "contenttypes.contenttype", "fields": {"model": "userstanding", "name": "user standing", "app_label": "student"}}, {"pk": 37, "model": "contenttypes.contenttype", "fields": {"model": "usertestgroup", "name": "user test group", "app_label": "student"}}, {"pk": 137, "model": "contenttypes.contenttype", "fields": {"model": "video", "name": "video", "app_label": "edxval"}}, {"pk": 146, "model": "contenttypes.contenttype", "fields": {"model": "videouploadconfig", "name": "video upload config", "app_label": "contentstore"}}, {"pk": 13, "model": "contenttypes.contenttype", "fields": {"model": "workerstate", "name": "worker", "app_label": "djcelery"}}, {"pk": 111, "model": "contenttypes.contenttype", "fields": {"model": "xblockasidesconfig", "name": "x block asides config", "app_label": "lms_xblock"}}, {"pk": 30, "model": "contenttypes.contenttype", "fields": {"model": "xmodulestudentinfofield", "name": "x module student info field", "app_label": "courseware"}}, {"pk": 29, "model": "contenttypes.contenttype", "fields": {"model": "xmodulestudentprefsfield", "name": "x module student prefs field", "app_label": "courseware"}}, {"pk": 28, "model": "contenttypes.contenttype", "fields": {"model": "xmoduleuserstatesummaryfield", "name": "x module user state summary field", "app_label": "courseware"}}, {"pk": 1, "model": "sites.site", "fields": {"domain": "example.com", "name": "example.com"}}, {"pk": 1, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0001_initial"}}, {"pk": 2, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0002_add_indexes"}}, {"pk": 3, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0003_done_grade_cache"}}, {"pk": 4, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0004_add_field_studentmodule_course_id"}}, {"pk": 5, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0005_auto__add_offlinecomputedgrade__add_unique_offlinecomputedgrade_user_c"}}, {"pk": 6, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0006_create_student_module_history"}}, {"pk": 7, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:15Z", "app_name": "courseware", "migration": "0007_allow_null_version_in_history"}}, {"pk": 8, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:16Z", "app_name": "courseware", "migration": "0008_add_xmodule_storage"}}, {"pk": 9, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:16Z", "app_name": "courseware", "migration": "0009_add_field_default"}}, {"pk": 10, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:16Z", "app_name": "courseware", "migration": "0010_rename_xblock_field_content_to_user_state_summary"}}, {"pk": 11, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:16Z", "app_name": "student", "migration": "0001_initial"}}, {"pk": 12, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:16Z", "app_name": "student", "migration": "0002_text_to_varchar_and_indexes"}}, {"pk": 13, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0003_auto__add_usertestgroup"}}, {"pk": 14, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0004_add_email_index"}}, {"pk": 15, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0005_name_change"}}, {"pk": 16, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0006_expand_meta_field"}}, {"pk": 17, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0007_convert_to_utf8"}}, {"pk": 18, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0008__auto__add_courseregistration"}}, {"pk": 19, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0009_auto__del_courseregistration__add_courseenrollment"}}, {"pk": 20, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0010_auto__chg_field_courseenrollment_course_id"}}, {"pk": 21, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0011_auto__chg_field_courseenrollment_user__del_unique_courseenrollment_use"}}, {"pk": 22, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0012_auto__add_field_userprofile_gender__add_field_userprofile_date_of_birt"}}, {"pk": 23, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0013_auto__chg_field_userprofile_meta"}}, {"pk": 24, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0014_auto__del_courseenrollment"}}, {"pk": 25, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0015_auto__add_courseenrollment__add_unique_courseenrollment_user_course_id"}}, {"pk": 26, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0016_auto__add_field_courseenrollment_date__chg_field_userprofile_country"}}, {"pk": 27, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0017_rename_date_to_created"}}, {"pk": 28, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0018_auto"}}, {"pk": 29, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:17Z", "app_name": "student", "migration": "0019_create_approved_demographic_fields_fall_2012"}}, {"pk": 30, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0020_add_test_center_user"}}, {"pk": 31, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0021_remove_askbot"}}, {"pk": 32, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0022_auto__add_courseenrollmentallowed__add_unique_courseenrollmentallowed_"}}, {"pk": 33, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0023_add_test_center_registration"}}, {"pk": 34, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0024_add_allow_certificate"}}, {"pk": 35, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0025_auto__add_field_courseenrollmentallowed_auto_enroll"}}, {"pk": 36, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0026_auto__remove_index_student_testcenterregistration_accommodation_request"}}, {"pk": 37, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:18Z", "app_name": "student", "migration": "0027_add_active_flag_and_mode_to_courseware_enrollment"}}, {"pk": 38, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0028_auto__add_userstanding"}}, {"pk": 39, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0029_add_lookup_table_between_user_and_anonymous_student_id"}}, {"pk": 40, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0029_remove_pearson"}}, {"pk": 41, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0030_auto__chg_field_anonymoususerid_anonymous_user_id"}}, {"pk": 42, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0031_drop_student_anonymoususerid_temp_archive"}}, {"pk": 43, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0032_add_field_UserProfile_country_add_field_UserProfile_city"}}, {"pk": 44, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0032_auto__add_loginfailures"}}, {"pk": 45, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0033_auto__add_passwordhistory"}}, {"pk": 46, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:19Z", "app_name": "student", "migration": "0034_auto__add_courseaccessrole"}}, {"pk": 47, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0035_access_roles"}}, {"pk": 48, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0036_access_roles_orgless"}}, {"pk": 49, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0037_auto__add_courseregistrationcode"}}, {"pk": 50, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0038_auto__add_usersignupsource"}}, {"pk": 51, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0039_auto__del_courseregistrationcode"}}, {"pk": 52, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0040_auto__del_field_usersignupsource_user_id__add_field_usersignupsource_u"}}, {"pk": 53, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0041_add_dashboard_config"}}, {"pk": 54, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "student", "migration": "0042_grant_sales_admin_roles"}}, {"pk": 55, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "track", "migration": "0001_initial"}}, {"pk": 56, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:20Z", "app_name": "track", "migration": "0002_auto__add_field_trackinglog_host__chg_field_trackinglog_event_type__ch"}}, {"pk": 57, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0001_added_generatedcertificates"}}, {"pk": 58, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0002_auto__add_field_generatedcertificate_download_url"}}, {"pk": 59, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0003_auto__add_field_generatedcertificate_enabled"}}, {"pk": 60, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0004_auto__add_field_generatedcertificate_graded_certificate_id__add_field_"}}, {"pk": 61, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0005_auto__add_field_generatedcertificate_name"}}, {"pk": 62, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0006_auto__chg_field_generatedcertificate_certificate_id"}}, {"pk": 63, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0007_auto__add_revokedcertificate"}}, {"pk": 64, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0008_auto__del_revokedcertificate__del_field_generatedcertificate_name__add"}}, {"pk": 65, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0009_auto__del_field_generatedcertificate_graded_download_url__del_field_ge"}}, {"pk": 66, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0010_auto__del_field_generatedcertificate_enabled__add_field_generatedcerti"}}, {"pk": 67, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0011_auto__del_field_generatedcertificate_certificate_id__add_field_generat"}}, {"pk": 68, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0012_auto__add_field_generatedcertificate_name__add_field_generatedcertific"}}, {"pk": 69, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0013_auto__add_field_generatedcertificate_error_reason"}}, {"pk": 70, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0014_adding_whitelist"}}, {"pk": 71, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:21Z", "app_name": "certificates", "migration": "0015_adding_mode_for_verified_certs"}}, {"pk": 72, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:22Z", "app_name": "instructor_task", "migration": "0001_initial"}}, {"pk": 73, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:22Z", "app_name": "instructor_task", "migration": "0002_add_subtask_field"}}, {"pk": 74, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:22Z", "app_name": "licenses", "migration": "0001_initial"}}, {"pk": 75, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:22Z", "app_name": "course_groups", "migration": "0001_initial"}}, {"pk": 76, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:22Z", "app_name": "course_groups", "migration": "0002_add_model_CourseUserGroupPartitionGroup"}}, {"pk": 77, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0001_initial"}}, {"pk": 78, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0002_change_field_names"}}, {"pk": 79, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0003_add_optout_user"}}, {"pk": 80, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0004_migrate_optout_user"}}, {"pk": 81, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0005_remove_optout_email"}}, {"pk": 82, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0006_add_course_email_template"}}, {"pk": 83, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0007_load_course_email_template"}}, {"pk": 84, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0008_add_course_authorizations"}}, {"pk": 85, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0009_force_unique_course_ids"}}, {"pk": 86, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "bulk_email", "migration": "0010_auto__chg_field_optout_course_id__add_field_courseemail_template_name_"}}, {"pk": 87, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:23Z", "app_name": "external_auth", "migration": "0001_initial"}}, {"pk": 88, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:24Z", "app_name": "oauth2", "migration": "0001_initial"}}, {"pk": 89, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:24Z", "app_name": "oauth2", "migration": "0002_auto__chg_field_client_user"}}, {"pk": 90, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:24Z", "app_name": "oauth2", "migration": "0003_auto__add_field_client_name"}}, {"pk": 91, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:24Z", "app_name": "oauth2", "migration": "0004_auto__add_index_accesstoken_token"}}, {"pk": 92, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:24Z", "app_name": "oauth2_provider", "migration": "0001_initial"}}, {"pk": 93, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:25Z", "app_name": "wiki", "migration": "0001_initial"}}, {"pk": 94, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:25Z", "app_name": "wiki", "migration": "0002_auto__add_field_articleplugin_created"}}, {"pk": 95, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:25Z", "app_name": "wiki", "migration": "0003_auto__add_field_urlpath_article"}}, {"pk": 96, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:25Z", "app_name": "wiki", "migration": "0004_populate_urlpath__article"}}, {"pk": 97, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:25Z", "app_name": "wiki", "migration": "0005_auto__chg_field_urlpath_article"}}, {"pk": 98, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:26Z", "app_name": "wiki", "migration": "0006_auto__add_attachmentrevision__add_image__add_attachment"}}, {"pk": 99, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:26Z", "app_name": "wiki", "migration": "0007_auto__add_articlesubscription"}}, {"pk": 100, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:26Z", "app_name": "wiki", "migration": "0008_auto__add_simpleplugin__add_revisionpluginrevision__add_imagerevision_"}}, {"pk": 101, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:26Z", "app_name": "wiki", "migration": "0009_auto__add_field_imagerevision_width__add_field_imagerevision_height"}}, {"pk": 102, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:26Z", "app_name": "wiki", "migration": "0010_auto__chg_field_imagerevision_image"}}, {"pk": 103, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:26Z", "app_name": "wiki", "migration": "0011_auto__chg_field_imagerevision_width__chg_field_imagerevision_height"}}, {"pk": 104, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:27Z", "app_name": "django_notify", "migration": "0001_initial"}}, {"pk": 105, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:27Z", "app_name": "notifications", "migration": "0001_initial"}}, {"pk": 106, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:27Z", "app_name": "foldit", "migration": "0001_initial"}}, {"pk": 107, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:28Z", "app_name": "django_comment_client", "migration": "0001_initial"}}, {"pk": 108, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:28Z", "app_name": "django_comment_common", "migration": "0001_initial"}}, {"pk": 109, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:29Z", "app_name": "notes", "migration": "0001_initial"}}, {"pk": 110, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:29Z", "app_name": "splash", "migration": "0001_initial"}}, {"pk": 111, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:29Z", "app_name": "splash", "migration": "0002_auto__add_field_splashconfig_unaffected_url_paths"}}, {"pk": 112, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:29Z", "app_name": "user_api", "migration": "0001_initial"}}, {"pk": 113, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "user_api", "migration": "0002_auto__add_usercoursetags__add_unique_usercoursetags_user_course_id_key"}}, {"pk": 114, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "user_api", "migration": "0003_rename_usercoursetags"}}, {"pk": 115, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "user_api", "migration": "0004_auto__add_userorgtag__add_unique_userorgtag_user_org_key__chg_field_us"}}, {"pk": 116, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0001_initial"}}, {"pk": 117, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0002_auto__add_field_paidcourseregistration_mode"}}, {"pk": 118, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0003_auto__del_field_orderitem_line_cost"}}, {"pk": 119, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0004_auto__add_field_orderitem_fulfilled_time"}}, {"pk": 120, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0005_auto__add_paidcourseregistrationannotation__add_field_orderitem_report"}}, {"pk": 121, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0006_auto__add_field_order_refunded_time__add_field_orderitem_refund_reques"}}, {"pk": 122, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:30Z", "app_name": "shoppingcart", "migration": "0007_auto__add_field_orderitem_service_fee"}}, {"pk": 123, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:31Z", "app_name": "shoppingcart", "migration": "0008_auto__add_coupons__add_couponredemption__chg_field_certificateitem_cou"}}, {"pk": 124, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:31Z", "app_name": "shoppingcart", "migration": "0009_auto__del_coupons__add_courseregistrationcode__add_coupon__chg_field_c"}}, {"pk": 125, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:31Z", "app_name": "shoppingcart", "migration": "0010_auto__add_registrationcoderedemption__del_field_courseregistrationcode"}}, {"pk": 126, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:31Z", "app_name": "shoppingcart", "migration": "0011_auto__add_invoice__add_field_courseregistrationcode_invoice"}}, {"pk": 127, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:31Z", "app_name": "shoppingcart", "migration": "0012_auto__del_field_courseregistrationcode_transaction_group_name__del_fie"}}, {"pk": 128, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0013_auto__add_field_invoice_is_valid"}}, {"pk": 129, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0014_auto__del_field_invoice_tax_id__add_field_invoice_address_line_1__add_"}}, {"pk": 130, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0015_auto__del_field_invoice_purchase_order_number__del_field_invoice_compa"}}, {"pk": 131, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0016_auto__del_field_invoice_company_email__del_field_invoice_company_refer"}}, {"pk": 132, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0017_auto__add_field_courseregistrationcode_order__chg_field_registrationco"}}, {"pk": 133, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0018_auto__add_donation"}}, {"pk": 134, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:32Z", "app_name": "shoppingcart", "migration": "0019_auto__add_donationconfiguration"}}, {"pk": 135, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "shoppingcart", "migration": "0020_auto__add_courseregcodeitem__add_courseregcodeitemannotation__add_fiel"}}, {"pk": 136, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "shoppingcart", "migration": "0021_auto__add_field_orderitem_created__add_field_orderitem_modified"}}, {"pk": 137, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "shoppingcart", "migration": "0022_auto__add_field_registrationcoderedemption_course_enrollment__add_fiel"}}, {"pk": 138, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "shoppingcart", "migration": "0023_auto__add_field_coupon_expiration_date"}}, {"pk": 139, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "shoppingcart", "migration": "0024_auto__add_field_courseregistrationcode_mode_slug"}}, {"pk": 140, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "course_modes", "migration": "0001_initial"}}, {"pk": 141, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "course_modes", "migration": "0002_auto__add_field_coursemode_currency"}}, {"pk": 142, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:33Z", "app_name": "course_modes", "migration": "0003_auto__add_unique_coursemode_course_id_currency_mode_slug"}}, {"pk": 143, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "course_modes", "migration": "0004_auto__add_field_coursemode_expiration_date"}}, {"pk": 144, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "course_modes", "migration": "0005_auto__add_field_coursemode_expiration_datetime"}}, {"pk": 145, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "course_modes", "migration": "0006_expiration_date_to_datetime"}}, {"pk": 146, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "course_modes", "migration": "0007_add_description"}}, {"pk": 147, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "course_modes", "migration": "0007_auto__add_coursemodesarchive__chg_field_coursemode_course_id"}}, {"pk": 148, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "verify_student", "migration": "0001_initial"}}, {"pk": 149, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "verify_student", "migration": "0002_auto__add_field_softwaresecurephotoverification_window"}}, {"pk": 150, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:34Z", "app_name": "verify_student", "migration": "0003_auto__add_field_softwaresecurephotoverification_display"}}, {"pk": 151, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:35Z", "app_name": "dark_lang", "migration": "0001_initial"}}, {"pk": 152, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:35Z", "app_name": "dark_lang", "migration": "0002_enable_on_install"}}, {"pk": 153, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:35Z", "app_name": "reverification", "migration": "0001_initial"}}, {"pk": 154, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:35Z", "app_name": "embargo", "migration": "0001_initial"}}, {"pk": 155, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:36Z", "app_name": "course_action_state", "migration": "0001_initial"}}, {"pk": 156, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:36Z", "app_name": "course_action_state", "migration": "0002_add_rerun_display_name"}}, {"pk": 157, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:36Z", "app_name": "survey", "migration": "0001_initial"}}, {"pk": 158, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:37Z", "app_name": "lms_xblock", "migration": "0001_initial"}}, {"pk": 159, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:37Z", "app_name": "mentoring", "migration": "0001_initial"}}, {"pk": 160, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:37Z", "app_name": "mentoring", "migration": "0002_auto__add_field_answer_course_id__chg_field_answer_student_id"}}, {"pk": 161, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:37Z", "app_name": "mentoring", "migration": "0003_auto__del_unique_answer_student_id_name__add_unique_answer_course_id_s"}}, {"pk": 162, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:37Z", "app_name": "mentoring", "migration": "0004_auto__add_lightchild__add_unique_lightchild_student_id_course_id_name"}}, {"pk": 163, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:37Z", "app_name": "mentoring", "migration": "0005_auto__chg_field_lightchild_name"}}, {"pk": 164, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:38Z", "app_name": "submissions", "migration": "0001_initial"}}, {"pk": 165, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:38Z", "app_name": "submissions", "migration": "0002_auto__add_scoresummary"}}, {"pk": 166, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:38Z", "app_name": "submissions", "migration": "0003_auto__del_field_submission_answer__add_field_submission_raw_answer"}}, {"pk": 167, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:38Z", "app_name": "submissions", "migration": "0004_auto__add_field_score_reset"}}, {"pk": 168, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0001_initial"}}, {"pk": 169, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0002_auto__add_assessmentfeedbackoption__del_field_assessmentfeedback_feedb"}}, {"pk": 170, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0003_add_index_pw_course_item_student"}}, {"pk": 171, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0004_auto__add_field_peerworkflow_graded_count"}}, {"pk": 172, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0005_auto__del_field_peerworkflow_graded_count__add_field_peerworkflow_grad"}}, {"pk": 173, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0006_auto__add_field_assessmentpart_feedback"}}, {"pk": 174, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:39Z", "app_name": "assessment", "migration": "0007_auto__chg_field_assessmentpart_feedback"}}, {"pk": 175, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0008_student_training"}}, {"pk": 176, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0009_auto__add_unique_studenttrainingworkflowitem_order_num_workflow"}}, {"pk": 177, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0010_auto__add_unique_studenttrainingworkflow_submission_uuid"}}, {"pk": 178, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0011_ai_training"}}, {"pk": 179, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0012_move_algorithm_id_to_classifier_set"}}, {"pk": 180, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0013_auto__add_field_aigradingworkflow_essay_text"}}, {"pk": 181, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0014_auto__add_field_aitrainingworkflow_item_id__add_field_aitrainingworkfl"}}, {"pk": 182, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:40Z", "app_name": "assessment", "migration": "0015_auto__add_unique_aitrainingworkflow_uuid__add_unique_aigradingworkflow"}}, {"pk": 183, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0016_auto__add_field_aiclassifierset_course_id__add_field_aiclassifierset_i"}}, {"pk": 184, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0016_auto__add_field_rubric_structure_hash"}}, {"pk": 185, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0017_rubric_structure_hash"}}, {"pk": 186, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0018_auto__add_field_assessmentpart_criterion"}}, {"pk": 187, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0019_assessmentpart_criterion_field"}}, {"pk": 188, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0020_assessmentpart_criterion_not_null"}}, {"pk": 189, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0021_assessmentpart_option_nullable"}}, {"pk": 190, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0022__add_label_fields"}}, {"pk": 191, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:41Z", "app_name": "assessment", "migration": "0023_assign_criteria_and_option_labels"}}, {"pk": 192, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:42Z", "app_name": "assessment", "migration": "0024_auto__chg_field_assessmentpart_criterion"}}, {"pk": 193, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:42Z", "app_name": "workflow", "migration": "0001_initial"}}, {"pk": 194, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:42Z", "app_name": "workflow", "migration": "0002_auto__add_field_assessmentworkflow_course_id__add_field_assessmentwork"}}, {"pk": 195, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:42Z", "app_name": "workflow", "migration": "0003_auto__add_assessmentworkflowstep"}}, {"pk": 196, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:42Z", "app_name": "edxval", "migration": "0001_initial"}}, {"pk": 197, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:43Z", "app_name": "edxval", "migration": "0002_default_profiles"}}, {"pk": 198, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:43Z", "app_name": "edxval", "migration": "0003_status_and_created_fields"}}, {"pk": 199, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:43Z", "app_name": "milestones", "migration": "0001_initial"}}, {"pk": 200, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:43Z", "app_name": "milestones", "migration": "0002_seed_relationship_types"}}, {"pk": 201, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:43Z", "app_name": "django_extensions", "migration": "0001_empty"}}, {"pk": 202, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:46Z", "app_name": "contentstore", "migration": "0001_initial"}}, {"pk": 203, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:46Z", "app_name": "course_creators", "migration": "0001_initial"}}, {"pk": 204, "model": "south.migrationhistory", "fields": {"applied": "2015-01-15T03:15:46Z", "app_name": "xblock_config", "migration": "0001_initial"}}, {"pk": 1, "model": "edxval.profile", "fields": {"width": 1280, "profile_name": "desktop_mp4", "extension": "mp4", "height": 720}}, {"pk": 2, "model": "edxval.profile", "fields": {"width": 1280, "profile_name": "desktop_webm", "extension": "webm", "height": 720}}, {"pk": 3, "model": "edxval.profile", "fields": {"width": 960, "profile_name": "mobile_high", "extension": "mp4", "height": 540}}, {"pk": 4, "model": "edxval.profile", "fields": {"width": 640, "profile_name": "mobile_low", "extension": "mp4", "height": 360}}, {"pk": 5, "model": "edxval.profile", "fields": {"width": 1920, "profile_name": "youtube", "extension": "mp4", "height": 1080}}, {"pk": 1, "model": "milestones.milestonerelationshiptype", "fields": {"active": true, "description": "Autogenerated milestone relationship type \"fulfills\"", "modified": "2015-01-15T03:15:43Z", "name": "fulfills", "created": "2015-01-15T03:15:43Z"}}, {"pk": 2, "model": "milestones.milestonerelationshiptype", "fields": {"active": true, "description": "Autogenerated milestone relationship type \"requires\"", "modified": "2015-01-15T03:15:43Z", "name": "requires", "created": "2015-01-15T03:15:43Z"}}, {"pk": 61, "model": "auth.permission", "fields": {"codename": "add_logentry", "name": "Can add log entry", "content_type": 21}}, {"pk": 62, "model": "auth.permission", "fields": {"codename": "change_logentry", "name": "Can change log entry", "content_type": 21}}, {"pk": 63, "model": "auth.permission", "fields": {"codename": "delete_logentry", "name": "Can delete log entry", "content_type": 21}}, {"pk": 394, "model": "auth.permission", "fields": {"codename": "add_aiclassifier", "name": "Can add ai classifier", "content_type": 131}}, {"pk": 395, "model": "auth.permission", "fields": {"codename": "change_aiclassifier", "name": "Can change ai classifier", "content_type": 131}}, {"pk": 396, "model": "auth.permission", "fields": {"codename": "delete_aiclassifier", "name": "Can delete ai classifier", "content_type": 131}}, {"pk": 391, "model": "auth.permission", "fields": {"codename": "add_aiclassifierset", "name": "Can add ai classifier set", "content_type": 130}}, {"pk": 392, "model": "auth.permission", "fields": {"codename": "change_aiclassifierset", "name": "Can change ai classifier set", "content_type": 130}}, {"pk": 393, "model": "auth.permission", "fields": {"codename": "delete_aiclassifierset", "name": "Can delete ai classifier set", "content_type": 130}}, {"pk": 400, "model": "auth.permission", "fields": {"codename": "add_aigradingworkflow", "name": "Can add ai grading workflow", "content_type": 133}}, {"pk": 401, "model": "auth.permission", "fields": {"codename": "change_aigradingworkflow", "name": "Can change ai grading workflow", "content_type": 133}}, {"pk": 402, "model": "auth.permission", "fields": {"codename": "delete_aigradingworkflow", "name": "Can delete ai grading workflow", "content_type": 133}}, {"pk": 397, "model": "auth.permission", "fields": {"codename": "add_aitrainingworkflow", "name": "Can add ai training workflow", "content_type": 132}}, {"pk": 398, "model": "auth.permission", "fields": {"codename": "change_aitrainingworkflow", "name": "Can change ai training workflow", "content_type": 132}}, {"pk": 399, "model": "auth.permission", "fields": {"codename": "delete_aitrainingworkflow", "name": "Can delete ai training workflow", "content_type": 132}}, {"pk": 364, "model": "auth.permission", "fields": {"codename": "add_assessment", "name": "Can add assessment", "content_type": 121}}, {"pk": 365, "model": "auth.permission", "fields": {"codename": "change_assessment", "name": "Can change assessment", "content_type": 121}}, {"pk": 366, "model": "auth.permission", "fields": {"codename": "delete_assessment", "name": "Can delete assessment", "content_type": 121}}, {"pk": 373, "model": "auth.permission", "fields": {"codename": "add_assessmentfeedback", "name": "Can add assessment feedback", "content_type": 124}}, {"pk": 374, "model": "auth.permission", "fields": {"codename": "change_assessmentfeedback", "name": "Can change assessment feedback", "content_type": 124}}, {"pk": 375, "model": "auth.permission", "fields": {"codename": "delete_assessmentfeedback", "name": "Can delete assessment feedback", "content_type": 124}}, {"pk": 370, "model": "auth.permission", "fields": {"codename": "add_assessmentfeedbackoption", "name": "Can add assessment feedback option", "content_type": 123}}, {"pk": 371, "model": "auth.permission", "fields": {"codename": "change_assessmentfeedbackoption", "name": "Can change assessment feedback option", "content_type": 123}}, {"pk": 372, "model": "auth.permission", "fields": {"codename": "delete_assessmentfeedbackoption", "name": "Can delete assessment feedback option", "content_type": 123}}, {"pk": 367, "model": "auth.permission", "fields": {"codename": "add_assessmentpart", "name": "Can add assessment part", "content_type": 122}}, {"pk": 368, "model": "auth.permission", "fields": {"codename": "change_assessmentpart", "name": "Can change assessment part", "content_type": 122}}, {"pk": 369, "model": "auth.permission", "fields": {"codename": "delete_assessmentpart", "name": "Can delete assessment part", "content_type": 122}}, {"pk": 358, "model": "auth.permission", "fields": {"codename": "add_criterion", "name": "Can add criterion", "content_type": 119}}, {"pk": 359, "model": "auth.permission", "fields": {"codename": "change_criterion", "name": "Can change criterion", "content_type": 119}}, {"pk": 360, "model": "auth.permission", "fields": {"codename": "delete_criterion", "name": "Can delete criterion", "content_type": 119}}, {"pk": 361, "model": "auth.permission", "fields": {"codename": "add_criterionoption", "name": "Can add criterion option", "content_type": 120}}, {"pk": 362, "model": "auth.permission", "fields": {"codename": "change_criterionoption", "name": "Can change criterion option", "content_type": 120}}, {"pk": 363, "model": "auth.permission", "fields": {"codename": "delete_criterionoption", "name": "Can delete criterion option", "content_type": 120}}, {"pk": 376, "model": "auth.permission", "fields": {"codename": "add_peerworkflow", "name": "Can add peer workflow", "content_type": 125}}, {"pk": 377, "model": "auth.permission", "fields": {"codename": "change_peerworkflow", "name": "Can change peer workflow", "content_type": 125}}, {"pk": 378, "model": "auth.permission", "fields": {"codename": "delete_peerworkflow", "name": "Can delete peer workflow", "content_type": 125}}, {"pk": 379, "model": "auth.permission", "fields": {"codename": "add_peerworkflowitem", "name": "Can add peer workflow item", "content_type": 126}}, {"pk": 380, "model": "auth.permission", "fields": {"codename": "change_peerworkflowitem", "name": "Can change peer workflow item", "content_type": 126}}, {"pk": 381, "model": "auth.permission", "fields": {"codename": "delete_peerworkflowitem", "name": "Can delete peer workflow item", "content_type": 126}}, {"pk": 355, "model": "auth.permission", "fields": {"codename": "add_rubric", "name": "Can add rubric", "content_type": 118}}, {"pk": 356, "model": "auth.permission", "fields": {"codename": "change_rubric", "name": "Can change rubric", "content_type": 118}}, {"pk": 357, "model": "auth.permission", "fields": {"codename": "delete_rubric", "name": "Can delete rubric", "content_type": 118}}, {"pk": 385, "model": "auth.permission", "fields": {"codename": "add_studenttrainingworkflow", "name": "Can add student training workflow", "content_type": 128}}, {"pk": 386, "model": "auth.permission", "fields": {"codename": "change_studenttrainingworkflow", "name": "Can change student training workflow", "content_type": 128}}, {"pk": 387, "model": "auth.permission", "fields": {"codename": "delete_studenttrainingworkflow", "name": "Can delete student training workflow", "content_type": 128}}, {"pk": 388, "model": "auth.permission", "fields": {"codename": "add_studenttrainingworkflowitem", "name": "Can add student training workflow item", "content_type": 129}}, {"pk": 389, "model": "auth.permission", "fields": {"codename": "change_studenttrainingworkflowitem", "name": "Can change student training workflow item", "content_type": 129}}, {"pk": 390, "model": "auth.permission", "fields": {"codename": "delete_studenttrainingworkflowitem", "name": "Can delete student training workflow item", "content_type": 129}}, {"pk": 382, "model": "auth.permission", "fields": {"codename": "add_trainingexample", "name": "Can add training example", "content_type": 127}}, {"pk": 383, "model": "auth.permission", "fields": {"codename": "change_trainingexample", "name": "Can change training example", "content_type": 127}}, {"pk": 384, "model": "auth.permission", "fields": {"codename": "delete_trainingexample", "name": "Can delete training example", "content_type": 127}}, {"pk": 4, "model": "auth.permission", "fields": {"codename": "add_group", "name": "Can add group", "content_type": 2}}, {"pk": 5, "model": "auth.permission", "fields": {"codename": "change_group", "name": "Can change group", "content_type": 2}}, {"pk": 6, "model": "auth.permission", "fields": {"codename": "delete_group", "name": "Can delete group", "content_type": 2}}, {"pk": 1, "model": "auth.permission", "fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 1}}, {"pk": 2, "model": "auth.permission", "fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 1}}, {"pk": 3, "model": "auth.permission", "fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 1}}, {"pk": 7, "model": "auth.permission", "fields": {"codename": "add_user", "name": "Can add user", "content_type": 3}}, {"pk": 8, "model": "auth.permission", "fields": {"codename": "change_user", "name": "Can change user", "content_type": 3}}, {"pk": 9, "model": "auth.permission", "fields": {"codename": "delete_user", "name": "Can delete user", "content_type": 3}}, {"pk": 172, "model": "auth.permission", "fields": {"codename": "add_courseauthorization", "name": "Can add course authorization", "content_type": 58}}, {"pk": 173, "model": "auth.permission", "fields": {"codename": "change_courseauthorization", "name": "Can change course authorization", "content_type": 58}}, {"pk": 174, "model": "auth.permission", "fields": {"codename": "delete_courseauthorization", "name": "Can delete course authorization", "content_type": 58}}, {"pk": 163, "model": "auth.permission", "fields": {"codename": "add_courseemail", "name": "Can add course email", "content_type": 55}}, {"pk": 164, "model": "auth.permission", "fields": {"codename": "change_courseemail", "name": "Can change course email", "content_type": 55}}, {"pk": 165, "model": "auth.permission", "fields": {"codename": "delete_courseemail", "name": "Can delete course email", "content_type": 55}}, {"pk": 169, "model": "auth.permission", "fields": {"codename": "add_courseemailtemplate", "name": "Can add course email template", "content_type": 57}}, {"pk": 170, "model": "auth.permission", "fields": {"codename": "change_courseemailtemplate", "name": "Can change course email template", "content_type": 57}}, {"pk": 171, "model": "auth.permission", "fields": {"codename": "delete_courseemailtemplate", "name": "Can delete course email template", "content_type": 57}}, {"pk": 166, "model": "auth.permission", "fields": {"codename": "add_optout", "name": "Can add optout", "content_type": 56}}, {"pk": 167, "model": "auth.permission", "fields": {"codename": "change_optout", "name": "Can change optout", "content_type": 56}}, {"pk": 168, "model": "auth.permission", "fields": {"codename": "delete_optout", "name": "Can delete optout", "content_type": 56}}, {"pk": 142, "model": "auth.permission", "fields": {"codename": "add_certificatewhitelist", "name": "Can add certificate whitelist", "content_type": 48}}, {"pk": 143, "model": "auth.permission", "fields": {"codename": "change_certificatewhitelist", "name": "Can change certificate whitelist", "content_type": 48}}, {"pk": 144, "model": "auth.permission", "fields": {"codename": "delete_certificatewhitelist", "name": "Can delete certificate whitelist", "content_type": 48}}, {"pk": 145, "model": "auth.permission", "fields": {"codename": "add_generatedcertificate", "name": "Can add generated certificate", "content_type": 49}}, {"pk": 146, "model": "auth.permission", "fields": {"codename": "change_generatedcertificate", "name": "Can change generated certificate", "content_type": 49}}, {"pk": 147, "model": "auth.permission", "fields": {"codename": "delete_generatedcertificate", "name": "Can delete generated certificate", "content_type": 49}}, {"pk": 46, "model": "auth.permission", "fields": {"codename": "add_servercircuit", "name": "Can add server circuit", "content_type": 16}}, {"pk": 47, "model": "auth.permission", "fields": {"codename": "change_servercircuit", "name": "Can change server circuit", "content_type": 16}}, {"pk": 48, "model": "auth.permission", "fields": {"codename": "delete_servercircuit", "name": "Can delete server circuit", "content_type": 16}}, {"pk": 439, "model": "auth.permission", "fields": {"codename": "add_videouploadconfig", "name": "Can add video upload config", "content_type": 146}}, {"pk": 440, "model": "auth.permission", "fields": {"codename": "change_videouploadconfig", "name": "Can change video upload config", "content_type": 146}}, {"pk": 441, "model": "auth.permission", "fields": {"codename": "delete_videouploadconfig", "name": "Can delete video upload config", "content_type": 146}}, {"pk": 10, "model": "auth.permission", "fields": {"codename": "add_contenttype", "name": "Can add content type", "content_type": 4}}, {"pk": 11, "model": "auth.permission", "fields": {"codename": "change_contenttype", "name": "Can change content type", "content_type": 4}}, {"pk": 12, "model": "auth.permission", "fields": {"codename": "delete_contenttype", "name": "Can delete content type", "content_type": 4}}, {"pk": 91, "model": "auth.permission", "fields": {"codename": "add_offlinecomputedgrade", "name": "Can add offline computed grade", "content_type": 31}}, {"pk": 92, "model": "auth.permission", "fields": {"codename": "change_offlinecomputedgrade", "name": "Can change offline computed grade", "content_type": 31}}, {"pk": 93, "model": "auth.permission", "fields": {"codename": "delete_offlinecomputedgrade", "name": "Can delete offline computed grade", "content_type": 31}}, {"pk": 94, "model": "auth.permission", "fields": {"codename": "add_offlinecomputedgradelog", "name": "Can add offline computed grade log", "content_type": 32}}, {"pk": 95, "model": "auth.permission", "fields": {"codename": "change_offlinecomputedgradelog", "name": "Can change offline computed grade log", "content_type": 32}}, {"pk": 96, "model": "auth.permission", "fields": {"codename": "delete_offlinecomputedgradelog", "name": "Can delete offline computed grade log", "content_type": 32}}, {"pk": 76, "model": "auth.permission", "fields": {"codename": "add_studentmodule", "name": "Can add student module", "content_type": 26}}, {"pk": 77, "model": "auth.permission", "fields": {"codename": "change_studentmodule", "name": "Can change student module", "content_type": 26}}, {"pk": 78, "model": "auth.permission", "fields": {"codename": "delete_studentmodule", "name": "Can delete student module", "content_type": 26}}, {"pk": 79, "model": "auth.permission", "fields": {"codename": "add_studentmodulehistory", "name": "Can add student module history", "content_type": 27}}, {"pk": 80, "model": "auth.permission", "fields": {"codename": "change_studentmodulehistory", "name": "Can change student module history", "content_type": 27}}, {"pk": 81, "model": "auth.permission", "fields": {"codename": "delete_studentmodulehistory", "name": "Can delete student module history", "content_type": 27}}, {"pk": 88, "model": "auth.permission", "fields": {"codename": "add_xmodulestudentinfofield", "name": "Can add x module student info field", "content_type": 30}}, {"pk": 89, "model": "auth.permission", "fields": {"codename": "change_xmodulestudentinfofield", "name": "Can change x module student info field", "content_type": 30}}, {"pk": 90, "model": "auth.permission", "fields": {"codename": "delete_xmodulestudentinfofield", "name": "Can delete x module student info field", "content_type": 30}}, {"pk": 85, "model": "auth.permission", "fields": {"codename": "add_xmodulestudentprefsfield", "name": "Can add x module student prefs field", "content_type": 29}}, {"pk": 86, "model": "auth.permission", "fields": {"codename": "change_xmodulestudentprefsfield", "name": "Can change x module student prefs field", "content_type": 29}}, {"pk": 87, "model": "auth.permission", "fields": {"codename": "delete_xmodulestudentprefsfield", "name": "Can delete x module student prefs field", "content_type": 29}}, {"pk": 82, "model": "auth.permission", "fields": {"codename": "add_xmoduleuserstatesummaryfield", "name": "Can add x module user state summary field", "content_type": 28}}, {"pk": 83, "model": "auth.permission", "fields": {"codename": "change_xmoduleuserstatesummaryfield", "name": "Can change x module user state summary field", "content_type": 28}}, {"pk": 84, "model": "auth.permission", "fields": {"codename": "delete_xmoduleuserstatesummaryfield", "name": "Can delete x module user state summary field", "content_type": 28}}, {"pk": 325, "model": "auth.permission", "fields": {"codename": "add_coursererunstate", "name": "Can add course rerun state", "content_type": 108}}, {"pk": 326, "model": "auth.permission", "fields": {"codename": "change_coursererunstate", "name": "Can change course rerun state", "content_type": 108}}, {"pk": 327, "model": "auth.permission", "fields": {"codename": "delete_coursererunstate", "name": "Can delete course rerun state", "content_type": 108}}, {"pk": 442, "model": "auth.permission", "fields": {"codename": "add_coursecreator", "name": "Can add course creator", "content_type": 147}}, {"pk": 443, "model": "auth.permission", "fields": {"codename": "change_coursecreator", "name": "Can change course creator", "content_type": 147}}, {"pk": 444, "model": "auth.permission", "fields": {"codename": "delete_coursecreator", "name": "Can delete course creator", "content_type": 147}}, {"pk": 157, "model": "auth.permission", "fields": {"codename": "add_courseusergroup", "name": "Can add course user group", "content_type": 53}}, {"pk": 158, "model": "auth.permission", "fields": {"codename": "change_courseusergroup", "name": "Can change course user group", "content_type": 53}}, {"pk": 159, "model": "auth.permission", "fields": {"codename": "delete_courseusergroup", "name": "Can delete course user group", "content_type": 53}}, {"pk": 160, "model": "auth.permission", "fields": {"codename": "add_courseusergrouppartitiongroup", "name": "Can add course user group partition group", "content_type": 54}}, {"pk": 161, "model": "auth.permission", "fields": {"codename": "change_courseusergrouppartitiongroup", "name": "Can change course user group partition group", "content_type": 54}}, {"pk": 162, "model": "auth.permission", "fields": {"codename": "delete_courseusergrouppartitiongroup", "name": "Can delete course user group partition group", "content_type": 54}}, {"pk": 301, "model": "auth.permission", "fields": {"codename": "add_coursemode", "name": "Can add course mode", "content_type": 100}}, {"pk": 302, "model": "auth.permission", "fields": {"codename": "change_coursemode", "name": "Can change course mode", "content_type": 100}}, {"pk": 303, "model": "auth.permission", "fields": {"codename": "delete_coursemode", "name": "Can delete course mode", "content_type": 100}}, {"pk": 304, "model": "auth.permission", "fields": {"codename": "add_coursemodesarchive", "name": "Can add course modes archive", "content_type": 101}}, {"pk": 305, "model": "auth.permission", "fields": {"codename": "change_coursemodesarchive", "name": "Can change course modes archive", "content_type": 101}}, {"pk": 306, "model": "auth.permission", "fields": {"codename": "delete_coursemodesarchive", "name": "Can delete course modes archive", "content_type": 101}}, {"pk": 310, "model": "auth.permission", "fields": {"codename": "add_darklangconfig", "name": "Can add dark lang config", "content_type": 103}}, {"pk": 311, "model": "auth.permission", "fields": {"codename": "change_darklangconfig", "name": "Can change dark lang config", "content_type": 103}}, {"pk": 312, "model": "auth.permission", "fields": {"codename": "delete_darklangconfig", "name": "Can delete dark lang config", "content_type": 103}}, {"pk": 70, "model": "auth.permission", "fields": {"codename": "add_association", "name": "Can add association", "content_type": 24}}, {"pk": 71, "model": "auth.permission", "fields": {"codename": "change_association", "name": "Can change association", "content_type": 24}}, {"pk": 72, "model": "auth.permission", "fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 24}}, {"pk": 73, "model": "auth.permission", "fields": {"codename": "add_code", "name": "Can add code", "content_type": 25}}, {"pk": 74, "model": "auth.permission", "fields": {"codename": "change_code", "name": "Can change code", "content_type": 25}}, {"pk": 75, "model": "auth.permission", "fields": {"codename": "delete_code", "name": "Can delete code", "content_type": 25}}, {"pk": 67, "model": "auth.permission", "fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 23}}, {"pk": 68, "model": "auth.permission", "fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 23}}, {"pk": 69, "model": "auth.permission", "fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 23}}, {"pk": 64, "model": "auth.permission", "fields": {"codename": "add_usersocialauth", "name": "Can add user social auth", "content_type": 22}}, {"pk": 65, "model": "auth.permission", "fields": {"codename": "change_usersocialauth", "name": "Can change user social auth", "content_type": 22}}, {"pk": 66, "model": "auth.permission", "fields": {"codename": "delete_usersocialauth", "name": "Can delete user social auth", "content_type": 22}}, {"pk": 235, "model": "auth.permission", "fields": {"codename": "add_notification", "name": "Can add notification", "content_type": 78}}, {"pk": 236, "model": "auth.permission", "fields": {"codename": "change_notification", "name": "Can change notification", "content_type": 78}}, {"pk": 237, "model": "auth.permission", "fields": {"codename": "delete_notification", "name": "Can delete notification", "content_type": 78}}, {"pk": 226, "model": "auth.permission", "fields": {"codename": "add_notificationtype", "name": "Can add type", "content_type": 75}}, {"pk": 227, "model": "auth.permission", "fields": {"codename": "change_notificationtype", "name": "Can change type", "content_type": 75}}, {"pk": 228, "model": "auth.permission", "fields": {"codename": "delete_notificationtype", "name": "Can delete type", "content_type": 75}}, {"pk": 229, "model": "auth.permission", "fields": {"codename": "add_settings", "name": "Can add settings", "content_type": 76}}, {"pk": 230, "model": "auth.permission", "fields": {"codename": "change_settings", "name": "Can change settings", "content_type": 76}}, {"pk": 231, "model": "auth.permission", "fields": {"codename": "delete_settings", "name": "Can delete settings", "content_type": 76}}, {"pk": 232, "model": "auth.permission", "fields": {"codename": "add_subscription", "name": "Can add subscription", "content_type": 77}}, {"pk": 233, "model": "auth.permission", "fields": {"codename": "change_subscription", "name": "Can change subscription", "content_type": 77}}, {"pk": 234, "model": "auth.permission", "fields": {"codename": "delete_subscription", "name": "Can delete subscription", "content_type": 77}}, {"pk": 55, "model": "auth.permission", "fields": {"codename": "add_association", "name": "Can add association", "content_type": 19}}, {"pk": 56, "model": "auth.permission", "fields": {"codename": "change_association", "name": "Can change association", "content_type": 19}}, {"pk": 57, "model": "auth.permission", "fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 19}}, {"pk": 52, "model": "auth.permission", "fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 18}}, {"pk": 53, "model": "auth.permission", "fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 18}}, {"pk": 54, "model": "auth.permission", "fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 18}}, {"pk": 58, "model": "auth.permission", "fields": {"codename": "add_useropenid", "name": "Can add user open id", "content_type": 20}}, {"pk": 59, "model": "auth.permission", "fields": {"codename": "change_useropenid", "name": "Can change user open id", "content_type": 20}}, {"pk": 60, "model": "auth.permission", "fields": {"codename": "delete_useropenid", "name": "Can delete user open id", "content_type": 20}}, {"pk": 28, "model": "auth.permission", "fields": {"codename": "add_crontabschedule", "name": "Can add crontab", "content_type": 10}}, {"pk": 29, "model": "auth.permission", "fields": {"codename": "change_crontabschedule", "name": "Can change crontab", "content_type": 10}}, {"pk": 30, "model": "auth.permission", "fields": {"codename": "delete_crontabschedule", "name": "Can delete crontab", "content_type": 10}}, {"pk": 25, "model": "auth.permission", "fields": {"codename": "add_intervalschedule", "name": "Can add interval", "content_type": 9}}, {"pk": 26, "model": "auth.permission", "fields": {"codename": "change_intervalschedule", "name": "Can change interval", "content_type": 9}}, {"pk": 27, "model": "auth.permission", "fields": {"codename": "delete_intervalschedule", "name": "Can delete interval", "content_type": 9}}, {"pk": 34, "model": "auth.permission", "fields": {"codename": "add_periodictask", "name": "Can add periodic task", "content_type": 12}}, {"pk": 35, "model": "auth.permission", "fields": {"codename": "change_periodictask", "name": "Can change periodic task", "content_type": 12}}, {"pk": 36, "model": "auth.permission", "fields": {"codename": "delete_periodictask", "name": "Can delete periodic task", "content_type": 12}}, {"pk": 31, "model": "auth.permission", "fields": {"codename": "add_periodictasks", "name": "Can add periodic tasks", "content_type": 11}}, {"pk": 32, "model": "auth.permission", "fields": {"codename": "change_periodictasks", "name": "Can change periodic tasks", "content_type": 11}}, {"pk": 33, "model": "auth.permission", "fields": {"codename": "delete_periodictasks", "name": "Can delete periodic tasks", "content_type": 11}}, {"pk": 19, "model": "auth.permission", "fields": {"codename": "add_taskmeta", "name": "Can add task state", "content_type": 7}}, {"pk": 20, "model": "auth.permission", "fields": {"codename": "change_taskmeta", "name": "Can change task state", "content_type": 7}}, {"pk": 21, "model": "auth.permission", "fields": {"codename": "delete_taskmeta", "name": "Can delete task state", "content_type": 7}}, {"pk": 22, "model": "auth.permission", "fields": {"codename": "add_tasksetmeta", "name": "Can add saved group result", "content_type": 8}}, {"pk": 23, "model": "auth.permission", "fields": {"codename": "change_tasksetmeta", "name": "Can change saved group result", "content_type": 8}}, {"pk": 24, "model": "auth.permission", "fields": {"codename": "delete_tasksetmeta", "name": "Can delete saved group result", "content_type": 8}}, {"pk": 40, "model": "auth.permission", "fields": {"codename": "add_taskstate", "name": "Can add task", "content_type": 14}}, {"pk": 41, "model": "auth.permission", "fields": {"codename": "change_taskstate", "name": "Can change task", "content_type": 14}}, {"pk": 42, "model": "auth.permission", "fields": {"codename": "delete_taskstate", "name": "Can delete task", "content_type": 14}}, {"pk": 37, "model": "auth.permission", "fields": {"codename": "add_workerstate", "name": "Can add worker", "content_type": 13}}, {"pk": 38, "model": "auth.permission", "fields": {"codename": "change_workerstate", "name": "Can change worker", "content_type": 13}}, {"pk": 39, "model": "auth.permission", "fields": {"codename": "delete_workerstate", "name": "Can delete worker", "content_type": 13}}, {"pk": 415, "model": "auth.permission", "fields": {"codename": "add_coursevideo", "name": "Can add course video", "content_type": 138}}, {"pk": 416, "model": "auth.permission", "fields": {"codename": "change_coursevideo", "name": "Can change course video", "content_type": 138}}, {"pk": 417, "model": "auth.permission", "fields": {"codename": "delete_coursevideo", "name": "Can delete course video", "content_type": 138}}, {"pk": 418, "model": "auth.permission", "fields": {"codename": "add_encodedvideo", "name": "Can add encoded video", "content_type": 139}}, {"pk": 419, "model": "auth.permission", "fields": {"codename": "change_encodedvideo", "name": "Can change encoded video", "content_type": 139}}, {"pk": 420, "model": "auth.permission", "fields": {"codename": "delete_encodedvideo", "name": "Can delete encoded video", "content_type": 139}}, {"pk": 409, "model": "auth.permission", "fields": {"codename": "add_profile", "name": "Can add profile", "content_type": 136}}, {"pk": 410, "model": "auth.permission", "fields": {"codename": "change_profile", "name": "Can change profile", "content_type": 136}}, {"pk": 411, "model": "auth.permission", "fields": {"codename": "delete_profile", "name": "Can delete profile", "content_type": 136}}, {"pk": 421, "model": "auth.permission", "fields": {"codename": "add_subtitle", "name": "Can add subtitle", "content_type": 140}}, {"pk": 422, "model": "auth.permission", "fields": {"codename": "change_subtitle", "name": "Can change subtitle", "content_type": 140}}, {"pk": 423, "model": "auth.permission", "fields": {"codename": "delete_subtitle", "name": "Can delete subtitle", "content_type": 140}}, {"pk": 412, "model": "auth.permission", "fields": {"codename": "add_video", "name": "Can add video", "content_type": 137}}, {"pk": 413, "model": "auth.permission", "fields": {"codename": "change_video", "name": "Can change video", "content_type": 137}}, {"pk": 414, "model": "auth.permission", "fields": {"codename": "delete_video", "name": "Can delete video", "content_type": 137}}, {"pk": 316, "model": "auth.permission", "fields": {"codename": "add_embargoedcourse", "name": "Can add embargoed course", "content_type": 105}}, {"pk": 317, "model": "auth.permission", "fields": {"codename": "change_embargoedcourse", "name": "Can change embargoed course", "content_type": 105}}, {"pk": 318, "model": "auth.permission", "fields": {"codename": "delete_embargoedcourse", "name": "Can delete embargoed course", "content_type": 105}}, {"pk": 319, "model": "auth.permission", "fields": {"codename": "add_embargoedstate", "name": "Can add embargoed state", "content_type": 106}}, {"pk": 320, "model": "auth.permission", "fields": {"codename": "change_embargoedstate", "name": "Can change embargoed state", "content_type": 106}}, {"pk": 321, "model": "auth.permission", "fields": {"codename": "delete_embargoedstate", "name": "Can delete embargoed state", "content_type": 106}}, {"pk": 322, "model": "auth.permission", "fields": {"codename": "add_ipfilter", "name": "Can add ip filter", "content_type": 107}}, {"pk": 323, "model": "auth.permission", "fields": {"codename": "change_ipfilter", "name": "Can change ip filter", "content_type": 107}}, {"pk": 324, "model": "auth.permission", "fields": {"codename": "delete_ipfilter", "name": "Can delete ip filter", "content_type": 107}}, {"pk": 175, "model": "auth.permission", "fields": {"codename": "add_externalauthmap", "name": "Can add external auth map", "content_type": 59}}, {"pk": 176, "model": "auth.permission", "fields": {"codename": "change_externalauthmap", "name": "Can change external auth map", "content_type": 59}}, {"pk": 177, "model": "auth.permission", "fields": {"codename": "delete_externalauthmap", "name": "Can delete external auth map", "content_type": 59}}, {"pk": 241, "model": "auth.permission", "fields": {"codename": "add_puzzlecomplete", "name": "Can add puzzle complete", "content_type": 80}}, {"pk": 242, "model": "auth.permission", "fields": {"codename": "change_puzzlecomplete", "name": "Can change puzzle complete", "content_type": 80}}, {"pk": 243, "model": "auth.permission", "fields": {"codename": "delete_puzzlecomplete", "name": "Can delete puzzle complete", "content_type": 80}}, {"pk": 238, "model": "auth.permission", "fields": {"codename": "add_score", "name": "Can add score", "content_type": 79}}, {"pk": 239, "model": "auth.permission", "fields": {"codename": "change_score", "name": "Can change score", "content_type": 79}}, {"pk": 240, "model": "auth.permission", "fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 79}}, {"pk": 148, "model": "auth.permission", "fields": {"codename": "add_instructortask", "name": "Can add instructor task", "content_type": 50}}, {"pk": 149, "model": "auth.permission", "fields": {"codename": "change_instructortask", "name": "Can change instructor task", "content_type": 50}}, {"pk": 150, "model": "auth.permission", "fields": {"codename": "delete_instructortask", "name": "Can delete instructor task", "content_type": 50}}, {"pk": 151, "model": "auth.permission", "fields": {"codename": "add_coursesoftware", "name": "Can add course software", "content_type": 51}}, {"pk": 152, "model": "auth.permission", "fields": {"codename": "change_coursesoftware", "name": "Can change course software", "content_type": 51}}, {"pk": 153, "model": "auth.permission", "fields": {"codename": "delete_coursesoftware", "name": "Can delete course software", "content_type": 51}}, {"pk": 154, "model": "auth.permission", "fields": {"codename": "add_userlicense", "name": "Can add user license", "content_type": 52}}, {"pk": 155, "model": "auth.permission", "fields": {"codename": "change_userlicense", "name": "Can change user license", "content_type": 52}}, {"pk": 156, "model": "auth.permission", "fields": {"codename": "delete_userlicense", "name": "Can delete user license", "content_type": 52}}, {"pk": 334, "model": "auth.permission", "fields": {"codename": "add_xblockasidesconfig", "name": "Can add x block asides config", "content_type": 111}}, {"pk": 335, "model": "auth.permission", "fields": {"codename": "change_xblockasidesconfig", "name": "Can change x block asides config", "content_type": 111}}, {"pk": 336, "model": "auth.permission", "fields": {"codename": "delete_xblockasidesconfig", "name": "Can delete x block asides config", "content_type": 111}}, {"pk": 337, "model": "auth.permission", "fields": {"codename": "add_answer", "name": "Can add answer", "content_type": 112}}, {"pk": 338, "model": "auth.permission", "fields": {"codename": "change_answer", "name": "Can change answer", "content_type": 112}}, {"pk": 339, "model": "auth.permission", "fields": {"codename": "delete_answer", "name": "Can delete answer", "content_type": 112}}, {"pk": 340, "model": "auth.permission", "fields": {"codename": "add_lightchild", "name": "Can add light child", "content_type": 113}}, {"pk": 341, "model": "auth.permission", "fields": {"codename": "change_lightchild", "name": "Can change light child", "content_type": 113}}, {"pk": 342, "model": "auth.permission", "fields": {"codename": "delete_lightchild", "name": "Can delete light child", "content_type": 113}}, {"pk": 433, "model": "auth.permission", "fields": {"codename": "add_coursecontentmilestone", "name": "Can add course content milestone", "content_type": 144}}, {"pk": 434, "model": "auth.permission", "fields": {"codename": "change_coursecontentmilestone", "name": "Can change course content milestone", "content_type": 144}}, {"pk": 435, "model": "auth.permission", "fields": {"codename": "delete_coursecontentmilestone", "name": "Can delete course content milestone", "content_type": 144}}, {"pk": 430, "model": "auth.permission", "fields": {"codename": "add_coursemilestone", "name": "Can add course milestone", "content_type": 143}}, {"pk": 431, "model": "auth.permission", "fields": {"codename": "change_coursemilestone", "name": "Can change course milestone", "content_type": 143}}, {"pk": 432, "model": "auth.permission", "fields": {"codename": "delete_coursemilestone", "name": "Can delete course milestone", "content_type": 143}}, {"pk": 424, "model": "auth.permission", "fields": {"codename": "add_milestone", "name": "Can add milestone", "content_type": 141}}, {"pk": 425, "model": "auth.permission", "fields": {"codename": "change_milestone", "name": "Can change milestone", "content_type": 141}}, {"pk": 426, "model": "auth.permission", "fields": {"codename": "delete_milestone", "name": "Can delete milestone", "content_type": 141}}, {"pk": 427, "model": "auth.permission", "fields": {"codename": "add_milestonerelationshiptype", "name": "Can add milestone relationship type", "content_type": 142}}, {"pk": 428, "model": "auth.permission", "fields": {"codename": "change_milestonerelationshiptype", "name": "Can change milestone relationship type", "content_type": 142}}, {"pk": 429, "model": "auth.permission", "fields": {"codename": "delete_milestonerelationshiptype", "name": "Can delete milestone relationship type", "content_type": 142}}, {"pk": 436, "model": "auth.permission", "fields": {"codename": "add_usermilestone", "name": "Can add user milestone", "content_type": 145}}, {"pk": 437, "model": "auth.permission", "fields": {"codename": "change_usermilestone", "name": "Can change user milestone", "content_type": 145}}, {"pk": 438, "model": "auth.permission", "fields": {"codename": "delete_usermilestone", "name": "Can delete user milestone", "content_type": 145}}, {"pk": 244, "model": "auth.permission", "fields": {"codename": "add_note", "name": "Can add note", "content_type": 81}}, {"pk": 245, "model": "auth.permission", "fields": {"codename": "change_note", "name": "Can change note", "content_type": 81}}, {"pk": 246, "model": "auth.permission", "fields": {"codename": "delete_note", "name": "Can delete note", "content_type": 81}}, {"pk": 184, "model": "auth.permission", "fields": {"codename": "add_accesstoken", "name": "Can add access token", "content_type": 62}}, {"pk": 185, "model": "auth.permission", "fields": {"codename": "change_accesstoken", "name": "Can change access token", "content_type": 62}}, {"pk": 186, "model": "auth.permission", "fields": {"codename": "delete_accesstoken", "name": "Can delete access token", "content_type": 62}}, {"pk": 178, "model": "auth.permission", "fields": {"codename": "add_client", "name": "Can add client", "content_type": 60}}, {"pk": 179, "model": "auth.permission", "fields": {"codename": "change_client", "name": "Can change client", "content_type": 60}}, {"pk": 180, "model": "auth.permission", "fields": {"codename": "delete_client", "name": "Can delete client", "content_type": 60}}, {"pk": 181, "model": "auth.permission", "fields": {"codename": "add_grant", "name": "Can add grant", "content_type": 61}}, {"pk": 182, "model": "auth.permission", "fields": {"codename": "change_grant", "name": "Can change grant", "content_type": 61}}, {"pk": 183, "model": "auth.permission", "fields": {"codename": "delete_grant", "name": "Can delete grant", "content_type": 61}}, {"pk": 187, "model": "auth.permission", "fields": {"codename": "add_refreshtoken", "name": "Can add refresh token", "content_type": 63}}, {"pk": 188, "model": "auth.permission", "fields": {"codename": "change_refreshtoken", "name": "Can change refresh token", "content_type": 63}}, {"pk": 189, "model": "auth.permission", "fields": {"codename": "delete_refreshtoken", "name": "Can delete refresh token", "content_type": 63}}, {"pk": 190, "model": "auth.permission", "fields": {"codename": "add_trustedclient", "name": "Can add trusted client", "content_type": 64}}, {"pk": 191, "model": "auth.permission", "fields": {"codename": "change_trustedclient", "name": "Can change trusted client", "content_type": 64}}, {"pk": 192, "model": "auth.permission", "fields": {"codename": "delete_trustedclient", "name": "Can delete trusted client", "content_type": 64}}, {"pk": 49, "model": "auth.permission", "fields": {"codename": "add_psychometricdata", "name": "Can add psychometric data", "content_type": 17}}, {"pk": 50, "model": "auth.permission", "fields": {"codename": "change_psychometricdata", "name": "Can change psychometric data", "content_type": 17}}, {"pk": 51, "model": "auth.permission", "fields": {"codename": "delete_psychometricdata", "name": "Can delete psychometric data", "content_type": 17}}, {"pk": 313, "model": "auth.permission", "fields": {"codename": "add_midcoursereverificationwindow", "name": "Can add midcourse reverification window", "content_type": 104}}, {"pk": 314, "model": "auth.permission", "fields": {"codename": "change_midcoursereverificationwindow", "name": "Can change midcourse reverification window", "content_type": 104}}, {"pk": 315, "model": "auth.permission", "fields": {"codename": "delete_midcoursereverificationwindow", "name": "Can delete midcourse reverification window", "content_type": 104}}, {"pk": 13, "model": "auth.permission", "fields": {"codename": "add_session", "name": "Can add session", "content_type": 5}}, {"pk": 14, "model": "auth.permission", "fields": {"codename": "change_session", "name": "Can change session", "content_type": 5}}, {"pk": 15, "model": "auth.permission", "fields": {"codename": "delete_session", "name": "Can delete session", "content_type": 5}}, {"pk": 292, "model": "auth.permission", "fields": {"codename": "add_certificateitem", "name": "Can add certificate item", "content_type": 97}}, {"pk": 293, "model": "auth.permission", "fields": {"codename": "change_certificateitem", "name": "Can change certificate item", "content_type": 97}}, {"pk": 294, "model": "auth.permission", "fields": {"codename": "delete_certificateitem", "name": "Can delete certificate item", "content_type": 97}}, {"pk": 274, "model": "auth.permission", "fields": {"codename": "add_coupon", "name": "Can add coupon", "content_type": 91}}, {"pk": 275, "model": "auth.permission", "fields": {"codename": "change_coupon", "name": "Can change coupon", "content_type": 91}}, {"pk": 276, "model": "auth.permission", "fields": {"codename": "delete_coupon", "name": "Can delete coupon", "content_type": 91}}, {"pk": 277, "model": "auth.permission", "fields": {"codename": "add_couponredemption", "name": "Can add coupon redemption", "content_type": 92}}, {"pk": 278, "model": "auth.permission", "fields": {"codename": "change_couponredemption", "name": "Can change coupon redemption", "content_type": 92}}, {"pk": 279, "model": "auth.permission", "fields": {"codename": "delete_couponredemption", "name": "Can delete coupon redemption", "content_type": 92}}, {"pk": 283, "model": "auth.permission", "fields": {"codename": "add_courseregcodeitem", "name": "Can add course reg code item", "content_type": 94}}, {"pk": 284, "model": "auth.permission", "fields": {"codename": "change_courseregcodeitem", "name": "Can change course reg code item", "content_type": 94}}, {"pk": 285, "model": "auth.permission", "fields": {"codename": "delete_courseregcodeitem", "name": "Can delete course reg code item", "content_type": 94}}, {"pk": 286, "model": "auth.permission", "fields": {"codename": "add_courseregcodeitemannotation", "name": "Can add course reg code item annotation", "content_type": 95}}, {"pk": 287, "model": "auth.permission", "fields": {"codename": "change_courseregcodeitemannotation", "name": "Can change course reg code item annotation", "content_type": 95}}, {"pk": 288, "model": "auth.permission", "fields": {"codename": "delete_courseregcodeitemannotation", "name": "Can delete course reg code item annotation", "content_type": 95}}, {"pk": 268, "model": "auth.permission", "fields": {"codename": "add_courseregistrationcode", "name": "Can add course registration code", "content_type": 89}}, {"pk": 269, "model": "auth.permission", "fields": {"codename": "change_courseregistrationcode", "name": "Can change course registration code", "content_type": 89}}, {"pk": 270, "model": "auth.permission", "fields": {"codename": "delete_courseregistrationcode", "name": "Can delete course registration code", "content_type": 89}}, {"pk": 298, "model": "auth.permission", "fields": {"codename": "add_donation", "name": "Can add donation", "content_type": 99}}, {"pk": 299, "model": "auth.permission", "fields": {"codename": "change_donation", "name": "Can change donation", "content_type": 99}}, {"pk": 300, "model": "auth.permission", "fields": {"codename": "delete_donation", "name": "Can delete donation", "content_type": 99}}, {"pk": 295, "model": "auth.permission", "fields": {"codename": "add_donationconfiguration", "name": "Can add donation configuration", "content_type": 98}}, {"pk": 296, "model": "auth.permission", "fields": {"codename": "change_donationconfiguration", "name": "Can change donation configuration", "content_type": 98}}, {"pk": 297, "model": "auth.permission", "fields": {"codename": "delete_donationconfiguration", "name": "Can delete donation configuration", "content_type": 98}}, {"pk": 265, "model": "auth.permission", "fields": {"codename": "add_invoice", "name": "Can add invoice", "content_type": 88}}, {"pk": 266, "model": "auth.permission", "fields": {"codename": "change_invoice", "name": "Can change invoice", "content_type": 88}}, {"pk": 267, "model": "auth.permission", "fields": {"codename": "delete_invoice", "name": "Can delete invoice", "content_type": 88}}, {"pk": 259, "model": "auth.permission", "fields": {"codename": "add_order", "name": "Can add order", "content_type": 86}}, {"pk": 260, "model": "auth.permission", "fields": {"codename": "change_order", "name": "Can change order", "content_type": 86}}, {"pk": 261, "model": "auth.permission", "fields": {"codename": "delete_order", "name": "Can delete order", "content_type": 86}}, {"pk": 262, "model": "auth.permission", "fields": {"codename": "add_orderitem", "name": "Can add order item", "content_type": 87}}, {"pk": 263, "model": "auth.permission", "fields": {"codename": "change_orderitem", "name": "Can change order item", "content_type": 87}}, {"pk": 264, "model": "auth.permission", "fields": {"codename": "delete_orderitem", "name": "Can delete order item", "content_type": 87}}, {"pk": 280, "model": "auth.permission", "fields": {"codename": "add_paidcourseregistration", "name": "Can add paid course registration", "content_type": 93}}, {"pk": 281, "model": "auth.permission", "fields": {"codename": "change_paidcourseregistration", "name": "Can change paid course registration", "content_type": 93}}, {"pk": 282, "model": "auth.permission", "fields": {"codename": "delete_paidcourseregistration", "name": "Can delete paid course registration", "content_type": 93}}, {"pk": 289, "model": "auth.permission", "fields": {"codename": "add_paidcourseregistrationannotation", "name": "Can add paid course registration annotation", "content_type": 96}}, {"pk": 290, "model": "auth.permission", "fields": {"codename": "change_paidcourseregistrationannotation", "name": "Can change paid course registration annotation", "content_type": 96}}, {"pk": 291, "model": "auth.permission", "fields": {"codename": "delete_paidcourseregistrationannotation", "name": "Can delete paid course registration annotation", "content_type": 96}}, {"pk": 271, "model": "auth.permission", "fields": {"codename": "add_registrationcoderedemption", "name": "Can add registration code redemption", "content_type": 90}}, {"pk": 272, "model": "auth.permission", "fields": {"codename": "change_registrationcoderedemption", "name": "Can change registration code redemption", "content_type": 90}}, {"pk": 273, "model": "auth.permission", "fields": {"codename": "delete_registrationcoderedemption", "name": "Can delete registration code redemption", "content_type": 90}}, {"pk": 16, "model": "auth.permission", "fields": {"codename": "add_site", "name": "Can add site", "content_type": 6}}, {"pk": 17, "model": "auth.permission", "fields": {"codename": "change_site", "name": "Can change site", "content_type": 6}}, {"pk": 18, "model": "auth.permission", "fields": {"codename": "delete_site", "name": "Can delete site", "content_type": 6}}, {"pk": 43, "model": "auth.permission", "fields": {"codename": "add_migrationhistory", "name": "Can add migration history", "content_type": 15}}, {"pk": 44, "model": "auth.permission", "fields": {"codename": "change_migrationhistory", "name": "Can change migration history", "content_type": 15}}, {"pk": 45, "model": "auth.permission", "fields": {"codename": "delete_migrationhistory", "name": "Can delete migration history", "content_type": 15}}, {"pk": 247, "model": "auth.permission", "fields": {"codename": "add_splashconfig", "name": "Can add splash config", "content_type": 82}}, {"pk": 248, "model": "auth.permission", "fields": {"codename": "change_splashconfig", "name": "Can change splash config", "content_type": 82}}, {"pk": 249, "model": "auth.permission", "fields": {"codename": "delete_splashconfig", "name": "Can delete splash config", "content_type": 82}}, {"pk": 97, "model": "auth.permission", "fields": {"codename": "add_anonymoususerid", "name": "Can add anonymous user id", "content_type": 33}}, {"pk": 98, "model": "auth.permission", "fields": {"codename": "change_anonymoususerid", "name": "Can change anonymous user id", "content_type": 33}}, {"pk": 99, "model": "auth.permission", "fields": {"codename": "delete_anonymoususerid", "name": "Can delete anonymous user id", "content_type": 33}}, {"pk": 133, "model": "auth.permission", "fields": {"codename": "add_courseaccessrole", "name": "Can add course access role", "content_type": 45}}, {"pk": 134, "model": "auth.permission", "fields": {"codename": "change_courseaccessrole", "name": "Can change course access role", "content_type": 45}}, {"pk": 135, "model": "auth.permission", "fields": {"codename": "delete_courseaccessrole", "name": "Can delete course access role", "content_type": 45}}, {"pk": 127, "model": "auth.permission", "fields": {"codename": "add_courseenrollment", "name": "Can add course enrollment", "content_type": 43}}, {"pk": 128, "model": "auth.permission", "fields": {"codename": "change_courseenrollment", "name": "Can change course enrollment", "content_type": 43}}, {"pk": 129, "model": "auth.permission", "fields": {"codename": "delete_courseenrollment", "name": "Can delete course enrollment", "content_type": 43}}, {"pk": 130, "model": "auth.permission", "fields": {"codename": "add_courseenrollmentallowed", "name": "Can add course enrollment allowed", "content_type": 44}}, {"pk": 131, "model": "auth.permission", "fields": {"codename": "change_courseenrollmentallowed", "name": "Can change course enrollment allowed", "content_type": 44}}, {"pk": 132, "model": "auth.permission", "fields": {"codename": "delete_courseenrollmentallowed", "name": "Can delete course enrollment allowed", "content_type": 44}}, {"pk": 136, "model": "auth.permission", "fields": {"codename": "add_dashboardconfiguration", "name": "Can add dashboard configuration", "content_type": 46}}, {"pk": 137, "model": "auth.permission", "fields": {"codename": "change_dashboardconfiguration", "name": "Can change dashboard configuration", "content_type": 46}}, {"pk": 138, "model": "auth.permission", "fields": {"codename": "delete_dashboardconfiguration", "name": "Can delete dashboard configuration", "content_type": 46}}, {"pk": 124, "model": "auth.permission", "fields": {"codename": "add_loginfailures", "name": "Can add login failures", "content_type": 42}}, {"pk": 125, "model": "auth.permission", "fields": {"codename": "change_loginfailures", "name": "Can change login failures", "content_type": 42}}, {"pk": 126, "model": "auth.permission", "fields": {"codename": "delete_loginfailures", "name": "Can delete login failures", "content_type": 42}}, {"pk": 121, "model": "auth.permission", "fields": {"codename": "add_passwordhistory", "name": "Can add password history", "content_type": 41}}, {"pk": 122, "model": "auth.permission", "fields": {"codename": "change_passwordhistory", "name": "Can change password history", "content_type": 41}}, {"pk": 123, "model": "auth.permission", "fields": {"codename": "delete_passwordhistory", "name": "Can delete password history", "content_type": 41}}, {"pk": 118, "model": "auth.permission", "fields": {"codename": "add_pendingemailchange", "name": "Can add pending email change", "content_type": 40}}, {"pk": 119, "model": "auth.permission", "fields": {"codename": "change_pendingemailchange", "name": "Can change pending email change", "content_type": 40}}, {"pk": 120, "model": "auth.permission", "fields": {"codename": "delete_pendingemailchange", "name": "Can delete pending email change", "content_type": 40}}, {"pk": 115, "model": "auth.permission", "fields": {"codename": "add_pendingnamechange", "name": "Can add pending name change", "content_type": 39}}, {"pk": 116, "model": "auth.permission", "fields": {"codename": "change_pendingnamechange", "name": "Can change pending name change", "content_type": 39}}, {"pk": 117, "model": "auth.permission", "fields": {"codename": "delete_pendingnamechange", "name": "Can delete pending name change", "content_type": 39}}, {"pk": 112, "model": "auth.permission", "fields": {"codename": "add_registration", "name": "Can add registration", "content_type": 38}}, {"pk": 113, "model": "auth.permission", "fields": {"codename": "change_registration", "name": "Can change registration", "content_type": 38}}, {"pk": 114, "model": "auth.permission", "fields": {"codename": "delete_registration", "name": "Can delete registration", "content_type": 38}}, {"pk": 103, "model": "auth.permission", "fields": {"codename": "add_userprofile", "name": "Can add user profile", "content_type": 35}}, {"pk": 104, "model": "auth.permission", "fields": {"codename": "change_userprofile", "name": "Can change user profile", "content_type": 35}}, {"pk": 105, "model": "auth.permission", "fields": {"codename": "delete_userprofile", "name": "Can delete user profile", "content_type": 35}}, {"pk": 106, "model": "auth.permission", "fields": {"codename": "add_usersignupsource", "name": "Can add user signup source", "content_type": 36}}, {"pk": 107, "model": "auth.permission", "fields": {"codename": "change_usersignupsource", "name": "Can change user signup source", "content_type": 36}}, {"pk": 108, "model": "auth.permission", "fields": {"codename": "delete_usersignupsource", "name": "Can delete user signup source", "content_type": 36}}, {"pk": 100, "model": "auth.permission", "fields": {"codename": "add_userstanding", "name": "Can add user standing", "content_type": 34}}, {"pk": 101, "model": "auth.permission", "fields": {"codename": "change_userstanding", "name": "Can change user standing", "content_type": 34}}, {"pk": 102, "model": "auth.permission", "fields": {"codename": "delete_userstanding", "name": "Can delete user standing", "content_type": 34}}, {"pk": 109, "model": "auth.permission", "fields": {"codename": "add_usertestgroup", "name": "Can add user test group", "content_type": 37}}, {"pk": 110, "model": "auth.permission", "fields": {"codename": "change_usertestgroup", "name": "Can change user test group", "content_type": 37}}, {"pk": 111, "model": "auth.permission", "fields": {"codename": "delete_usertestgroup", "name": "Can delete user test group", "content_type": 37}}, {"pk": 349, "model": "auth.permission", "fields": {"codename": "add_score", "name": "Can add score", "content_type": 116}}, {"pk": 350, "model": "auth.permission", "fields": {"codename": "change_score", "name": "Can change score", "content_type": 116}}, {"pk": 351, "model": "auth.permission", "fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 116}}, {"pk": 352, "model": "auth.permission", "fields": {"codename": "add_scoresummary", "name": "Can add score summary", "content_type": 117}}, {"pk": 353, "model": "auth.permission", "fields": {"codename": "change_scoresummary", "name": "Can change score summary", "content_type": 117}}, {"pk": 354, "model": "auth.permission", "fields": {"codename": "delete_scoresummary", "name": "Can delete score summary", "content_type": 117}}, {"pk": 343, "model": "auth.permission", "fields": {"codename": "add_studentitem", "name": "Can add student item", "content_type": 114}}, {"pk": 344, "model": "auth.permission", "fields": {"codename": "change_studentitem", "name": "Can change student item", "content_type": 114}}, {"pk": 345, "model": "auth.permission", "fields": {"codename": "delete_studentitem", "name": "Can delete student item", "content_type": 114}}, {"pk": 346, "model": "auth.permission", "fields": {"codename": "add_submission", "name": "Can add submission", "content_type": 115}}, {"pk": 347, "model": "auth.permission", "fields": {"codename": "change_submission", "name": "Can change submission", "content_type": 115}}, {"pk": 348, "model": "auth.permission", "fields": {"codename": "delete_submission", "name": "Can delete submission", "content_type": 115}}, {"pk": 331, "model": "auth.permission", "fields": {"codename": "add_surveyanswer", "name": "Can add survey answer", "content_type": 110}}, {"pk": 332, "model": "auth.permission", "fields": {"codename": "change_surveyanswer", "name": "Can change survey answer", "content_type": 110}}, {"pk": 333, "model": "auth.permission", "fields": {"codename": "delete_surveyanswer", "name": "Can delete survey answer", "content_type": 110}}, {"pk": 328, "model": "auth.permission", "fields": {"codename": "add_surveyform", "name": "Can add survey form", "content_type": 109}}, {"pk": 329, "model": "auth.permission", "fields": {"codename": "change_surveyform", "name": "Can change survey form", "content_type": 109}}, {"pk": 330, "model": "auth.permission", "fields": {"codename": "delete_surveyform", "name": "Can delete survey form", "content_type": 109}}, {"pk": 139, "model": "auth.permission", "fields": {"codename": "add_trackinglog", "name": "Can add tracking log", "content_type": 47}}, {"pk": 140, "model": "auth.permission", "fields": {"codename": "change_trackinglog", "name": "Can change tracking log", "content_type": 47}}, {"pk": 141, "model": "auth.permission", "fields": {"codename": "delete_trackinglog", "name": "Can delete tracking log", "content_type": 47}}, {"pk": 253, "model": "auth.permission", "fields": {"codename": "add_usercoursetag", "name": "Can add user course tag", "content_type": 84}}, {"pk": 254, "model": "auth.permission", "fields": {"codename": "change_usercoursetag", "name": "Can change user course tag", "content_type": 84}}, {"pk": 255, "model": "auth.permission", "fields": {"codename": "delete_usercoursetag", "name": "Can delete user course tag", "content_type": 84}}, {"pk": 256, "model": "auth.permission", "fields": {"codename": "add_userorgtag", "name": "Can add user org tag", "content_type": 85}}, {"pk": 257, "model": "auth.permission", "fields": {"codename": "change_userorgtag", "name": "Can change user org tag", "content_type": 85}}, {"pk": 258, "model": "auth.permission", "fields": {"codename": "delete_userorgtag", "name": "Can delete user org tag", "content_type": 85}}, {"pk": 250, "model": "auth.permission", "fields": {"codename": "add_userpreference", "name": "Can add user preference", "content_type": 83}}, {"pk": 251, "model": "auth.permission", "fields": {"codename": "change_userpreference", "name": "Can change user preference", "content_type": 83}}, {"pk": 252, "model": "auth.permission", "fields": {"codename": "delete_userpreference", "name": "Can delete user preference", "content_type": 83}}, {"pk": 307, "model": "auth.permission", "fields": {"codename": "add_softwaresecurephotoverification", "name": "Can add software secure photo verification", "content_type": 102}}, {"pk": 308, "model": "auth.permission", "fields": {"codename": "change_softwaresecurephotoverification", "name": "Can change software secure photo verification", "content_type": 102}}, {"pk": 309, "model": "auth.permission", "fields": {"codename": "delete_softwaresecurephotoverification", "name": "Can delete software secure photo verification", "content_type": 102}}, {"pk": 193, "model": "auth.permission", "fields": {"codename": "add_article", "name": "Can add article", "content_type": 65}}, {"pk": 197, "model": "auth.permission", "fields": {"codename": "assign", "name": "Can change ownership of any article", "content_type": 65}}, {"pk": 194, "model": "auth.permission", "fields": {"codename": "change_article", "name": "Can change article", "content_type": 65}}, {"pk": 195, "model": "auth.permission", "fields": {"codename": "delete_article", "name": "Can delete article", "content_type": 65}}, {"pk": 198, "model": "auth.permission", "fields": {"codename": "grant", "name": "Can assign permissions to other users", "content_type": 65}}, {"pk": 196, "model": "auth.permission", "fields": {"codename": "moderate", "name": "Can edit all articles and lock/unlock/restore", "content_type": 65}}, {"pk": 199, "model": "auth.permission", "fields": {"codename": "add_articleforobject", "name": "Can add Article for object", "content_type": 66}}, {"pk": 200, "model": "auth.permission", "fields": {"codename": "change_articleforobject", "name": "Can change Article for object", "content_type": 66}}, {"pk": 201, "model": "auth.permission", "fields": {"codename": "delete_articleforobject", "name": "Can delete Article for object", "content_type": 66}}, {"pk": 208, "model": "auth.permission", "fields": {"codename": "add_articleplugin", "name": "Can add article plugin", "content_type": 69}}, {"pk": 209, "model": "auth.permission", "fields": {"codename": "change_articleplugin", "name": "Can change article plugin", "content_type": 69}}, {"pk": 210, "model": "auth.permission", "fields": {"codename": "delete_articleplugin", "name": "Can delete article plugin", "content_type": 69}}, {"pk": 202, "model": "auth.permission", "fields": {"codename": "add_articlerevision", "name": "Can add article revision", "content_type": 67}}, {"pk": 203, "model": "auth.permission", "fields": {"codename": "change_articlerevision", "name": "Can change article revision", "content_type": 67}}, {"pk": 204, "model": "auth.permission", "fields": {"codename": "delete_articlerevision", "name": "Can delete article revision", "content_type": 67}}, {"pk": 223, "model": "auth.permission", "fields": {"codename": "add_articlesubscription", "name": "Can add article subscription", "content_type": 74}}, {"pk": 224, "model": "auth.permission", "fields": {"codename": "change_articlesubscription", "name": "Can change article subscription", "content_type": 74}}, {"pk": 225, "model": "auth.permission", "fields": {"codename": "delete_articlesubscription", "name": "Can delete article subscription", "content_type": 74}}, {"pk": 211, "model": "auth.permission", "fields": {"codename": "add_reusableplugin", "name": "Can add reusable plugin", "content_type": 70}}, {"pk": 212, "model": "auth.permission", "fields": {"codename": "change_reusableplugin", "name": "Can change reusable plugin", "content_type": 70}}, {"pk": 213, "model": "auth.permission", "fields": {"codename": "delete_reusableplugin", "name": "Can delete reusable plugin", "content_type": 70}}, {"pk": 217, "model": "auth.permission", "fields": {"codename": "add_revisionplugin", "name": "Can add revision plugin", "content_type": 72}}, {"pk": 218, "model": "auth.permission", "fields": {"codename": "change_revisionplugin", "name": "Can change revision plugin", "content_type": 72}}, {"pk": 219, "model": "auth.permission", "fields": {"codename": "delete_revisionplugin", "name": "Can delete revision plugin", "content_type": 72}}, {"pk": 220, "model": "auth.permission", "fields": {"codename": "add_revisionpluginrevision", "name": "Can add revision plugin revision", "content_type": 73}}, {"pk": 221, "model": "auth.permission", "fields": {"codename": "change_revisionpluginrevision", "name": "Can change revision plugin revision", "content_type": 73}}, {"pk": 222, "model": "auth.permission", "fields": {"codename": "delete_revisionpluginrevision", "name": "Can delete revision plugin revision", "content_type": 73}}, {"pk": 214, "model": "auth.permission", "fields": {"codename": "add_simpleplugin", "name": "Can add simple plugin", "content_type": 71}}, {"pk": 215, "model": "auth.permission", "fields": {"codename": "change_simpleplugin", "name": "Can change simple plugin", "content_type": 71}}, {"pk": 216, "model": "auth.permission", "fields": {"codename": "delete_simpleplugin", "name": "Can delete simple plugin", "content_type": 71}}, {"pk": 205, "model": "auth.permission", "fields": {"codename": "add_urlpath", "name": "Can add URL path", "content_type": 68}}, {"pk": 206, "model": "auth.permission", "fields": {"codename": "change_urlpath", "name": "Can change URL path", "content_type": 68}}, {"pk": 207, "model": "auth.permission", "fields": {"codename": "delete_urlpath", "name": "Can delete URL path", "content_type": 68}}, {"pk": 403, "model": "auth.permission", "fields": {"codename": "add_assessmentworkflow", "name": "Can add assessment workflow", "content_type": 134}}, {"pk": 404, "model": "auth.permission", "fields": {"codename": "change_assessmentworkflow", "name": "Can change assessment workflow", "content_type": 134}}, {"pk": 405, "model": "auth.permission", "fields": {"codename": "delete_assessmentworkflow", "name": "Can delete assessment workflow", "content_type": 134}}, {"pk": 406, "model": "auth.permission", "fields": {"codename": "add_assessmentworkflowstep", "name": "Can add assessment workflow step", "content_type": 135}}, {"pk": 407, "model": "auth.permission", "fields": {"codename": "change_assessmentworkflowstep", "name": "Can change assessment workflow step", "content_type": 135}}, {"pk": 408, "model": "auth.permission", "fields": {"codename": "delete_assessmentworkflowstep", "name": "Can delete assessment workflow step", "content_type": 135}}, {"pk": 445, "model": "auth.permission", "fields": {"codename": "add_studioconfig", "name": "Can add studio config", "content_type": 148}}, {"pk": 446, "model": "auth.permission", "fields": {"codename": "change_studioconfig", "name": "Can change studio config", "content_type": 148}}, {"pk": 447, "model": "auth.permission", "fields": {"codename": "delete_studioconfig", "name": "Can delete studio config", "content_type": 148}}, {"pk": 1, "model": "dark_lang.darklangconfig", "fields": {"change_date": "2015-01-15T03:15:35Z", "changed_by": null, "enabled": true, "released_languages": ""}}] +[{"pk": 71, "model": "contenttypes.contenttype", "fields": {"model": "accesstoken", "name": "access token", "app_label": "oauth2"}}, {"pk": 147, "model": "contenttypes.contenttype", "fields": {"model": "aiclassifier", "name": "ai classifier", "app_label": "assessment"}}, {"pk": 146, "model": "contenttypes.contenttype", "fields": {"model": "aiclassifierset", "name": "ai classifier set", "app_label": "assessment"}}, {"pk": 149, "model": "contenttypes.contenttype", "fields": {"model": "aigradingworkflow", "name": "ai grading workflow", "app_label": "assessment"}}, {"pk": 148, "model": "contenttypes.contenttype", "fields": {"model": "aitrainingworkflow", "name": "ai training workflow", "app_label": "assessment"}}, {"pk": 34, "model": "contenttypes.contenttype", "fields": {"model": "anonymoususerid", "name": "anonymous user id", "app_label": "student"}}, {"pk": 74, "model": "contenttypes.contenttype", "fields": {"model": "article", "name": "article", "app_label": "wiki"}}, {"pk": 75, "model": "contenttypes.contenttype", "fields": {"model": "articleforobject", "name": "Article for object", "app_label": "wiki"}}, {"pk": 78, "model": "contenttypes.contenttype", "fields": {"model": "articleplugin", "name": "article plugin", "app_label": "wiki"}}, {"pk": 76, "model": "contenttypes.contenttype", "fields": {"model": "articlerevision", "name": "article revision", "app_label": "wiki"}}, {"pk": 83, "model": "contenttypes.contenttype", "fields": {"model": "articlesubscription", "name": "article subscription", "app_label": "wiki"}}, {"pk": 137, "model": "contenttypes.contenttype", "fields": {"model": "assessment", "name": "assessment", "app_label": "assessment"}}, {"pk": 140, "model": "contenttypes.contenttype", "fields": {"model": "assessmentfeedback", "name": "assessment feedback", "app_label": "assessment"}}, {"pk": 139, "model": "contenttypes.contenttype", "fields": {"model": "assessmentfeedbackoption", "name": "assessment feedback option", "app_label": "assessment"}}, {"pk": 138, "model": "contenttypes.contenttype", "fields": {"model": "assessmentpart", "name": "assessment part", "app_label": "assessment"}}, {"pk": 150, "model": "contenttypes.contenttype", "fields": {"model": "assessmentworkflow", "name": "assessment workflow", "app_label": "workflow"}}, {"pk": 152, "model": "contenttypes.contenttype", "fields": {"model": "assessmentworkflowcancellation", "name": "assessment workflow cancellation", "app_label": "workflow"}}, {"pk": 151, "model": "contenttypes.contenttype", "fields": {"model": "assessmentworkflowstep", "name": "assessment workflow step", "app_label": "workflow"}}, {"pk": 19, "model": "contenttypes.contenttype", "fields": {"model": "association", "name": "association", "app_label": "django_openid_auth"}}, {"pk": 25, "model": "contenttypes.contenttype", "fields": {"model": "association", "name": "association", "app_label": "default"}}, {"pk": 67, "model": "contenttypes.contenttype", "fields": {"model": "brandinginfoconfig", "name": "branding info config", "app_label": "branding"}}, {"pk": 57, "model": "contenttypes.contenttype", "fields": {"model": "certificategenerationconfiguration", "name": "certificate generation configuration", "app_label": "certificates"}}, {"pk": 56, "model": "contenttypes.contenttype", "fields": {"model": "certificategenerationcoursesetting", "name": "certificate generation course setting", "app_label": "certificates"}}, {"pk": 110, "model": "contenttypes.contenttype", "fields": {"model": "certificateitem", "name": "certificate item", "app_label": "shoppingcart"}}, {"pk": 52, "model": "contenttypes.contenttype", "fields": {"model": "certificatewhitelist", "name": "certificate whitelist", "app_label": "certificates"}}, {"pk": 69, "model": "contenttypes.contenttype", "fields": {"model": "client", "name": "client", "app_label": "oauth2"}}, {"pk": 26, "model": "contenttypes.contenttype", "fields": {"model": "code", "name": "code", "app_label": "default"}}, {"pk": 4, "model": "contenttypes.contenttype", "fields": {"model": "contenttype", "name": "content type", "app_label": "contenttypes"}}, {"pk": 22, "model": "contenttypes.contenttype", "fields": {"model": "corsmodel", "name": "cors model", "app_label": "corsheaders"}}, {"pk": 121, "model": "contenttypes.contenttype", "fields": {"model": "country", "name": "country", "app_label": "embargo"}}, {"pk": 122, "model": "contenttypes.contenttype", "fields": {"model": "countryaccessrule", "name": "country access rule", "app_label": "embargo"}}, {"pk": 104, "model": "contenttypes.contenttype", "fields": {"model": "coupon", "name": "coupon", "app_label": "shoppingcart"}}, {"pk": 105, "model": "contenttypes.contenttype", "fields": {"model": "couponredemption", "name": "coupon redemption", "app_label": "shoppingcart"}}, {"pk": 46, "model": "contenttypes.contenttype", "fields": {"model": "courseaccessrole", "name": "course access role", "app_label": "student"}}, {"pk": 123, "model": "contenttypes.contenttype", "fields": {"model": "courseaccessrulehistory", "name": "course access rule history", "app_label": "embargo"}}, {"pk": 66, "model": "contenttypes.contenttype", "fields": {"model": "courseauthorization", "name": "course authorization", "app_label": "bulk_email"}}, {"pk": 161, "model": "contenttypes.contenttype", "fields": {"model": "coursecontentmilestone", "name": "course content milestone", "app_label": "milestones"}}, {"pk": 164, "model": "contenttypes.contenttype", "fields": {"model": "coursecreator", "name": "course creator", "app_label": "course_creators"}}, {"pk": 63, "model": "contenttypes.contenttype", "fields": {"model": "courseemail", "name": "course email", "app_label": "bulk_email"}}, {"pk": 65, "model": "contenttypes.contenttype", "fields": {"model": "courseemailtemplate", "name": "course email template", "app_label": "bulk_email"}}, {"pk": 44, "model": "contenttypes.contenttype", "fields": {"model": "courseenrollment", "name": "course enrollment", "app_label": "student"}}, {"pk": 45, "model": "contenttypes.contenttype", "fields": {"model": "courseenrollmentallowed", "name": "course enrollment allowed", "app_label": "student"}}, {"pk": 160, "model": "contenttypes.contenttype", "fields": {"model": "coursemilestone", "name": "course milestone", "app_label": "milestones"}}, {"pk": 113, "model": "contenttypes.contenttype", "fields": {"model": "coursemode", "name": "course mode", "app_label": "course_modes"}}, {"pk": 114, "model": "contenttypes.contenttype", "fields": {"model": "coursemodesarchive", "name": "course modes archive", "app_label": "course_modes"}}, {"pk": 107, "model": "contenttypes.contenttype", "fields": {"model": "courseregcodeitem", "name": "course reg code item", "app_label": "shoppingcart"}}, {"pk": 108, "model": "contenttypes.contenttype", "fields": {"model": "courseregcodeitemannotation", "name": "course reg code item annotation", "app_label": "shoppingcart"}}, {"pk": 102, "model": "contenttypes.contenttype", "fields": {"model": "courseregistrationcode", "name": "course registration code", "app_label": "shoppingcart"}}, {"pk": 100, "model": "contenttypes.contenttype", "fields": {"model": "courseregistrationcodeinvoiceitem", "name": "course registration code invoice item", "app_label": "shoppingcart"}}, {"pk": 125, "model": "contenttypes.contenttype", "fields": {"model": "coursererunstate", "name": "course rerun state", "app_label": "course_action_state"}}, {"pk": 59, "model": "contenttypes.contenttype", "fields": {"model": "coursesoftware", "name": "course software", "app_label": "licenses"}}, {"pk": 129, "model": "contenttypes.contenttype", "fields": {"model": "coursestructure", "name": "course structure", "app_label": "course_structures"}}, {"pk": 61, "model": "contenttypes.contenttype", "fields": {"model": "courseusergroup", "name": "course user group", "app_label": "course_groups"}}, {"pk": 62, "model": "contenttypes.contenttype", "fields": {"model": "courseusergrouppartitiongroup", "name": "course user group partition group", "app_label": "course_groups"}}, {"pk": 155, "model": "contenttypes.contenttype", "fields": {"model": "coursevideo", "name": "course video", "app_label": "edxval"}}, {"pk": 135, "model": "contenttypes.contenttype", "fields": {"model": "criterion", "name": "criterion", "app_label": "assessment"}}, {"pk": 136, "model": "contenttypes.contenttype", "fields": {"model": "criterionoption", "name": "criterion option", "app_label": "assessment"}}, {"pk": 10, "model": "contenttypes.contenttype", "fields": {"model": "crontabschedule", "name": "crontab", "app_label": "djcelery"}}, {"pk": 116, "model": "contenttypes.contenttype", "fields": {"model": "darklangconfig", "name": "dark lang config", "app_label": "dark_lang"}}, {"pk": 47, "model": "contenttypes.contenttype", "fields": {"model": "dashboardconfiguration", "name": "dashboard configuration", "app_label": "student"}}, {"pk": 112, "model": "contenttypes.contenttype", "fields": {"model": "donation", "name": "donation", "app_label": "shoppingcart"}}, {"pk": 111, "model": "contenttypes.contenttype", "fields": {"model": "donationconfiguration", "name": "donation configuration", "app_label": "shoppingcart"}}, {"pk": 118, "model": "contenttypes.contenttype", "fields": {"model": "embargoedcourse", "name": "embargoed course", "app_label": "embargo"}}, {"pk": 119, "model": "contenttypes.contenttype", "fields": {"model": "embargoedstate", "name": "embargoed state", "app_label": "embargo"}}, {"pk": 156, "model": "contenttypes.contenttype", "fields": {"model": "encodedvideo", "name": "encoded video", "app_label": "edxval"}}, {"pk": 49, "model": "contenttypes.contenttype", "fields": {"model": "entranceexamconfiguration", "name": "entrance exam configuration", "app_label": "student"}}, {"pk": 55, "model": "contenttypes.contenttype", "fields": {"model": "examplecertificate", "name": "example certificate", "app_label": "certificates"}}, {"pk": 54, "model": "contenttypes.contenttype", "fields": {"model": "examplecertificateset", "name": "example certificate set", "app_label": "certificates"}}, {"pk": 68, "model": "contenttypes.contenttype", "fields": {"model": "externalauthmap", "name": "external auth map", "app_label": "external_auth"}}, {"pk": 53, "model": "contenttypes.contenttype", "fields": {"model": "generatedcertificate", "name": "generated certificate", "app_label": "certificates"}}, {"pk": 70, "model": "contenttypes.contenttype", "fields": {"model": "grant", "name": "grant", "app_label": "oauth2"}}, {"pk": 2, "model": "contenttypes.contenttype", "fields": {"model": "group", "name": "group", "app_label": "auth"}}, {"pk": 58, "model": "contenttypes.contenttype", "fields": {"model": "instructortask", "name": "instructor task", "app_label": "instructor_task"}}, {"pk": 9, "model": "contenttypes.contenttype", "fields": {"model": "intervalschedule", "name": "interval", "app_label": "djcelery"}}, {"pk": 97, "model": "contenttypes.contenttype", "fields": {"model": "invoice", "name": "invoice", "app_label": "shoppingcart"}}, {"pk": 101, "model": "contenttypes.contenttype", "fields": {"model": "invoicehistory", "name": "invoice history", "app_label": "shoppingcart"}}, {"pk": 99, "model": "contenttypes.contenttype", "fields": {"model": "invoiceitem", "name": "invoice item", "app_label": "shoppingcart"}}, {"pk": 98, "model": "contenttypes.contenttype", "fields": {"model": "invoicetransaction", "name": "invoice transaction", "app_label": "shoppingcart"}}, {"pk": 124, "model": "contenttypes.contenttype", "fields": {"model": "ipfilter", "name": "ip filter", "app_label": "embargo"}}, {"pk": 48, "model": "contenttypes.contenttype", "fields": {"model": "linkedinaddtoprofileconfiguration", "name": "linked in add to profile configuration", "app_label": "student"}}, {"pk": 21, "model": "contenttypes.contenttype", "fields": {"model": "logentry", "name": "log entry", "app_label": "admin"}}, {"pk": 43, "model": "contenttypes.contenttype", "fields": {"model": "loginfailures", "name": "login failures", "app_label": "student"}}, {"pk": 117, "model": "contenttypes.contenttype", "fields": {"model": "midcoursereverificationwindow", "name": "midcourse reverification window", "app_label": "reverification"}}, {"pk": 15, "model": "contenttypes.contenttype", "fields": {"model": "migrationhistory", "name": "migration history", "app_label": "south"}}, {"pk": 158, "model": "contenttypes.contenttype", "fields": {"model": "milestone", "name": "milestone", "app_label": "milestones"}}, {"pk": 159, "model": "contenttypes.contenttype", "fields": {"model": "milestonerelationshiptype", "name": "milestone relationship type", "app_label": "milestones"}}, {"pk": 18, "model": "contenttypes.contenttype", "fields": {"model": "nonce", "name": "nonce", "app_label": "django_openid_auth"}}, {"pk": 24, "model": "contenttypes.contenttype", "fields": {"model": "nonce", "name": "nonce", "app_label": "default"}}, {"pk": 90, "model": "contenttypes.contenttype", "fields": {"model": "note", "name": "note", "app_label": "notes"}}, {"pk": 87, "model": "contenttypes.contenttype", "fields": {"model": "notification", "name": "notification", "app_label": "django_notify"}}, {"pk": 32, "model": "contenttypes.contenttype", "fields": {"model": "offlinecomputedgrade", "name": "offline computed grade", "app_label": "courseware"}}, {"pk": 33, "model": "contenttypes.contenttype", "fields": {"model": "offlinecomputedgradelog", "name": "offline computed grade log", "app_label": "courseware"}}, {"pk": 64, "model": "contenttypes.contenttype", "fields": {"model": "optout", "name": "optout", "app_label": "bulk_email"}}, {"pk": 95, "model": "contenttypes.contenttype", "fields": {"model": "order", "name": "order", "app_label": "shoppingcart"}}, {"pk": 96, "model": "contenttypes.contenttype", "fields": {"model": "orderitem", "name": "order item", "app_label": "shoppingcart"}}, {"pk": 106, "model": "contenttypes.contenttype", "fields": {"model": "paidcourseregistration", "name": "paid course registration", "app_label": "shoppingcart"}}, {"pk": 109, "model": "contenttypes.contenttype", "fields": {"model": "paidcourseregistrationannotation", "name": "paid course registration annotation", "app_label": "shoppingcart"}}, {"pk": 42, "model": "contenttypes.contenttype", "fields": {"model": "passwordhistory", "name": "password history", "app_label": "student"}}, {"pk": 141, "model": "contenttypes.contenttype", "fields": {"model": "peerworkflow", "name": "peer workflow", "app_label": "assessment"}}, {"pk": 142, "model": "contenttypes.contenttype", "fields": {"model": "peerworkflowitem", "name": "peer workflow item", "app_label": "assessment"}}, {"pk": 41, "model": "contenttypes.contenttype", "fields": {"model": "pendingemailchange", "name": "pending email change", "app_label": "student"}}, {"pk": 40, "model": "contenttypes.contenttype", "fields": {"model": "pendingnamechange", "name": "pending name change", "app_label": "student"}}, {"pk": 12, "model": "contenttypes.contenttype", "fields": {"model": "periodictask", "name": "periodic task", "app_label": "djcelery"}}, {"pk": 11, "model": "contenttypes.contenttype", "fields": {"model": "periodictasks", "name": "periodic tasks", "app_label": "djcelery"}}, {"pk": 1, "model": "contenttypes.contenttype", "fields": {"model": "permission", "name": "permission", "app_label": "auth"}}, {"pk": 153, "model": "contenttypes.contenttype", "fields": {"model": "profile", "name": "profile", "app_label": "edxval"}}, {"pk": 17, "model": "contenttypes.contenttype", "fields": {"model": "psychometricdata", "name": "psychometric data", "app_label": "psychometrics"}}, {"pk": 89, "model": "contenttypes.contenttype", "fields": {"model": "puzzlecomplete", "name": "puzzle complete", "app_label": "foldit"}}, {"pk": 51, "model": "contenttypes.contenttype", "fields": {"model": "ratelimitconfiguration", "name": "rate limit configuration", "app_label": "util"}}, {"pk": 72, "model": "contenttypes.contenttype", "fields": {"model": "refreshtoken", "name": "refresh token", "app_label": "oauth2"}}, {"pk": 39, "model": "contenttypes.contenttype", "fields": {"model": "registration", "name": "registration", "app_label": "student"}}, {"pk": 103, "model": "contenttypes.contenttype", "fields": {"model": "registrationcoderedemption", "name": "registration code redemption", "app_label": "shoppingcart"}}, {"pk": 120, "model": "contenttypes.contenttype", "fields": {"model": "restrictedcourse", "name": "restricted course", "app_label": "embargo"}}, {"pk": 79, "model": "contenttypes.contenttype", "fields": {"model": "reusableplugin", "name": "reusable plugin", "app_label": "wiki"}}, {"pk": 81, "model": "contenttypes.contenttype", "fields": {"model": "revisionplugin", "name": "revision plugin", "app_label": "wiki"}}, {"pk": 82, "model": "contenttypes.contenttype", "fields": {"model": "revisionpluginrevision", "name": "revision plugin revision", "app_label": "wiki"}}, {"pk": 134, "model": "contenttypes.contenttype", "fields": {"model": "rubric", "name": "rubric", "app_label": "assessment"}}, {"pk": 8, "model": "contenttypes.contenttype", "fields": {"model": "tasksetmeta", "name": "saved group result", "app_label": "djcelery"}}, {"pk": 88, "model": "contenttypes.contenttype", "fields": {"model": "score", "name": "score", "app_label": "foldit"}}, {"pk": 132, "model": "contenttypes.contenttype", "fields": {"model": "score", "name": "score", "app_label": "submissions"}}, {"pk": 133, "model": "contenttypes.contenttype", "fields": {"model": "scoresummary", "name": "score summary", "app_label": "submissions"}}, {"pk": 16, "model": "contenttypes.contenttype", "fields": {"model": "servercircuit", "name": "server circuit", "app_label": "circuit"}}, {"pk": 5, "model": "contenttypes.contenttype", "fields": {"model": "session", "name": "session", "app_label": "sessions"}}, {"pk": 85, "model": "contenttypes.contenttype", "fields": {"model": "settings", "name": "settings", "app_label": "django_notify"}}, {"pk": 80, "model": "contenttypes.contenttype", "fields": {"model": "simpleplugin", "name": "simple plugin", "app_label": "wiki"}}, {"pk": 6, "model": "contenttypes.contenttype", "fields": {"model": "site", "name": "site", "app_label": "sites"}}, {"pk": 115, "model": "contenttypes.contenttype", "fields": {"model": "softwaresecurephotoverification", "name": "software secure photo verification", "app_label": "verify_student"}}, {"pk": 91, "model": "contenttypes.contenttype", "fields": {"model": "splashconfig", "name": "splash config", "app_label": "splash"}}, {"pk": 130, "model": "contenttypes.contenttype", "fields": {"model": "studentitem", "name": "student item", "app_label": "submissions"}}, {"pk": 27, "model": "contenttypes.contenttype", "fields": {"model": "studentmodule", "name": "student module", "app_label": "courseware"}}, {"pk": 28, "model": "contenttypes.contenttype", "fields": {"model": "studentmodulehistory", "name": "student module history", "app_label": "courseware"}}, {"pk": 144, "model": "contenttypes.contenttype", "fields": {"model": "studenttrainingworkflow", "name": "student training workflow", "app_label": "assessment"}}, {"pk": 145, "model": "contenttypes.contenttype", "fields": {"model": "studenttrainingworkflowitem", "name": "student training workflow item", "app_label": "assessment"}}, {"pk": 165, "model": "contenttypes.contenttype", "fields": {"model": "studioconfig", "name": "studio config", "app_label": "xblock_config"}}, {"pk": 131, "model": "contenttypes.contenttype", "fields": {"model": "submission", "name": "submission", "app_label": "submissions"}}, {"pk": 86, "model": "contenttypes.contenttype", "fields": {"model": "subscription", "name": "subscription", "app_label": "django_notify"}}, {"pk": 157, "model": "contenttypes.contenttype", "fields": {"model": "subtitle", "name": "subtitle", "app_label": "edxval"}}, {"pk": 127, "model": "contenttypes.contenttype", "fields": {"model": "surveyanswer", "name": "survey answer", "app_label": "survey"}}, {"pk": 126, "model": "contenttypes.contenttype", "fields": {"model": "surveyform", "name": "survey form", "app_label": "survey"}}, {"pk": 14, "model": "contenttypes.contenttype", "fields": {"model": "taskstate", "name": "task", "app_label": "djcelery"}}, {"pk": 7, "model": "contenttypes.contenttype", "fields": {"model": "taskmeta", "name": "task state", "app_label": "djcelery"}}, {"pk": 50, "model": "contenttypes.contenttype", "fields": {"model": "trackinglog", "name": "tracking log", "app_label": "track"}}, {"pk": 143, "model": "contenttypes.contenttype", "fields": {"model": "trainingexample", "name": "training example", "app_label": "assessment"}}, {"pk": 73, "model": "contenttypes.contenttype", "fields": {"model": "trustedclient", "name": "trusted client", "app_label": "oauth2_provider"}}, {"pk": 84, "model": "contenttypes.contenttype", "fields": {"model": "notificationtype", "name": "type", "app_label": "django_notify"}}, {"pk": 77, "model": "contenttypes.contenttype", "fields": {"model": "urlpath", "name": "URL path", "app_label": "wiki"}}, {"pk": 3, "model": "contenttypes.contenttype", "fields": {"model": "user", "name": "user", "app_label": "auth"}}, {"pk": 93, "model": "contenttypes.contenttype", "fields": {"model": "usercoursetag", "name": "user course tag", "app_label": "user_api"}}, {"pk": 60, "model": "contenttypes.contenttype", "fields": {"model": "userlicense", "name": "user license", "app_label": "licenses"}}, {"pk": 162, "model": "contenttypes.contenttype", "fields": {"model": "usermilestone", "name": "user milestone", "app_label": "milestones"}}, {"pk": 20, "model": "contenttypes.contenttype", "fields": {"model": "useropenid", "name": "user open id", "app_label": "django_openid_auth"}}, {"pk": 94, "model": "contenttypes.contenttype", "fields": {"model": "userorgtag", "name": "user org tag", "app_label": "user_api"}}, {"pk": 92, "model": "contenttypes.contenttype", "fields": {"model": "userpreference", "name": "user preference", "app_label": "user_api"}}, {"pk": 36, "model": "contenttypes.contenttype", "fields": {"model": "userprofile", "name": "user profile", "app_label": "student"}}, {"pk": 37, "model": "contenttypes.contenttype", "fields": {"model": "usersignupsource", "name": "user signup source", "app_label": "student"}}, {"pk": 23, "model": "contenttypes.contenttype", "fields": {"model": "usersocialauth", "name": "user social auth", "app_label": "default"}}, {"pk": 35, "model": "contenttypes.contenttype", "fields": {"model": "userstanding", "name": "user standing", "app_label": "student"}}, {"pk": 38, "model": "contenttypes.contenttype", "fields": {"model": "usertestgroup", "name": "user test group", "app_label": "student"}}, {"pk": 154, "model": "contenttypes.contenttype", "fields": {"model": "video", "name": "video", "app_label": "edxval"}}, {"pk": 163, "model": "contenttypes.contenttype", "fields": {"model": "videouploadconfig", "name": "video upload config", "app_label": "contentstore"}}, {"pk": 13, "model": "contenttypes.contenttype", "fields": {"model": "workerstate", "name": "worker", "app_label": "djcelery"}}, {"pk": 128, "model": "contenttypes.contenttype", "fields": {"model": "xblockasidesconfig", "name": "x block asides config", "app_label": "lms_xblock"}}, {"pk": 31, "model": "contenttypes.contenttype", "fields": {"model": "xmodulestudentinfofield", "name": "x module student info field", "app_label": "courseware"}}, {"pk": 30, "model": "contenttypes.contenttype", "fields": {"model": "xmodulestudentprefsfield", "name": "x module student prefs field", "app_label": "courseware"}}, {"pk": 29, "model": "contenttypes.contenttype", "fields": {"model": "xmoduleuserstatesummaryfield", "name": "x module user state summary field", "app_label": "courseware"}}, {"pk": 1, "model": "sites.site", "fields": {"domain": "example.com", "name": "example.com"}}, {"pk": 1, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0001_initial"}}, {"pk": 2, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0002_add_indexes"}}, {"pk": 3, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0003_done_grade_cache"}}, {"pk": 4, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0004_add_field_studentmodule_course_id"}}, {"pk": 5, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0005_auto__add_offlinecomputedgrade__add_unique_offlinecomputedgrade_user_c"}}, {"pk": 6, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0006_create_student_module_history"}}, {"pk": 7, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:22Z", "app_name": "courseware", "migration": "0007_allow_null_version_in_history"}}, {"pk": 8, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:23Z", "app_name": "courseware", "migration": "0008_add_xmodule_storage"}}, {"pk": 9, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:23Z", "app_name": "courseware", "migration": "0009_add_field_default"}}, {"pk": 10, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:23Z", "app_name": "courseware", "migration": "0010_rename_xblock_field_content_to_user_state_summary"}}, {"pk": 11, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:23Z", "app_name": "student", "migration": "0001_initial"}}, {"pk": 12, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:23Z", "app_name": "student", "migration": "0002_text_to_varchar_and_indexes"}}, {"pk": 13, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0003_auto__add_usertestgroup"}}, {"pk": 14, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0004_add_email_index"}}, {"pk": 15, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0005_name_change"}}, {"pk": 16, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0006_expand_meta_field"}}, {"pk": 17, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0007_convert_to_utf8"}}, {"pk": 18, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0008__auto__add_courseregistration"}}, {"pk": 19, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0009_auto__del_courseregistration__add_courseenrollment"}}, {"pk": 20, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0010_auto__chg_field_courseenrollment_course_id"}}, {"pk": 21, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0011_auto__chg_field_courseenrollment_user__del_unique_courseenrollment_use"}}, {"pk": 22, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0012_auto__add_field_userprofile_gender__add_field_userprofile_date_of_birt"}}, {"pk": 23, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0013_auto__chg_field_userprofile_meta"}}, {"pk": 24, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0014_auto__del_courseenrollment"}}, {"pk": 25, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0015_auto__add_courseenrollment__add_unique_courseenrollment_user_course_id"}}, {"pk": 26, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0016_auto__add_field_courseenrollment_date__chg_field_userprofile_country"}}, {"pk": 27, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0017_rename_date_to_created"}}, {"pk": 28, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0018_auto"}}, {"pk": 29, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:24Z", "app_name": "student", "migration": "0019_create_approved_demographic_fields_fall_2012"}}, {"pk": 30, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0020_add_test_center_user"}}, {"pk": 31, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0021_remove_askbot"}}, {"pk": 32, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0022_auto__add_courseenrollmentallowed__add_unique_courseenrollmentallowed_"}}, {"pk": 33, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0023_add_test_center_registration"}}, {"pk": 34, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0024_add_allow_certificate"}}, {"pk": 35, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0025_auto__add_field_courseenrollmentallowed_auto_enroll"}}, {"pk": 36, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0026_auto__remove_index_student_testcenterregistration_accommodation_request"}}, {"pk": 37, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0027_add_active_flag_and_mode_to_courseware_enrollment"}}, {"pk": 38, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0028_auto__add_userstanding"}}, {"pk": 39, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0029_add_lookup_table_between_user_and_anonymous_student_id"}}, {"pk": 40, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0029_remove_pearson"}}, {"pk": 41, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0030_auto__chg_field_anonymoususerid_anonymous_user_id"}}, {"pk": 42, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:25Z", "app_name": "student", "migration": "0031_drop_student_anonymoususerid_temp_archive"}}, {"pk": 43, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:26Z", "app_name": "student", "migration": "0032_add_field_UserProfile_country_add_field_UserProfile_city"}}, {"pk": 44, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:26Z", "app_name": "student", "migration": "0032_auto__add_loginfailures"}}, {"pk": 45, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:26Z", "app_name": "student", "migration": "0033_auto__add_passwordhistory"}}, {"pk": 46, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:26Z", "app_name": "student", "migration": "0034_auto__add_courseaccessrole"}}, {"pk": 47, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0035_access_roles"}}, {"pk": 48, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0036_access_roles_orgless"}}, {"pk": 49, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0037_auto__add_courseregistrationcode"}}, {"pk": 50, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0038_auto__add_usersignupsource"}}, {"pk": 51, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0039_auto__del_courseregistrationcode"}}, {"pk": 52, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0040_auto__del_field_usersignupsource_user_id__add_field_usersignupsource_u"}}, {"pk": 53, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0041_add_dashboard_config"}}, {"pk": 54, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0042_grant_sales_admin_roles"}}, {"pk": 55, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0043_auto__add_linkedinaddtoprofileconfiguration"}}, {"pk": 56, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0044_linkedin_add_company_identifier"}}, {"pk": 57, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:27Z", "app_name": "student", "migration": "0045_add_trk_partner_to_linkedin_config"}}, {"pk": 58, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:28Z", "app_name": "student", "migration": "0046_auto__add_entranceexamconfiguration__add_unique_entranceexamconfigurat"}}, {"pk": 59, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:28Z", "app_name": "track", "migration": "0001_initial"}}, {"pk": 60, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:28Z", "app_name": "track", "migration": "0002_auto__add_field_trackinglog_host__chg_field_trackinglog_event_type__ch"}}, {"pk": 61, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:28Z", "app_name": "util", "migration": "0001_initial"}}, {"pk": 62, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:28Z", "app_name": "util", "migration": "0002_default_rate_limit_config"}}, {"pk": 63, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0001_added_generatedcertificates"}}, {"pk": 64, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0002_auto__add_field_generatedcertificate_download_url"}}, {"pk": 65, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0003_auto__add_field_generatedcertificate_enabled"}}, {"pk": 66, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0004_auto__add_field_generatedcertificate_graded_certificate_id__add_field_"}}, {"pk": 67, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0005_auto__add_field_generatedcertificate_name"}}, {"pk": 68, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0006_auto__chg_field_generatedcertificate_certificate_id"}}, {"pk": 69, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0007_auto__add_revokedcertificate"}}, {"pk": 70, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0008_auto__del_revokedcertificate__del_field_generatedcertificate_name__add"}}, {"pk": 71, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0009_auto__del_field_generatedcertificate_graded_download_url__del_field_ge"}}, {"pk": 72, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0010_auto__del_field_generatedcertificate_enabled__add_field_generatedcerti"}}, {"pk": 73, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0011_auto__del_field_generatedcertificate_certificate_id__add_field_generat"}}, {"pk": 74, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0012_auto__add_field_generatedcertificate_name__add_field_generatedcertific"}}, {"pk": 75, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0013_auto__add_field_generatedcertificate_error_reason"}}, {"pk": 76, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0014_adding_whitelist"}}, {"pk": 77, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0015_adding_mode_for_verified_certs"}}, {"pk": 78, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0016_change_course_key_fields"}}, {"pk": 79, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:29Z", "app_name": "certificates", "migration": "0017_auto__add_certificategenerationconfiguration"}}, {"pk": 80, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:30Z", "app_name": "certificates", "migration": "0018_add_example_cert_models"}}, {"pk": 81, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:30Z", "app_name": "instructor_task", "migration": "0001_initial"}}, {"pk": 82, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:30Z", "app_name": "instructor_task", "migration": "0002_add_subtask_field"}}, {"pk": 83, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:30Z", "app_name": "licenses", "migration": "0001_initial"}}, {"pk": 84, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "course_groups", "migration": "0001_initial"}}, {"pk": 85, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "course_groups", "migration": "0002_add_model_CourseUserGroupPartitionGroup"}}, {"pk": 86, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "bulk_email", "migration": "0001_initial"}}, {"pk": 87, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "bulk_email", "migration": "0002_change_field_names"}}, {"pk": 88, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "bulk_email", "migration": "0003_add_optout_user"}}, {"pk": 89, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "bulk_email", "migration": "0004_migrate_optout_user"}}, {"pk": 90, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "bulk_email", "migration": "0005_remove_optout_email"}}, {"pk": 91, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:31Z", "app_name": "bulk_email", "migration": "0006_add_course_email_template"}}, {"pk": 92, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:32Z", "app_name": "bulk_email", "migration": "0007_load_course_email_template"}}, {"pk": 93, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:32Z", "app_name": "bulk_email", "migration": "0008_add_course_authorizations"}}, {"pk": 94, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:32Z", "app_name": "bulk_email", "migration": "0009_force_unique_course_ids"}}, {"pk": 95, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:32Z", "app_name": "bulk_email", "migration": "0010_auto__chg_field_optout_course_id__add_field_courseemail_template_name_"}}, {"pk": 96, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:32Z", "app_name": "branding", "migration": "0001_initial"}}, {"pk": 97, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:33Z", "app_name": "external_auth", "migration": "0001_initial"}}, {"pk": 98, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:33Z", "app_name": "oauth2", "migration": "0001_initial"}}, {"pk": 99, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:33Z", "app_name": "oauth2", "migration": "0002_auto__chg_field_client_user"}}, {"pk": 100, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:33Z", "app_name": "oauth2", "migration": "0003_auto__add_field_client_name"}}, {"pk": 101, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:33Z", "app_name": "oauth2", "migration": "0004_auto__add_index_accesstoken_token"}}, {"pk": 102, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:34Z", "app_name": "oauth2_provider", "migration": "0001_initial"}}, {"pk": 103, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:34Z", "app_name": "wiki", "migration": "0001_initial"}}, {"pk": 104, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:34Z", "app_name": "wiki", "migration": "0002_auto__add_field_articleplugin_created"}}, {"pk": 105, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:34Z", "app_name": "wiki", "migration": "0003_auto__add_field_urlpath_article"}}, {"pk": 106, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:34Z", "app_name": "wiki", "migration": "0004_populate_urlpath__article"}}, {"pk": 107, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:34Z", "app_name": "wiki", "migration": "0005_auto__chg_field_urlpath_article"}}, {"pk": 108, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:35Z", "app_name": "wiki", "migration": "0006_auto__add_attachmentrevision__add_image__add_attachment"}}, {"pk": 109, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:35Z", "app_name": "wiki", "migration": "0007_auto__add_articlesubscription"}}, {"pk": 110, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:35Z", "app_name": "wiki", "migration": "0008_auto__add_simpleplugin__add_revisionpluginrevision__add_imagerevision_"}}, {"pk": 111, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:35Z", "app_name": "wiki", "migration": "0009_auto__add_field_imagerevision_width__add_field_imagerevision_height"}}, {"pk": 112, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:35Z", "app_name": "wiki", "migration": "0010_auto__chg_field_imagerevision_image"}}, {"pk": 113, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:35Z", "app_name": "wiki", "migration": "0011_auto__chg_field_imagerevision_width__chg_field_imagerevision_height"}}, {"pk": 114, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:36Z", "app_name": "django_notify", "migration": "0001_initial"}}, {"pk": 115, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:36Z", "app_name": "notifications", "migration": "0001_initial"}}, {"pk": 116, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:36Z", "app_name": "foldit", "migration": "0001_initial"}}, {"pk": 117, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:37Z", "app_name": "django_comment_client", "migration": "0001_initial"}}, {"pk": 118, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:37Z", "app_name": "django_comment_common", "migration": "0001_initial"}}, {"pk": 119, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:37Z", "app_name": "notes", "migration": "0001_initial"}}, {"pk": 120, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:38Z", "app_name": "splash", "migration": "0001_initial"}}, {"pk": 121, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:38Z", "app_name": "splash", "migration": "0002_auto__add_field_splashconfig_unaffected_url_paths"}}, {"pk": 122, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:38Z", "app_name": "user_api", "migration": "0001_initial"}}, {"pk": 123, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:38Z", "app_name": "user_api", "migration": "0002_auto__add_usercoursetags__add_unique_usercoursetags_user_course_id_key"}}, {"pk": 124, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:38Z", "app_name": "user_api", "migration": "0003_rename_usercoursetags"}}, {"pk": 125, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:38Z", "app_name": "user_api", "migration": "0004_auto__add_userorgtag__add_unique_userorgtag_user_org_key__chg_field_us"}}, {"pk": 126, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0001_initial"}}, {"pk": 127, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0002_auto__add_field_paidcourseregistration_mode"}}, {"pk": 128, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0003_auto__del_field_orderitem_line_cost"}}, {"pk": 129, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0004_auto__add_field_orderitem_fulfilled_time"}}, {"pk": 130, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0005_auto__add_paidcourseregistrationannotation__add_field_orderitem_report"}}, {"pk": 131, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0006_auto__add_field_order_refunded_time__add_field_orderitem_refund_reques"}}, {"pk": 132, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:39Z", "app_name": "shoppingcart", "migration": "0007_auto__add_field_orderitem_service_fee"}}, {"pk": 133, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:40Z", "app_name": "shoppingcart", "migration": "0008_auto__add_coupons__add_couponredemption__chg_field_certificateitem_cou"}}, {"pk": 134, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:40Z", "app_name": "shoppingcart", "migration": "0009_auto__del_coupons__add_courseregistrationcode__add_coupon__chg_field_c"}}, {"pk": 135, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:40Z", "app_name": "shoppingcart", "migration": "0010_auto__add_registrationcoderedemption__del_field_courseregistrationcode"}}, {"pk": 136, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:40Z", "app_name": "shoppingcart", "migration": "0011_auto__add_invoice__add_field_courseregistrationcode_invoice"}}, {"pk": 137, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:40Z", "app_name": "shoppingcart", "migration": "0012_auto__del_field_courseregistrationcode_transaction_group_name__del_fie"}}, {"pk": 138, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:40Z", "app_name": "shoppingcart", "migration": "0013_auto__add_field_invoice_is_valid"}}, {"pk": 139, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0014_auto__del_field_invoice_tax_id__add_field_invoice_address_line_1__add_"}}, {"pk": 140, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0015_auto__del_field_invoice_purchase_order_number__del_field_invoice_compa"}}, {"pk": 141, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0016_auto__del_field_invoice_company_email__del_field_invoice_company_refer"}}, {"pk": 142, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0017_auto__add_field_courseregistrationcode_order__chg_field_registrationco"}}, {"pk": 143, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0018_auto__add_donation"}}, {"pk": 144, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0019_auto__add_donationconfiguration"}}, {"pk": 145, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0020_auto__add_courseregcodeitem__add_courseregcodeitemannotation__add_fiel"}}, {"pk": 146, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0021_auto__add_field_orderitem_created__add_field_orderitem_modified"}}, {"pk": 147, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0022_auto__add_field_registrationcoderedemption_course_enrollment__add_fiel"}}, {"pk": 148, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0023_auto__add_field_coupon_expiration_date"}}, {"pk": 149, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:41Z", "app_name": "shoppingcart", "migration": "0024_auto__add_field_courseregistrationcode_mode_slug"}}, {"pk": 150, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "shoppingcart", "migration": "0025_update_invoice_models"}}, {"pk": 151, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "shoppingcart", "migration": "0026_migrate_invoices"}}, {"pk": 152, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "shoppingcart", "migration": "0027_add_invoice_history"}}, {"pk": 153, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "course_modes", "migration": "0001_initial"}}, {"pk": 154, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "course_modes", "migration": "0002_auto__add_field_coursemode_currency"}}, {"pk": 155, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "course_modes", "migration": "0003_auto__add_unique_coursemode_course_id_currency_mode_slug"}}, {"pk": 156, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "course_modes", "migration": "0004_auto__add_field_coursemode_expiration_date"}}, {"pk": 157, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "course_modes", "migration": "0005_auto__add_field_coursemode_expiration_datetime"}}, {"pk": 158, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:42Z", "app_name": "course_modes", "migration": "0006_expiration_date_to_datetime"}}, {"pk": 159, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "course_modes", "migration": "0007_add_description"}}, {"pk": 160, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "course_modes", "migration": "0007_auto__add_coursemodesarchive__chg_field_coursemode_course_id"}}, {"pk": 161, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "course_modes", "migration": "0008_auto__del_field_coursemodesarchive_description__add_field_coursemode_s"}}, {"pk": 162, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "verify_student", "migration": "0001_initial"}}, {"pk": 163, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "verify_student", "migration": "0002_auto__add_field_softwaresecurephotoverification_window"}}, {"pk": 164, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "verify_student", "migration": "0003_auto__add_field_softwaresecurephotoverification_display"}}, {"pk": 165, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "dark_lang", "migration": "0001_initial"}}, {"pk": 166, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:43Z", "app_name": "dark_lang", "migration": "0002_enable_on_install"}}, {"pk": 167, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:44Z", "app_name": "reverification", "migration": "0001_initial"}}, {"pk": 168, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:44Z", "app_name": "embargo", "migration": "0001_initial"}}, {"pk": 169, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:44Z", "app_name": "embargo", "migration": "0002_add_country_access_models"}}, {"pk": 170, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:45Z", "app_name": "embargo", "migration": "0003_add_countries"}}, {"pk": 171, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:45Z", "app_name": "embargo", "migration": "0004_migrate_embargo_config"}}, {"pk": 172, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:45Z", "app_name": "embargo", "migration": "0005_add_courseaccessrulehistory"}}, {"pk": 173, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:46Z", "app_name": "course_action_state", "migration": "0001_initial"}}, {"pk": 174, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:46Z", "app_name": "course_action_state", "migration": "0002_add_rerun_display_name"}}, {"pk": 175, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:46Z", "app_name": "survey", "migration": "0001_initial"}}, {"pk": 176, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:47Z", "app_name": "lms_xblock", "migration": "0001_initial"}}, {"pk": 177, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:47Z", "app_name": "course_structures", "migration": "0001_initial"}}, {"pk": 178, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:47Z", "app_name": "submissions", "migration": "0001_initial"}}, {"pk": 179, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:47Z", "app_name": "submissions", "migration": "0002_auto__add_scoresummary"}}, {"pk": 180, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:47Z", "app_name": "submissions", "migration": "0003_auto__del_field_submission_answer__add_field_submission_raw_answer"}}, {"pk": 181, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:47Z", "app_name": "submissions", "migration": "0004_auto__add_field_score_reset"}}, {"pk": 182, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:48Z", "app_name": "assessment", "migration": "0001_initial"}}, {"pk": 183, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:48Z", "app_name": "assessment", "migration": "0002_auto__add_assessmentfeedbackoption__del_field_assessmentfeedback_feedb"}}, {"pk": 184, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:48Z", "app_name": "assessment", "migration": "0003_add_index_pw_course_item_student"}}, {"pk": 185, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:48Z", "app_name": "assessment", "migration": "0004_auto__add_field_peerworkflow_graded_count"}}, {"pk": 186, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:48Z", "app_name": "assessment", "migration": "0005_auto__del_field_peerworkflow_graded_count__add_field_peerworkflow_grad"}}, {"pk": 187, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:48Z", "app_name": "assessment", "migration": "0006_auto__add_field_assessmentpart_feedback"}}, {"pk": 188, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:49Z", "app_name": "assessment", "migration": "0007_auto__chg_field_assessmentpart_feedback"}}, {"pk": 189, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:49Z", "app_name": "assessment", "migration": "0008_student_training"}}, {"pk": 190, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:49Z", "app_name": "assessment", "migration": "0009_auto__add_unique_studenttrainingworkflowitem_order_num_workflow"}}, {"pk": 191, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:49Z", "app_name": "assessment", "migration": "0010_auto__add_unique_studenttrainingworkflow_submission_uuid"}}, {"pk": 192, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:49Z", "app_name": "assessment", "migration": "0011_ai_training"}}, {"pk": 193, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0012_move_algorithm_id_to_classifier_set"}}, {"pk": 194, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0013_auto__add_field_aigradingworkflow_essay_text"}}, {"pk": 195, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0014_auto__add_field_aitrainingworkflow_item_id__add_field_aitrainingworkfl"}}, {"pk": 196, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0015_auto__add_unique_aitrainingworkflow_uuid__add_unique_aigradingworkflow"}}, {"pk": 197, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0016_auto__add_field_aiclassifierset_course_id__add_field_aiclassifierset_i"}}, {"pk": 198, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0016_auto__add_field_rubric_structure_hash"}}, {"pk": 199, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0017_rubric_structure_hash"}}, {"pk": 200, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0018_auto__add_field_assessmentpart_criterion"}}, {"pk": 201, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0019_assessmentpart_criterion_field"}}, {"pk": 202, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0020_assessmentpart_criterion_not_null"}}, {"pk": 203, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0021_assessmentpart_option_nullable"}}, {"pk": 204, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0022__add_label_fields"}}, {"pk": 205, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:50Z", "app_name": "assessment", "migration": "0023_assign_criteria_and_option_labels"}}, {"pk": 206, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:51Z", "app_name": "assessment", "migration": "0024_auto__chg_field_assessmentpart_criterion"}}, {"pk": 207, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:51Z", "app_name": "assessment", "migration": "0025_auto__add_field_peerworkflow_cancelled_at"}}, {"pk": 208, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:51Z", "app_name": "workflow", "migration": "0001_initial"}}, {"pk": 209, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:51Z", "app_name": "workflow", "migration": "0002_auto__add_field_assessmentworkflow_course_id__add_field_assessmentwork"}}, {"pk": 210, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:51Z", "app_name": "workflow", "migration": "0003_auto__add_assessmentworkflowstep"}}, {"pk": 211, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:52Z", "app_name": "workflow", "migration": "0004_auto__add_assessmentworkflowcancellation"}}, {"pk": 212, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:52Z", "app_name": "edxval", "migration": "0001_initial"}}, {"pk": 213, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:52Z", "app_name": "edxval", "migration": "0002_default_profiles"}}, {"pk": 214, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:52Z", "app_name": "edxval", "migration": "0003_status_and_created_fields"}}, {"pk": 215, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:53Z", "app_name": "milestones", "migration": "0001_initial"}}, {"pk": 216, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:53Z", "app_name": "milestones", "migration": "0002_seed_relationship_types"}}, {"pk": 217, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:53Z", "app_name": "django_extensions", "migration": "0001_empty"}}, {"pk": 218, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:56Z", "app_name": "contentstore", "migration": "0001_initial"}}, {"pk": 219, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:56Z", "app_name": "contentstore", "migration": "0002_auto__del_field_videouploadconfig_status_whitelist"}}, {"pk": 220, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:57Z", "app_name": "course_creators", "migration": "0001_initial"}}, {"pk": 221, "model": "south.migrationhistory", "fields": {"applied": "2015-03-06T21:17:57Z", "app_name": "xblock_config", "migration": "0001_initial"}}, {"pk": 5, "model": "embargo.country", "fields": {"country": "AD"}}, {"pk": 233, "model": "embargo.country", "fields": {"country": "AE"}}, {"pk": 1, "model": "embargo.country", "fields": {"country": "AF"}}, {"pk": 9, "model": "embargo.country", "fields": {"country": "AG"}}, {"pk": 7, "model": "embargo.country", "fields": {"country": "AI"}}, {"pk": 2, "model": "embargo.country", "fields": {"country": "AL"}}, {"pk": 11, "model": "embargo.country", "fields": {"country": "AM"}}, {"pk": 6, "model": "embargo.country", "fields": {"country": "AO"}}, {"pk": 8, "model": "embargo.country", "fields": {"country": "AQ"}}, {"pk": 10, "model": "embargo.country", "fields": {"country": "AR"}}, {"pk": 4, "model": "embargo.country", "fields": {"country": "AS"}}, {"pk": 14, "model": "embargo.country", "fields": {"country": "AT"}}, {"pk": 13, "model": "embargo.country", "fields": {"country": "AU"}}, {"pk": 12, "model": "embargo.country", "fields": {"country": "AW"}}, {"pk": 249, "model": "embargo.country", "fields": {"country": "AX"}}, {"pk": 15, "model": "embargo.country", "fields": {"country": "AZ"}}, {"pk": 28, "model": "embargo.country", "fields": {"country": "BA"}}, {"pk": 19, "model": "embargo.country", "fields": {"country": "BB"}}, {"pk": 18, "model": "embargo.country", "fields": {"country": "BD"}}, {"pk": 21, "model": "embargo.country", "fields": {"country": "BE"}}, {"pk": 35, "model": "embargo.country", "fields": {"country": "BF"}}, {"pk": 34, "model": "embargo.country", "fields": {"country": "BG"}}, {"pk": 17, "model": "embargo.country", "fields": {"country": "BH"}}, {"pk": 36, "model": "embargo.country", "fields": {"country": "BI"}}, {"pk": 23, "model": "embargo.country", "fields": {"country": "BJ"}}, {"pk": 184, "model": "embargo.country", "fields": {"country": "BL"}}, {"pk": 24, "model": "embargo.country", "fields": {"country": "BM"}}, {"pk": 33, "model": "embargo.country", "fields": {"country": "BN"}}, {"pk": 26, "model": "embargo.country", "fields": {"country": "BO"}}, {"pk": 27, "model": "embargo.country", "fields": {"country": "BQ"}}, {"pk": 31, "model": "embargo.country", "fields": {"country": "BR"}}, {"pk": 16, "model": "embargo.country", "fields": {"country": "BS"}}, {"pk": 25, "model": "embargo.country", "fields": {"country": "BT"}}, {"pk": 30, "model": "embargo.country", "fields": {"country": "BV"}}, {"pk": 29, "model": "embargo.country", "fields": {"country": "BW"}}, {"pk": 20, "model": "embargo.country", "fields": {"country": "BY"}}, {"pk": 22, "model": "embargo.country", "fields": {"country": "BZ"}}, {"pk": 39, "model": "embargo.country", "fields": {"country": "CA"}}, {"pk": 47, "model": "embargo.country", "fields": {"country": "CC"}}, {"pk": 51, "model": "embargo.country", "fields": {"country": "CD"}}, {"pk": 42, "model": "embargo.country", "fields": {"country": "CF"}}, {"pk": 50, "model": "embargo.country", "fields": {"country": "CG"}}, {"pk": 215, "model": "embargo.country", "fields": {"country": "CH"}}, {"pk": 59, "model": "embargo.country", "fields": {"country": "CI"}}, {"pk": 52, "model": "embargo.country", "fields": {"country": "CK"}}, {"pk": 44, "model": "embargo.country", "fields": {"country": "CL"}}, {"pk": 38, "model": "embargo.country", "fields": {"country": "CM"}}, {"pk": 45, "model": "embargo.country", "fields": {"country": "CN"}}, {"pk": 48, "model": "embargo.country", "fields": {"country": "CO"}}, {"pk": 53, "model": "embargo.country", "fields": {"country": "CR"}}, {"pk": 55, "model": "embargo.country", "fields": {"country": "CU"}}, {"pk": 40, "model": "embargo.country", "fields": {"country": "CV"}}, {"pk": 56, "model": "embargo.country", "fields": {"country": "CW"}}, {"pk": 46, "model": "embargo.country", "fields": {"country": "CX"}}, {"pk": 57, "model": "embargo.country", "fields": {"country": "CY"}}, {"pk": 58, "model": "embargo.country", "fields": {"country": "CZ"}}, {"pk": 82, "model": "embargo.country", "fields": {"country": "DE"}}, {"pk": 61, "model": "embargo.country", "fields": {"country": "DJ"}}, {"pk": 60, "model": "embargo.country", "fields": {"country": "DK"}}, {"pk": 62, "model": "embargo.country", "fields": {"country": "DM"}}, {"pk": 63, "model": "embargo.country", "fields": {"country": "DO"}}, {"pk": 3, "model": "embargo.country", "fields": {"country": "DZ"}}, {"pk": 64, "model": "embargo.country", "fields": {"country": "EC"}}, {"pk": 69, "model": "embargo.country", "fields": {"country": "EE"}}, {"pk": 65, "model": "embargo.country", "fields": {"country": "EG"}}, {"pk": 245, "model": "embargo.country", "fields": {"country": "EH"}}, {"pk": 68, "model": "embargo.country", "fields": {"country": "ER"}}, {"pk": 208, "model": "embargo.country", "fields": {"country": "ES"}}, {"pk": 70, "model": "embargo.country", "fields": {"country": "ET"}}, {"pk": 74, "model": "embargo.country", "fields": {"country": "FI"}}, {"pk": 73, "model": "embargo.country", "fields": {"country": "FJ"}}, {"pk": 71, "model": "embargo.country", "fields": {"country": "FK"}}, {"pk": 144, "model": "embargo.country", "fields": {"country": "FM"}}, {"pk": 72, "model": "embargo.country", "fields": {"country": "FO"}}, {"pk": 75, "model": "embargo.country", "fields": {"country": "FR"}}, {"pk": 79, "model": "embargo.country", "fields": {"country": "GA"}}, {"pk": 234, "model": "embargo.country", "fields": {"country": "GB"}}, {"pk": 87, "model": "embargo.country", "fields": {"country": "GD"}}, {"pk": 81, "model": "embargo.country", "fields": {"country": "GE"}}, {"pk": 76, "model": "embargo.country", "fields": {"country": "GF"}}, {"pk": 91, "model": "embargo.country", "fields": {"country": "GG"}}, {"pk": 83, "model": "embargo.country", "fields": {"country": "GH"}}, {"pk": 84, "model": "embargo.country", "fields": {"country": "GI"}}, {"pk": 86, "model": "embargo.country", "fields": {"country": "GL"}}, {"pk": 80, "model": "embargo.country", "fields": {"country": "GM"}}, {"pk": 92, "model": "embargo.country", "fields": {"country": "GN"}}, {"pk": 88, "model": "embargo.country", "fields": {"country": "GP"}}, {"pk": 67, "model": "embargo.country", "fields": {"country": "GQ"}}, {"pk": 85, "model": "embargo.country", "fields": {"country": "GR"}}, {"pk": 206, "model": "embargo.country", "fields": {"country": "GS"}}, {"pk": 90, "model": "embargo.country", "fields": {"country": "GT"}}, {"pk": 89, "model": "embargo.country", "fields": {"country": "GU"}}, {"pk": 93, "model": "embargo.country", "fields": {"country": "GW"}}, {"pk": 94, "model": "embargo.country", "fields": {"country": "GY"}}, {"pk": 99, "model": "embargo.country", "fields": {"country": "HK"}}, {"pk": 96, "model": "embargo.country", "fields": {"country": "HM"}}, {"pk": 98, "model": "embargo.country", "fields": {"country": "HN"}}, {"pk": 54, "model": "embargo.country", "fields": {"country": "HR"}}, {"pk": 95, "model": "embargo.country", "fields": {"country": "HT"}}, {"pk": 100, "model": "embargo.country", "fields": {"country": "HU"}}, {"pk": 103, "model": "embargo.country", "fields": {"country": "ID"}}, {"pk": 106, "model": "embargo.country", "fields": {"country": "IE"}}, {"pk": 108, "model": "embargo.country", "fields": {"country": "IL"}}, {"pk": 107, "model": "embargo.country", "fields": {"country": "IM"}}, {"pk": 102, "model": "embargo.country", "fields": {"country": "IN"}}, {"pk": 32, "model": "embargo.country", "fields": {"country": "IO"}}, {"pk": 105, "model": "embargo.country", "fields": {"country": "IQ"}}, {"pk": 104, "model": "embargo.country", "fields": {"country": "IR"}}, {"pk": 101, "model": "embargo.country", "fields": {"country": "IS"}}, {"pk": 109, "model": "embargo.country", "fields": {"country": "IT"}}, {"pk": 112, "model": "embargo.country", "fields": {"country": "JE"}}, {"pk": 110, "model": "embargo.country", "fields": {"country": "JM"}}, {"pk": 113, "model": "embargo.country", "fields": {"country": "JO"}}, {"pk": 111, "model": "embargo.country", "fields": {"country": "JP"}}, {"pk": 115, "model": "embargo.country", "fields": {"country": "KE"}}, {"pk": 120, "model": "embargo.country", "fields": {"country": "KG"}}, {"pk": 37, "model": "embargo.country", "fields": {"country": "KH"}}, {"pk": 116, "model": "embargo.country", "fields": {"country": "KI"}}, {"pk": 49, "model": "embargo.country", "fields": {"country": "KM"}}, {"pk": 186, "model": "embargo.country", "fields": {"country": "KN"}}, {"pk": 117, "model": "embargo.country", "fields": {"country": "KP"}}, {"pk": 118, "model": "embargo.country", "fields": {"country": "KR"}}, {"pk": 119, "model": "embargo.country", "fields": {"country": "KW"}}, {"pk": 41, "model": "embargo.country", "fields": {"country": "KY"}}, {"pk": 114, "model": "embargo.country", "fields": {"country": "KZ"}}, {"pk": 121, "model": "embargo.country", "fields": {"country": "LA"}}, {"pk": 123, "model": "embargo.country", "fields": {"country": "LB"}}, {"pk": 187, "model": "embargo.country", "fields": {"country": "LC"}}, {"pk": 127, "model": "embargo.country", "fields": {"country": "LI"}}, {"pk": 209, "model": "embargo.country", "fields": {"country": "LK"}}, {"pk": 125, "model": "embargo.country", "fields": {"country": "LR"}}, {"pk": 124, "model": "embargo.country", "fields": {"country": "LS"}}, {"pk": 128, "model": "embargo.country", "fields": {"country": "LT"}}, {"pk": 129, "model": "embargo.country", "fields": {"country": "LU"}}, {"pk": 122, "model": "embargo.country", "fields": {"country": "LV"}}, {"pk": 126, "model": "embargo.country", "fields": {"country": "LY"}}, {"pk": 150, "model": "embargo.country", "fields": {"country": "MA"}}, {"pk": 146, "model": "embargo.country", "fields": {"country": "MC"}}, {"pk": 145, "model": "embargo.country", "fields": {"country": "MD"}}, {"pk": 148, "model": "embargo.country", "fields": {"country": "ME"}}, {"pk": 188, "model": "embargo.country", "fields": {"country": "MF"}}, {"pk": 132, "model": "embargo.country", "fields": {"country": "MG"}}, {"pk": 138, "model": "embargo.country", "fields": {"country": "MH"}}, {"pk": 131, "model": "embargo.country", "fields": {"country": "MK"}}, {"pk": 136, "model": "embargo.country", "fields": {"country": "ML"}}, {"pk": 152, "model": "embargo.country", "fields": {"country": "MM"}}, {"pk": 147, "model": "embargo.country", "fields": {"country": "MN"}}, {"pk": 130, "model": "embargo.country", "fields": {"country": "MO"}}, {"pk": 164, "model": "embargo.country", "fields": {"country": "MP"}}, {"pk": 139, "model": "embargo.country", "fields": {"country": "MQ"}}, {"pk": 140, "model": "embargo.country", "fields": {"country": "MR"}}, {"pk": 149, "model": "embargo.country", "fields": {"country": "MS"}}, {"pk": 137, "model": "embargo.country", "fields": {"country": "MT"}}, {"pk": 141, "model": "embargo.country", "fields": {"country": "MU"}}, {"pk": 135, "model": "embargo.country", "fields": {"country": "MV"}}, {"pk": 133, "model": "embargo.country", "fields": {"country": "MW"}}, {"pk": 143, "model": "embargo.country", "fields": {"country": "MX"}}, {"pk": 134, "model": "embargo.country", "fields": {"country": "MY"}}, {"pk": 151, "model": "embargo.country", "fields": {"country": "MZ"}}, {"pk": 153, "model": "embargo.country", "fields": {"country": "NA"}}, {"pk": 157, "model": "embargo.country", "fields": {"country": "NC"}}, {"pk": 160, "model": "embargo.country", "fields": {"country": "NE"}}, {"pk": 163, "model": "embargo.country", "fields": {"country": "NF"}}, {"pk": 161, "model": "embargo.country", "fields": {"country": "NG"}}, {"pk": 159, "model": "embargo.country", "fields": {"country": "NI"}}, {"pk": 156, "model": "embargo.country", "fields": {"country": "NL"}}, {"pk": 165, "model": "embargo.country", "fields": {"country": "NO"}}, {"pk": 155, "model": "embargo.country", "fields": {"country": "NP"}}, {"pk": 154, "model": "embargo.country", "fields": {"country": "NR"}}, {"pk": 162, "model": "embargo.country", "fields": {"country": "NU"}}, {"pk": 158, "model": "embargo.country", "fields": {"country": "NZ"}}, {"pk": 166, "model": "embargo.country", "fields": {"country": "OM"}}, {"pk": 170, "model": "embargo.country", "fields": {"country": "PA"}}, {"pk": 173, "model": "embargo.country", "fields": {"country": "PE"}}, {"pk": 77, "model": "embargo.country", "fields": {"country": "PF"}}, {"pk": 171, "model": "embargo.country", "fields": {"country": "PG"}}, {"pk": 174, "model": "embargo.country", "fields": {"country": "PH"}}, {"pk": 167, "model": "embargo.country", "fields": {"country": "PK"}}, {"pk": 176, "model": "embargo.country", "fields": {"country": "PL"}}, {"pk": 189, "model": "embargo.country", "fields": {"country": "PM"}}, {"pk": 175, "model": "embargo.country", "fields": {"country": "PN"}}, {"pk": 178, "model": "embargo.country", "fields": {"country": "PR"}}, {"pk": 169, "model": "embargo.country", "fields": {"country": "PS"}}, {"pk": 177, "model": "embargo.country", "fields": {"country": "PT"}}, {"pk": 168, "model": "embargo.country", "fields": {"country": "PW"}}, {"pk": 172, "model": "embargo.country", "fields": {"country": "PY"}}, {"pk": 179, "model": "embargo.country", "fields": {"country": "QA"}}, {"pk": 183, "model": "embargo.country", "fields": {"country": "RE"}}, {"pk": 180, "model": "embargo.country", "fields": {"country": "RO"}}, {"pk": 196, "model": "embargo.country", "fields": {"country": "RS"}}, {"pk": 181, "model": "embargo.country", "fields": {"country": "RU"}}, {"pk": 182, "model": "embargo.country", "fields": {"country": "RW"}}, {"pk": 194, "model": "embargo.country", "fields": {"country": "SA"}}, {"pk": 203, "model": "embargo.country", "fields": {"country": "SB"}}, {"pk": 197, "model": "embargo.country", "fields": {"country": "SC"}}, {"pk": 210, "model": "embargo.country", "fields": {"country": "SD"}}, {"pk": 214, "model": "embargo.country", "fields": {"country": "SE"}}, {"pk": 199, "model": "embargo.country", "fields": {"country": "SG"}}, {"pk": 185, "model": "embargo.country", "fields": {"country": "SH"}}, {"pk": 202, "model": "embargo.country", "fields": {"country": "SI"}}, {"pk": 212, "model": "embargo.country", "fields": {"country": "SJ"}}, {"pk": 201, "model": "embargo.country", "fields": {"country": "SK"}}, {"pk": 198, "model": "embargo.country", "fields": {"country": "SL"}}, {"pk": 192, "model": "embargo.country", "fields": {"country": "SM"}}, {"pk": 195, "model": "embargo.country", "fields": {"country": "SN"}}, {"pk": 204, "model": "embargo.country", "fields": {"country": "SO"}}, {"pk": 211, "model": "embargo.country", "fields": {"country": "SR"}}, {"pk": 207, "model": "embargo.country", "fields": {"country": "SS"}}, {"pk": 193, "model": "embargo.country", "fields": {"country": "ST"}}, {"pk": 66, "model": "embargo.country", "fields": {"country": "SV"}}, {"pk": 200, "model": "embargo.country", "fields": {"country": "SX"}}, {"pk": 216, "model": "embargo.country", "fields": {"country": "SY"}}, {"pk": 213, "model": "embargo.country", "fields": {"country": "SZ"}}, {"pk": 229, "model": "embargo.country", "fields": {"country": "TC"}}, {"pk": 43, "model": "embargo.country", "fields": {"country": "TD"}}, {"pk": 78, "model": "embargo.country", "fields": {"country": "TF"}}, {"pk": 222, "model": "embargo.country", "fields": {"country": "TG"}}, {"pk": 220, "model": "embargo.country", "fields": {"country": "TH"}}, {"pk": 218, "model": "embargo.country", "fields": {"country": "TJ"}}, {"pk": 223, "model": "embargo.country", "fields": {"country": "TK"}}, {"pk": 221, "model": "embargo.country", "fields": {"country": "TL"}}, {"pk": 228, "model": "embargo.country", "fields": {"country": "TM"}}, {"pk": 226, "model": "embargo.country", "fields": {"country": "TN"}}, {"pk": 224, "model": "embargo.country", "fields": {"country": "TO"}}, {"pk": 227, "model": "embargo.country", "fields": {"country": "TR"}}, {"pk": 225, "model": "embargo.country", "fields": {"country": "TT"}}, {"pk": 230, "model": "embargo.country", "fields": {"country": "TV"}}, {"pk": 217, "model": "embargo.country", "fields": {"country": "TW"}}, {"pk": 219, "model": "embargo.country", "fields": {"country": "TZ"}}, {"pk": 232, "model": "embargo.country", "fields": {"country": "UA"}}, {"pk": 231, "model": "embargo.country", "fields": {"country": "UG"}}, {"pk": 236, "model": "embargo.country", "fields": {"country": "UM"}}, {"pk": 235, "model": "embargo.country", "fields": {"country": "US"}}, {"pk": 237, "model": "embargo.country", "fields": {"country": "UY"}}, {"pk": 238, "model": "embargo.country", "fields": {"country": "UZ"}}, {"pk": 97, "model": "embargo.country", "fields": {"country": "VA"}}, {"pk": 190, "model": "embargo.country", "fields": {"country": "VC"}}, {"pk": 240, "model": "embargo.country", "fields": {"country": "VE"}}, {"pk": 242, "model": "embargo.country", "fields": {"country": "VG"}}, {"pk": 243, "model": "embargo.country", "fields": {"country": "VI"}}, {"pk": 241, "model": "embargo.country", "fields": {"country": "VN"}}, {"pk": 239, "model": "embargo.country", "fields": {"country": "VU"}}, {"pk": 244, "model": "embargo.country", "fields": {"country": "WF"}}, {"pk": 191, "model": "embargo.country", "fields": {"country": "WS"}}, {"pk": 246, "model": "embargo.country", "fields": {"country": "YE"}}, {"pk": 142, "model": "embargo.country", "fields": {"country": "YT"}}, {"pk": 205, "model": "embargo.country", "fields": {"country": "ZA"}}, {"pk": 247, "model": "embargo.country", "fields": {"country": "ZM"}}, {"pk": 248, "model": "embargo.country", "fields": {"country": "ZW"}}, {"pk": 1, "model": "edxval.profile", "fields": {"width": 1280, "profile_name": "desktop_mp4", "extension": "mp4", "height": 720}}, {"pk": 2, "model": "edxval.profile", "fields": {"width": 1280, "profile_name": "desktop_webm", "extension": "webm", "height": 720}}, {"pk": 3, "model": "edxval.profile", "fields": {"width": 960, "profile_name": "mobile_high", "extension": "mp4", "height": 540}}, {"pk": 4, "model": "edxval.profile", "fields": {"width": 640, "profile_name": "mobile_low", "extension": "mp4", "height": 360}}, {"pk": 5, "model": "edxval.profile", "fields": {"width": 1920, "profile_name": "youtube", "extension": "mp4", "height": 1080}}, {"pk": 1, "model": "milestones.milestonerelationshiptype", "fields": {"active": true, "description": "Autogenerated milestone relationship type \"fulfills\"", "modified": "2015-03-06T21:17:53Z", "name": "fulfills", "created": "2015-03-06T21:17:53Z"}}, {"pk": 2, "model": "milestones.milestonerelationshiptype", "fields": {"active": true, "description": "Autogenerated milestone relationship type \"requires\"", "modified": "2015-03-06T21:17:53Z", "name": "requires", "created": "2015-03-06T21:17:53Z"}}, {"pk": 61, "model": "auth.permission", "fields": {"codename": "add_logentry", "name": "Can add log entry", "content_type": 21}}, {"pk": 62, "model": "auth.permission", "fields": {"codename": "change_logentry", "name": "Can change log entry", "content_type": 21}}, {"pk": 63, "model": "auth.permission", "fields": {"codename": "delete_logentry", "name": "Can delete log entry", "content_type": 21}}, {"pk": 442, "model": "auth.permission", "fields": {"codename": "add_aiclassifier", "name": "Can add ai classifier", "content_type": 147}}, {"pk": 443, "model": "auth.permission", "fields": {"codename": "change_aiclassifier", "name": "Can change ai classifier", "content_type": 147}}, {"pk": 444, "model": "auth.permission", "fields": {"codename": "delete_aiclassifier", "name": "Can delete ai classifier", "content_type": 147}}, {"pk": 439, "model": "auth.permission", "fields": {"codename": "add_aiclassifierset", "name": "Can add ai classifier set", "content_type": 146}}, {"pk": 440, "model": "auth.permission", "fields": {"codename": "change_aiclassifierset", "name": "Can change ai classifier set", "content_type": 146}}, {"pk": 441, "model": "auth.permission", "fields": {"codename": "delete_aiclassifierset", "name": "Can delete ai classifier set", "content_type": 146}}, {"pk": 448, "model": "auth.permission", "fields": {"codename": "add_aigradingworkflow", "name": "Can add ai grading workflow", "content_type": 149}}, {"pk": 449, "model": "auth.permission", "fields": {"codename": "change_aigradingworkflow", "name": "Can change ai grading workflow", "content_type": 149}}, {"pk": 450, "model": "auth.permission", "fields": {"codename": "delete_aigradingworkflow", "name": "Can delete ai grading workflow", "content_type": 149}}, {"pk": 445, "model": "auth.permission", "fields": {"codename": "add_aitrainingworkflow", "name": "Can add ai training workflow", "content_type": 148}}, {"pk": 446, "model": "auth.permission", "fields": {"codename": "change_aitrainingworkflow", "name": "Can change ai training workflow", "content_type": 148}}, {"pk": 447, "model": "auth.permission", "fields": {"codename": "delete_aitrainingworkflow", "name": "Can delete ai training workflow", "content_type": 148}}, {"pk": 412, "model": "auth.permission", "fields": {"codename": "add_assessment", "name": "Can add assessment", "content_type": 137}}, {"pk": 413, "model": "auth.permission", "fields": {"codename": "change_assessment", "name": "Can change assessment", "content_type": 137}}, {"pk": 414, "model": "auth.permission", "fields": {"codename": "delete_assessment", "name": "Can delete assessment", "content_type": 137}}, {"pk": 421, "model": "auth.permission", "fields": {"codename": "add_assessmentfeedback", "name": "Can add assessment feedback", "content_type": 140}}, {"pk": 422, "model": "auth.permission", "fields": {"codename": "change_assessmentfeedback", "name": "Can change assessment feedback", "content_type": 140}}, {"pk": 423, "model": "auth.permission", "fields": {"codename": "delete_assessmentfeedback", "name": "Can delete assessment feedback", "content_type": 140}}, {"pk": 418, "model": "auth.permission", "fields": {"codename": "add_assessmentfeedbackoption", "name": "Can add assessment feedback option", "content_type": 139}}, {"pk": 419, "model": "auth.permission", "fields": {"codename": "change_assessmentfeedbackoption", "name": "Can change assessment feedback option", "content_type": 139}}, {"pk": 420, "model": "auth.permission", "fields": {"codename": "delete_assessmentfeedbackoption", "name": "Can delete assessment feedback option", "content_type": 139}}, {"pk": 415, "model": "auth.permission", "fields": {"codename": "add_assessmentpart", "name": "Can add assessment part", "content_type": 138}}, {"pk": 416, "model": "auth.permission", "fields": {"codename": "change_assessmentpart", "name": "Can change assessment part", "content_type": 138}}, {"pk": 417, "model": "auth.permission", "fields": {"codename": "delete_assessmentpart", "name": "Can delete assessment part", "content_type": 138}}, {"pk": 406, "model": "auth.permission", "fields": {"codename": "add_criterion", "name": "Can add criterion", "content_type": 135}}, {"pk": 407, "model": "auth.permission", "fields": {"codename": "change_criterion", "name": "Can change criterion", "content_type": 135}}, {"pk": 408, "model": "auth.permission", "fields": {"codename": "delete_criterion", "name": "Can delete criterion", "content_type": 135}}, {"pk": 409, "model": "auth.permission", "fields": {"codename": "add_criterionoption", "name": "Can add criterion option", "content_type": 136}}, {"pk": 410, "model": "auth.permission", "fields": {"codename": "change_criterionoption", "name": "Can change criterion option", "content_type": 136}}, {"pk": 411, "model": "auth.permission", "fields": {"codename": "delete_criterionoption", "name": "Can delete criterion option", "content_type": 136}}, {"pk": 424, "model": "auth.permission", "fields": {"codename": "add_peerworkflow", "name": "Can add peer workflow", "content_type": 141}}, {"pk": 425, "model": "auth.permission", "fields": {"codename": "change_peerworkflow", "name": "Can change peer workflow", "content_type": 141}}, {"pk": 426, "model": "auth.permission", "fields": {"codename": "delete_peerworkflow", "name": "Can delete peer workflow", "content_type": 141}}, {"pk": 427, "model": "auth.permission", "fields": {"codename": "add_peerworkflowitem", "name": "Can add peer workflow item", "content_type": 142}}, {"pk": 428, "model": "auth.permission", "fields": {"codename": "change_peerworkflowitem", "name": "Can change peer workflow item", "content_type": 142}}, {"pk": 429, "model": "auth.permission", "fields": {"codename": "delete_peerworkflowitem", "name": "Can delete peer workflow item", "content_type": 142}}, {"pk": 403, "model": "auth.permission", "fields": {"codename": "add_rubric", "name": "Can add rubric", "content_type": 134}}, {"pk": 404, "model": "auth.permission", "fields": {"codename": "change_rubric", "name": "Can change rubric", "content_type": 134}}, {"pk": 405, "model": "auth.permission", "fields": {"codename": "delete_rubric", "name": "Can delete rubric", "content_type": 134}}, {"pk": 433, "model": "auth.permission", "fields": {"codename": "add_studenttrainingworkflow", "name": "Can add student training workflow", "content_type": 144}}, {"pk": 434, "model": "auth.permission", "fields": {"codename": "change_studenttrainingworkflow", "name": "Can change student training workflow", "content_type": 144}}, {"pk": 435, "model": "auth.permission", "fields": {"codename": "delete_studenttrainingworkflow", "name": "Can delete student training workflow", "content_type": 144}}, {"pk": 436, "model": "auth.permission", "fields": {"codename": "add_studenttrainingworkflowitem", "name": "Can add student training workflow item", "content_type": 145}}, {"pk": 437, "model": "auth.permission", "fields": {"codename": "change_studenttrainingworkflowitem", "name": "Can change student training workflow item", "content_type": 145}}, {"pk": 438, "model": "auth.permission", "fields": {"codename": "delete_studenttrainingworkflowitem", "name": "Can delete student training workflow item", "content_type": 145}}, {"pk": 430, "model": "auth.permission", "fields": {"codename": "add_trainingexample", "name": "Can add training example", "content_type": 143}}, {"pk": 431, "model": "auth.permission", "fields": {"codename": "change_trainingexample", "name": "Can change training example", "content_type": 143}}, {"pk": 432, "model": "auth.permission", "fields": {"codename": "delete_trainingexample", "name": "Can delete training example", "content_type": 143}}, {"pk": 4, "model": "auth.permission", "fields": {"codename": "add_group", "name": "Can add group", "content_type": 2}}, {"pk": 5, "model": "auth.permission", "fields": {"codename": "change_group", "name": "Can change group", "content_type": 2}}, {"pk": 6, "model": "auth.permission", "fields": {"codename": "delete_group", "name": "Can delete group", "content_type": 2}}, {"pk": 1, "model": "auth.permission", "fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 1}}, {"pk": 2, "model": "auth.permission", "fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 1}}, {"pk": 3, "model": "auth.permission", "fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 1}}, {"pk": 7, "model": "auth.permission", "fields": {"codename": "add_user", "name": "Can add user", "content_type": 3}}, {"pk": 8, "model": "auth.permission", "fields": {"codename": "change_user", "name": "Can change user", "content_type": 3}}, {"pk": 9, "model": "auth.permission", "fields": {"codename": "delete_user", "name": "Can delete user", "content_type": 3}}, {"pk": 199, "model": "auth.permission", "fields": {"codename": "add_brandinginfoconfig", "name": "Can add branding info config", "content_type": 67}}, {"pk": 200, "model": "auth.permission", "fields": {"codename": "change_brandinginfoconfig", "name": "Can change branding info config", "content_type": 67}}, {"pk": 201, "model": "auth.permission", "fields": {"codename": "delete_brandinginfoconfig", "name": "Can delete branding info config", "content_type": 67}}, {"pk": 196, "model": "auth.permission", "fields": {"codename": "add_courseauthorization", "name": "Can add course authorization", "content_type": 66}}, {"pk": 197, "model": "auth.permission", "fields": {"codename": "change_courseauthorization", "name": "Can change course authorization", "content_type": 66}}, {"pk": 198, "model": "auth.permission", "fields": {"codename": "delete_courseauthorization", "name": "Can delete course authorization", "content_type": 66}}, {"pk": 187, "model": "auth.permission", "fields": {"codename": "add_courseemail", "name": "Can add course email", "content_type": 63}}, {"pk": 188, "model": "auth.permission", "fields": {"codename": "change_courseemail", "name": "Can change course email", "content_type": 63}}, {"pk": 189, "model": "auth.permission", "fields": {"codename": "delete_courseemail", "name": "Can delete course email", "content_type": 63}}, {"pk": 193, "model": "auth.permission", "fields": {"codename": "add_courseemailtemplate", "name": "Can add course email template", "content_type": 65}}, {"pk": 194, "model": "auth.permission", "fields": {"codename": "change_courseemailtemplate", "name": "Can change course email template", "content_type": 65}}, {"pk": 195, "model": "auth.permission", "fields": {"codename": "delete_courseemailtemplate", "name": "Can delete course email template", "content_type": 65}}, {"pk": 190, "model": "auth.permission", "fields": {"codename": "add_optout", "name": "Can add optout", "content_type": 64}}, {"pk": 191, "model": "auth.permission", "fields": {"codename": "change_optout", "name": "Can change optout", "content_type": 64}}, {"pk": 192, "model": "auth.permission", "fields": {"codename": "delete_optout", "name": "Can delete optout", "content_type": 64}}, {"pk": 169, "model": "auth.permission", "fields": {"codename": "add_certificategenerationconfiguration", "name": "Can add certificate generation configuration", "content_type": 57}}, {"pk": 170, "model": "auth.permission", "fields": {"codename": "change_certificategenerationconfiguration", "name": "Can change certificate generation configuration", "content_type": 57}}, {"pk": 171, "model": "auth.permission", "fields": {"codename": "delete_certificategenerationconfiguration", "name": "Can delete certificate generation configuration", "content_type": 57}}, {"pk": 166, "model": "auth.permission", "fields": {"codename": "add_certificategenerationcoursesetting", "name": "Can add certificate generation course setting", "content_type": 56}}, {"pk": 167, "model": "auth.permission", "fields": {"codename": "change_certificategenerationcoursesetting", "name": "Can change certificate generation course setting", "content_type": 56}}, {"pk": 168, "model": "auth.permission", "fields": {"codename": "delete_certificategenerationcoursesetting", "name": "Can delete certificate generation course setting", "content_type": 56}}, {"pk": 154, "model": "auth.permission", "fields": {"codename": "add_certificatewhitelist", "name": "Can add certificate whitelist", "content_type": 52}}, {"pk": 155, "model": "auth.permission", "fields": {"codename": "change_certificatewhitelist", "name": "Can change certificate whitelist", "content_type": 52}}, {"pk": 156, "model": "auth.permission", "fields": {"codename": "delete_certificatewhitelist", "name": "Can delete certificate whitelist", "content_type": 52}}, {"pk": 163, "model": "auth.permission", "fields": {"codename": "add_examplecertificate", "name": "Can add example certificate", "content_type": 55}}, {"pk": 164, "model": "auth.permission", "fields": {"codename": "change_examplecertificate", "name": "Can change example certificate", "content_type": 55}}, {"pk": 165, "model": "auth.permission", "fields": {"codename": "delete_examplecertificate", "name": "Can delete example certificate", "content_type": 55}}, {"pk": 160, "model": "auth.permission", "fields": {"codename": "add_examplecertificateset", "name": "Can add example certificate set", "content_type": 54}}, {"pk": 161, "model": "auth.permission", "fields": {"codename": "change_examplecertificateset", "name": "Can change example certificate set", "content_type": 54}}, {"pk": 162, "model": "auth.permission", "fields": {"codename": "delete_examplecertificateset", "name": "Can delete example certificate set", "content_type": 54}}, {"pk": 157, "model": "auth.permission", "fields": {"codename": "add_generatedcertificate", "name": "Can add generated certificate", "content_type": 53}}, {"pk": 158, "model": "auth.permission", "fields": {"codename": "change_generatedcertificate", "name": "Can change generated certificate", "content_type": 53}}, {"pk": 159, "model": "auth.permission", "fields": {"codename": "delete_generatedcertificate", "name": "Can delete generated certificate", "content_type": 53}}, {"pk": 46, "model": "auth.permission", "fields": {"codename": "add_servercircuit", "name": "Can add server circuit", "content_type": 16}}, {"pk": 47, "model": "auth.permission", "fields": {"codename": "change_servercircuit", "name": "Can change server circuit", "content_type": 16}}, {"pk": 48, "model": "auth.permission", "fields": {"codename": "delete_servercircuit", "name": "Can delete server circuit", "content_type": 16}}, {"pk": 490, "model": "auth.permission", "fields": {"codename": "add_videouploadconfig", "name": "Can add video upload config", "content_type": 163}}, {"pk": 491, "model": "auth.permission", "fields": {"codename": "change_videouploadconfig", "name": "Can change video upload config", "content_type": 163}}, {"pk": 492, "model": "auth.permission", "fields": {"codename": "delete_videouploadconfig", "name": "Can delete video upload config", "content_type": 163}}, {"pk": 10, "model": "auth.permission", "fields": {"codename": "add_contenttype", "name": "Can add content type", "content_type": 4}}, {"pk": 11, "model": "auth.permission", "fields": {"codename": "change_contenttype", "name": "Can change content type", "content_type": 4}}, {"pk": 12, "model": "auth.permission", "fields": {"codename": "delete_contenttype", "name": "Can delete content type", "content_type": 4}}, {"pk": 64, "model": "auth.permission", "fields": {"codename": "add_corsmodel", "name": "Can add cors model", "content_type": 22}}, {"pk": 65, "model": "auth.permission", "fields": {"codename": "change_corsmodel", "name": "Can change cors model", "content_type": 22}}, {"pk": 66, "model": "auth.permission", "fields": {"codename": "delete_corsmodel", "name": "Can delete cors model", "content_type": 22}}, {"pk": 94, "model": "auth.permission", "fields": {"codename": "add_offlinecomputedgrade", "name": "Can add offline computed grade", "content_type": 32}}, {"pk": 95, "model": "auth.permission", "fields": {"codename": "change_offlinecomputedgrade", "name": "Can change offline computed grade", "content_type": 32}}, {"pk": 96, "model": "auth.permission", "fields": {"codename": "delete_offlinecomputedgrade", "name": "Can delete offline computed grade", "content_type": 32}}, {"pk": 97, "model": "auth.permission", "fields": {"codename": "add_offlinecomputedgradelog", "name": "Can add offline computed grade log", "content_type": 33}}, {"pk": 98, "model": "auth.permission", "fields": {"codename": "change_offlinecomputedgradelog", "name": "Can change offline computed grade log", "content_type": 33}}, {"pk": 99, "model": "auth.permission", "fields": {"codename": "delete_offlinecomputedgradelog", "name": "Can delete offline computed grade log", "content_type": 33}}, {"pk": 79, "model": "auth.permission", "fields": {"codename": "add_studentmodule", "name": "Can add student module", "content_type": 27}}, {"pk": 80, "model": "auth.permission", "fields": {"codename": "change_studentmodule", "name": "Can change student module", "content_type": 27}}, {"pk": 81, "model": "auth.permission", "fields": {"codename": "delete_studentmodule", "name": "Can delete student module", "content_type": 27}}, {"pk": 82, "model": "auth.permission", "fields": {"codename": "add_studentmodulehistory", "name": "Can add student module history", "content_type": 28}}, {"pk": 83, "model": "auth.permission", "fields": {"codename": "change_studentmodulehistory", "name": "Can change student module history", "content_type": 28}}, {"pk": 84, "model": "auth.permission", "fields": {"codename": "delete_studentmodulehistory", "name": "Can delete student module history", "content_type": 28}}, {"pk": 91, "model": "auth.permission", "fields": {"codename": "add_xmodulestudentinfofield", "name": "Can add x module student info field", "content_type": 31}}, {"pk": 92, "model": "auth.permission", "fields": {"codename": "change_xmodulestudentinfofield", "name": "Can change x module student info field", "content_type": 31}}, {"pk": 93, "model": "auth.permission", "fields": {"codename": "delete_xmodulestudentinfofield", "name": "Can delete x module student info field", "content_type": 31}}, {"pk": 88, "model": "auth.permission", "fields": {"codename": "add_xmodulestudentprefsfield", "name": "Can add x module student prefs field", "content_type": 30}}, {"pk": 89, "model": "auth.permission", "fields": {"codename": "change_xmodulestudentprefsfield", "name": "Can change x module student prefs field", "content_type": 30}}, {"pk": 90, "model": "auth.permission", "fields": {"codename": "delete_xmodulestudentprefsfield", "name": "Can delete x module student prefs field", "content_type": 30}}, {"pk": 85, "model": "auth.permission", "fields": {"codename": "add_xmoduleuserstatesummaryfield", "name": "Can add x module user state summary field", "content_type": 29}}, {"pk": 86, "model": "auth.permission", "fields": {"codename": "change_xmoduleuserstatesummaryfield", "name": "Can change x module user state summary field", "content_type": 29}}, {"pk": 87, "model": "auth.permission", "fields": {"codename": "delete_xmoduleuserstatesummaryfield", "name": "Can delete x module user state summary field", "content_type": 29}}, {"pk": 376, "model": "auth.permission", "fields": {"codename": "add_coursererunstate", "name": "Can add course rerun state", "content_type": 125}}, {"pk": 377, "model": "auth.permission", "fields": {"codename": "change_coursererunstate", "name": "Can change course rerun state", "content_type": 125}}, {"pk": 378, "model": "auth.permission", "fields": {"codename": "delete_coursererunstate", "name": "Can delete course rerun state", "content_type": 125}}, {"pk": 493, "model": "auth.permission", "fields": {"codename": "add_coursecreator", "name": "Can add course creator", "content_type": 164}}, {"pk": 494, "model": "auth.permission", "fields": {"codename": "change_coursecreator", "name": "Can change course creator", "content_type": 164}}, {"pk": 495, "model": "auth.permission", "fields": {"codename": "delete_coursecreator", "name": "Can delete course creator", "content_type": 164}}, {"pk": 181, "model": "auth.permission", "fields": {"codename": "add_courseusergroup", "name": "Can add course user group", "content_type": 61}}, {"pk": 182, "model": "auth.permission", "fields": {"codename": "change_courseusergroup", "name": "Can change course user group", "content_type": 61}}, {"pk": 183, "model": "auth.permission", "fields": {"codename": "delete_courseusergroup", "name": "Can delete course user group", "content_type": 61}}, {"pk": 184, "model": "auth.permission", "fields": {"codename": "add_courseusergrouppartitiongroup", "name": "Can add course user group partition group", "content_type": 62}}, {"pk": 185, "model": "auth.permission", "fields": {"codename": "change_courseusergrouppartitiongroup", "name": "Can change course user group partition group", "content_type": 62}}, {"pk": 186, "model": "auth.permission", "fields": {"codename": "delete_courseusergrouppartitiongroup", "name": "Can delete course user group partition group", "content_type": 62}}, {"pk": 340, "model": "auth.permission", "fields": {"codename": "add_coursemode", "name": "Can add course mode", "content_type": 113}}, {"pk": 341, "model": "auth.permission", "fields": {"codename": "change_coursemode", "name": "Can change course mode", "content_type": 113}}, {"pk": 342, "model": "auth.permission", "fields": {"codename": "delete_coursemode", "name": "Can delete course mode", "content_type": 113}}, {"pk": 343, "model": "auth.permission", "fields": {"codename": "add_coursemodesarchive", "name": "Can add course modes archive", "content_type": 114}}, {"pk": 344, "model": "auth.permission", "fields": {"codename": "change_coursemodesarchive", "name": "Can change course modes archive", "content_type": 114}}, {"pk": 345, "model": "auth.permission", "fields": {"codename": "delete_coursemodesarchive", "name": "Can delete course modes archive", "content_type": 114}}, {"pk": 388, "model": "auth.permission", "fields": {"codename": "add_coursestructure", "name": "Can add course structure", "content_type": 129}}, {"pk": 389, "model": "auth.permission", "fields": {"codename": "change_coursestructure", "name": "Can change course structure", "content_type": 129}}, {"pk": 390, "model": "auth.permission", "fields": {"codename": "delete_coursestructure", "name": "Can delete course structure", "content_type": 129}}, {"pk": 349, "model": "auth.permission", "fields": {"codename": "add_darklangconfig", "name": "Can add dark lang config", "content_type": 116}}, {"pk": 350, "model": "auth.permission", "fields": {"codename": "change_darklangconfig", "name": "Can change dark lang config", "content_type": 116}}, {"pk": 351, "model": "auth.permission", "fields": {"codename": "delete_darklangconfig", "name": "Can delete dark lang config", "content_type": 116}}, {"pk": 73, "model": "auth.permission", "fields": {"codename": "add_association", "name": "Can add association", "content_type": 25}}, {"pk": 74, "model": "auth.permission", "fields": {"codename": "change_association", "name": "Can change association", "content_type": 25}}, {"pk": 75, "model": "auth.permission", "fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 25}}, {"pk": 76, "model": "auth.permission", "fields": {"codename": "add_code", "name": "Can add code", "content_type": 26}}, {"pk": 77, "model": "auth.permission", "fields": {"codename": "change_code", "name": "Can change code", "content_type": 26}}, {"pk": 78, "model": "auth.permission", "fields": {"codename": "delete_code", "name": "Can delete code", "content_type": 26}}, {"pk": 70, "model": "auth.permission", "fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 24}}, {"pk": 71, "model": "auth.permission", "fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 24}}, {"pk": 72, "model": "auth.permission", "fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 24}}, {"pk": 67, "model": "auth.permission", "fields": {"codename": "add_usersocialauth", "name": "Can add user social auth", "content_type": 23}}, {"pk": 68, "model": "auth.permission", "fields": {"codename": "change_usersocialauth", "name": "Can change user social auth", "content_type": 23}}, {"pk": 69, "model": "auth.permission", "fields": {"codename": "delete_usersocialauth", "name": "Can delete user social auth", "content_type": 23}}, {"pk": 262, "model": "auth.permission", "fields": {"codename": "add_notification", "name": "Can add notification", "content_type": 87}}, {"pk": 263, "model": "auth.permission", "fields": {"codename": "change_notification", "name": "Can change notification", "content_type": 87}}, {"pk": 264, "model": "auth.permission", "fields": {"codename": "delete_notification", "name": "Can delete notification", "content_type": 87}}, {"pk": 253, "model": "auth.permission", "fields": {"codename": "add_notificationtype", "name": "Can add type", "content_type": 84}}, {"pk": 254, "model": "auth.permission", "fields": {"codename": "change_notificationtype", "name": "Can change type", "content_type": 84}}, {"pk": 255, "model": "auth.permission", "fields": {"codename": "delete_notificationtype", "name": "Can delete type", "content_type": 84}}, {"pk": 256, "model": "auth.permission", "fields": {"codename": "add_settings", "name": "Can add settings", "content_type": 85}}, {"pk": 257, "model": "auth.permission", "fields": {"codename": "change_settings", "name": "Can change settings", "content_type": 85}}, {"pk": 258, "model": "auth.permission", "fields": {"codename": "delete_settings", "name": "Can delete settings", "content_type": 85}}, {"pk": 259, "model": "auth.permission", "fields": {"codename": "add_subscription", "name": "Can add subscription", "content_type": 86}}, {"pk": 260, "model": "auth.permission", "fields": {"codename": "change_subscription", "name": "Can change subscription", "content_type": 86}}, {"pk": 261, "model": "auth.permission", "fields": {"codename": "delete_subscription", "name": "Can delete subscription", "content_type": 86}}, {"pk": 55, "model": "auth.permission", "fields": {"codename": "add_association", "name": "Can add association", "content_type": 19}}, {"pk": 56, "model": "auth.permission", "fields": {"codename": "change_association", "name": "Can change association", "content_type": 19}}, {"pk": 57, "model": "auth.permission", "fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 19}}, {"pk": 52, "model": "auth.permission", "fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 18}}, {"pk": 53, "model": "auth.permission", "fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 18}}, {"pk": 54, "model": "auth.permission", "fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 18}}, {"pk": 58, "model": "auth.permission", "fields": {"codename": "add_useropenid", "name": "Can add user open id", "content_type": 20}}, {"pk": 59, "model": "auth.permission", "fields": {"codename": "change_useropenid", "name": "Can change user open id", "content_type": 20}}, {"pk": 60, "model": "auth.permission", "fields": {"codename": "delete_useropenid", "name": "Can delete user open id", "content_type": 20}}, {"pk": 28, "model": "auth.permission", "fields": {"codename": "add_crontabschedule", "name": "Can add crontab", "content_type": 10}}, {"pk": 29, "model": "auth.permission", "fields": {"codename": "change_crontabschedule", "name": "Can change crontab", "content_type": 10}}, {"pk": 30, "model": "auth.permission", "fields": {"codename": "delete_crontabschedule", "name": "Can delete crontab", "content_type": 10}}, {"pk": 25, "model": "auth.permission", "fields": {"codename": "add_intervalschedule", "name": "Can add interval", "content_type": 9}}, {"pk": 26, "model": "auth.permission", "fields": {"codename": "change_intervalschedule", "name": "Can change interval", "content_type": 9}}, {"pk": 27, "model": "auth.permission", "fields": {"codename": "delete_intervalschedule", "name": "Can delete interval", "content_type": 9}}, {"pk": 34, "model": "auth.permission", "fields": {"codename": "add_periodictask", "name": "Can add periodic task", "content_type": 12}}, {"pk": 35, "model": "auth.permission", "fields": {"codename": "change_periodictask", "name": "Can change periodic task", "content_type": 12}}, {"pk": 36, "model": "auth.permission", "fields": {"codename": "delete_periodictask", "name": "Can delete periodic task", "content_type": 12}}, {"pk": 31, "model": "auth.permission", "fields": {"codename": "add_periodictasks", "name": "Can add periodic tasks", "content_type": 11}}, {"pk": 32, "model": "auth.permission", "fields": {"codename": "change_periodictasks", "name": "Can change periodic tasks", "content_type": 11}}, {"pk": 33, "model": "auth.permission", "fields": {"codename": "delete_periodictasks", "name": "Can delete periodic tasks", "content_type": 11}}, {"pk": 19, "model": "auth.permission", "fields": {"codename": "add_taskmeta", "name": "Can add task state", "content_type": 7}}, {"pk": 20, "model": "auth.permission", "fields": {"codename": "change_taskmeta", "name": "Can change task state", "content_type": 7}}, {"pk": 21, "model": "auth.permission", "fields": {"codename": "delete_taskmeta", "name": "Can delete task state", "content_type": 7}}, {"pk": 22, "model": "auth.permission", "fields": {"codename": "add_tasksetmeta", "name": "Can add saved group result", "content_type": 8}}, {"pk": 23, "model": "auth.permission", "fields": {"codename": "change_tasksetmeta", "name": "Can change saved group result", "content_type": 8}}, {"pk": 24, "model": "auth.permission", "fields": {"codename": "delete_tasksetmeta", "name": "Can delete saved group result", "content_type": 8}}, {"pk": 40, "model": "auth.permission", "fields": {"codename": "add_taskstate", "name": "Can add task", "content_type": 14}}, {"pk": 41, "model": "auth.permission", "fields": {"codename": "change_taskstate", "name": "Can change task", "content_type": 14}}, {"pk": 42, "model": "auth.permission", "fields": {"codename": "delete_taskstate", "name": "Can delete task", "content_type": 14}}, {"pk": 37, "model": "auth.permission", "fields": {"codename": "add_workerstate", "name": "Can add worker", "content_type": 13}}, {"pk": 38, "model": "auth.permission", "fields": {"codename": "change_workerstate", "name": "Can change worker", "content_type": 13}}, {"pk": 39, "model": "auth.permission", "fields": {"codename": "delete_workerstate", "name": "Can delete worker", "content_type": 13}}, {"pk": 466, "model": "auth.permission", "fields": {"codename": "add_coursevideo", "name": "Can add course video", "content_type": 155}}, {"pk": 467, "model": "auth.permission", "fields": {"codename": "change_coursevideo", "name": "Can change course video", "content_type": 155}}, {"pk": 468, "model": "auth.permission", "fields": {"codename": "delete_coursevideo", "name": "Can delete course video", "content_type": 155}}, {"pk": 469, "model": "auth.permission", "fields": {"codename": "add_encodedvideo", "name": "Can add encoded video", "content_type": 156}}, {"pk": 470, "model": "auth.permission", "fields": {"codename": "change_encodedvideo", "name": "Can change encoded video", "content_type": 156}}, {"pk": 471, "model": "auth.permission", "fields": {"codename": "delete_encodedvideo", "name": "Can delete encoded video", "content_type": 156}}, {"pk": 460, "model": "auth.permission", "fields": {"codename": "add_profile", "name": "Can add profile", "content_type": 153}}, {"pk": 461, "model": "auth.permission", "fields": {"codename": "change_profile", "name": "Can change profile", "content_type": 153}}, {"pk": 462, "model": "auth.permission", "fields": {"codename": "delete_profile", "name": "Can delete profile", "content_type": 153}}, {"pk": 472, "model": "auth.permission", "fields": {"codename": "add_subtitle", "name": "Can add subtitle", "content_type": 157}}, {"pk": 473, "model": "auth.permission", "fields": {"codename": "change_subtitle", "name": "Can change subtitle", "content_type": 157}}, {"pk": 474, "model": "auth.permission", "fields": {"codename": "delete_subtitle", "name": "Can delete subtitle", "content_type": 157}}, {"pk": 463, "model": "auth.permission", "fields": {"codename": "add_video", "name": "Can add video", "content_type": 154}}, {"pk": 464, "model": "auth.permission", "fields": {"codename": "change_video", "name": "Can change video", "content_type": 154}}, {"pk": 465, "model": "auth.permission", "fields": {"codename": "delete_video", "name": "Can delete video", "content_type": 154}}, {"pk": 364, "model": "auth.permission", "fields": {"codename": "add_country", "name": "Can add country", "content_type": 121}}, {"pk": 365, "model": "auth.permission", "fields": {"codename": "change_country", "name": "Can change country", "content_type": 121}}, {"pk": 366, "model": "auth.permission", "fields": {"codename": "delete_country", "name": "Can delete country", "content_type": 121}}, {"pk": 367, "model": "auth.permission", "fields": {"codename": "add_countryaccessrule", "name": "Can add country access rule", "content_type": 122}}, {"pk": 368, "model": "auth.permission", "fields": {"codename": "change_countryaccessrule", "name": "Can change country access rule", "content_type": 122}}, {"pk": 369, "model": "auth.permission", "fields": {"codename": "delete_countryaccessrule", "name": "Can delete country access rule", "content_type": 122}}, {"pk": 370, "model": "auth.permission", "fields": {"codename": "add_courseaccessrulehistory", "name": "Can add course access rule history", "content_type": 123}}, {"pk": 371, "model": "auth.permission", "fields": {"codename": "change_courseaccessrulehistory", "name": "Can change course access rule history", "content_type": 123}}, {"pk": 372, "model": "auth.permission", "fields": {"codename": "delete_courseaccessrulehistory", "name": "Can delete course access rule history", "content_type": 123}}, {"pk": 355, "model": "auth.permission", "fields": {"codename": "add_embargoedcourse", "name": "Can add embargoed course", "content_type": 118}}, {"pk": 356, "model": "auth.permission", "fields": {"codename": "change_embargoedcourse", "name": "Can change embargoed course", "content_type": 118}}, {"pk": 357, "model": "auth.permission", "fields": {"codename": "delete_embargoedcourse", "name": "Can delete embargoed course", "content_type": 118}}, {"pk": 358, "model": "auth.permission", "fields": {"codename": "add_embargoedstate", "name": "Can add embargoed state", "content_type": 119}}, {"pk": 359, "model": "auth.permission", "fields": {"codename": "change_embargoedstate", "name": "Can change embargoed state", "content_type": 119}}, {"pk": 360, "model": "auth.permission", "fields": {"codename": "delete_embargoedstate", "name": "Can delete embargoed state", "content_type": 119}}, {"pk": 373, "model": "auth.permission", "fields": {"codename": "add_ipfilter", "name": "Can add ip filter", "content_type": 124}}, {"pk": 374, "model": "auth.permission", "fields": {"codename": "change_ipfilter", "name": "Can change ip filter", "content_type": 124}}, {"pk": 375, "model": "auth.permission", "fields": {"codename": "delete_ipfilter", "name": "Can delete ip filter", "content_type": 124}}, {"pk": 361, "model": "auth.permission", "fields": {"codename": "add_restrictedcourse", "name": "Can add restricted course", "content_type": 120}}, {"pk": 362, "model": "auth.permission", "fields": {"codename": "change_restrictedcourse", "name": "Can change restricted course", "content_type": 120}}, {"pk": 363, "model": "auth.permission", "fields": {"codename": "delete_restrictedcourse", "name": "Can delete restricted course", "content_type": 120}}, {"pk": 202, "model": "auth.permission", "fields": {"codename": "add_externalauthmap", "name": "Can add external auth map", "content_type": 68}}, {"pk": 203, "model": "auth.permission", "fields": {"codename": "change_externalauthmap", "name": "Can change external auth map", "content_type": 68}}, {"pk": 204, "model": "auth.permission", "fields": {"codename": "delete_externalauthmap", "name": "Can delete external auth map", "content_type": 68}}, {"pk": 268, "model": "auth.permission", "fields": {"codename": "add_puzzlecomplete", "name": "Can add puzzle complete", "content_type": 89}}, {"pk": 269, "model": "auth.permission", "fields": {"codename": "change_puzzlecomplete", "name": "Can change puzzle complete", "content_type": 89}}, {"pk": 270, "model": "auth.permission", "fields": {"codename": "delete_puzzlecomplete", "name": "Can delete puzzle complete", "content_type": 89}}, {"pk": 265, "model": "auth.permission", "fields": {"codename": "add_score", "name": "Can add score", "content_type": 88}}, {"pk": 266, "model": "auth.permission", "fields": {"codename": "change_score", "name": "Can change score", "content_type": 88}}, {"pk": 267, "model": "auth.permission", "fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 88}}, {"pk": 172, "model": "auth.permission", "fields": {"codename": "add_instructortask", "name": "Can add instructor task", "content_type": 58}}, {"pk": 173, "model": "auth.permission", "fields": {"codename": "change_instructortask", "name": "Can change instructor task", "content_type": 58}}, {"pk": 174, "model": "auth.permission", "fields": {"codename": "delete_instructortask", "name": "Can delete instructor task", "content_type": 58}}, {"pk": 175, "model": "auth.permission", "fields": {"codename": "add_coursesoftware", "name": "Can add course software", "content_type": 59}}, {"pk": 176, "model": "auth.permission", "fields": {"codename": "change_coursesoftware", "name": "Can change course software", "content_type": 59}}, {"pk": 177, "model": "auth.permission", "fields": {"codename": "delete_coursesoftware", "name": "Can delete course software", "content_type": 59}}, {"pk": 178, "model": "auth.permission", "fields": {"codename": "add_userlicense", "name": "Can add user license", "content_type": 60}}, {"pk": 179, "model": "auth.permission", "fields": {"codename": "change_userlicense", "name": "Can change user license", "content_type": 60}}, {"pk": 180, "model": "auth.permission", "fields": {"codename": "delete_userlicense", "name": "Can delete user license", "content_type": 60}}, {"pk": 385, "model": "auth.permission", "fields": {"codename": "add_xblockasidesconfig", "name": "Can add x block asides config", "content_type": 128}}, {"pk": 386, "model": "auth.permission", "fields": {"codename": "change_xblockasidesconfig", "name": "Can change x block asides config", "content_type": 128}}, {"pk": 387, "model": "auth.permission", "fields": {"codename": "delete_xblockasidesconfig", "name": "Can delete x block asides config", "content_type": 128}}, {"pk": 484, "model": "auth.permission", "fields": {"codename": "add_coursecontentmilestone", "name": "Can add course content milestone", "content_type": 161}}, {"pk": 485, "model": "auth.permission", "fields": {"codename": "change_coursecontentmilestone", "name": "Can change course content milestone", "content_type": 161}}, {"pk": 486, "model": "auth.permission", "fields": {"codename": "delete_coursecontentmilestone", "name": "Can delete course content milestone", "content_type": 161}}, {"pk": 481, "model": "auth.permission", "fields": {"codename": "add_coursemilestone", "name": "Can add course milestone", "content_type": 160}}, {"pk": 482, "model": "auth.permission", "fields": {"codename": "change_coursemilestone", "name": "Can change course milestone", "content_type": 160}}, {"pk": 483, "model": "auth.permission", "fields": {"codename": "delete_coursemilestone", "name": "Can delete course milestone", "content_type": 160}}, {"pk": 475, "model": "auth.permission", "fields": {"codename": "add_milestone", "name": "Can add milestone", "content_type": 158}}, {"pk": 476, "model": "auth.permission", "fields": {"codename": "change_milestone", "name": "Can change milestone", "content_type": 158}}, {"pk": 477, "model": "auth.permission", "fields": {"codename": "delete_milestone", "name": "Can delete milestone", "content_type": 158}}, {"pk": 478, "model": "auth.permission", "fields": {"codename": "add_milestonerelationshiptype", "name": "Can add milestone relationship type", "content_type": 159}}, {"pk": 479, "model": "auth.permission", "fields": {"codename": "change_milestonerelationshiptype", "name": "Can change milestone relationship type", "content_type": 159}}, {"pk": 480, "model": "auth.permission", "fields": {"codename": "delete_milestonerelationshiptype", "name": "Can delete milestone relationship type", "content_type": 159}}, {"pk": 487, "model": "auth.permission", "fields": {"codename": "add_usermilestone", "name": "Can add user milestone", "content_type": 162}}, {"pk": 488, "model": "auth.permission", "fields": {"codename": "change_usermilestone", "name": "Can change user milestone", "content_type": 162}}, {"pk": 489, "model": "auth.permission", "fields": {"codename": "delete_usermilestone", "name": "Can delete user milestone", "content_type": 162}}, {"pk": 271, "model": "auth.permission", "fields": {"codename": "add_note", "name": "Can add note", "content_type": 90}}, {"pk": 272, "model": "auth.permission", "fields": {"codename": "change_note", "name": "Can change note", "content_type": 90}}, {"pk": 273, "model": "auth.permission", "fields": {"codename": "delete_note", "name": "Can delete note", "content_type": 90}}, {"pk": 211, "model": "auth.permission", "fields": {"codename": "add_accesstoken", "name": "Can add access token", "content_type": 71}}, {"pk": 212, "model": "auth.permission", "fields": {"codename": "change_accesstoken", "name": "Can change access token", "content_type": 71}}, {"pk": 213, "model": "auth.permission", "fields": {"codename": "delete_accesstoken", "name": "Can delete access token", "content_type": 71}}, {"pk": 205, "model": "auth.permission", "fields": {"codename": "add_client", "name": "Can add client", "content_type": 69}}, {"pk": 206, "model": "auth.permission", "fields": {"codename": "change_client", "name": "Can change client", "content_type": 69}}, {"pk": 207, "model": "auth.permission", "fields": {"codename": "delete_client", "name": "Can delete client", "content_type": 69}}, {"pk": 208, "model": "auth.permission", "fields": {"codename": "add_grant", "name": "Can add grant", "content_type": 70}}, {"pk": 209, "model": "auth.permission", "fields": {"codename": "change_grant", "name": "Can change grant", "content_type": 70}}, {"pk": 210, "model": "auth.permission", "fields": {"codename": "delete_grant", "name": "Can delete grant", "content_type": 70}}, {"pk": 214, "model": "auth.permission", "fields": {"codename": "add_refreshtoken", "name": "Can add refresh token", "content_type": 72}}, {"pk": 215, "model": "auth.permission", "fields": {"codename": "change_refreshtoken", "name": "Can change refresh token", "content_type": 72}}, {"pk": 216, "model": "auth.permission", "fields": {"codename": "delete_refreshtoken", "name": "Can delete refresh token", "content_type": 72}}, {"pk": 217, "model": "auth.permission", "fields": {"codename": "add_trustedclient", "name": "Can add trusted client", "content_type": 73}}, {"pk": 218, "model": "auth.permission", "fields": {"codename": "change_trustedclient", "name": "Can change trusted client", "content_type": 73}}, {"pk": 219, "model": "auth.permission", "fields": {"codename": "delete_trustedclient", "name": "Can delete trusted client", "content_type": 73}}, {"pk": 49, "model": "auth.permission", "fields": {"codename": "add_psychometricdata", "name": "Can add psychometric data", "content_type": 17}}, {"pk": 50, "model": "auth.permission", "fields": {"codename": "change_psychometricdata", "name": "Can change psychometric data", "content_type": 17}}, {"pk": 51, "model": "auth.permission", "fields": {"codename": "delete_psychometricdata", "name": "Can delete psychometric data", "content_type": 17}}, {"pk": 352, "model": "auth.permission", "fields": {"codename": "add_midcoursereverificationwindow", "name": "Can add midcourse reverification window", "content_type": 117}}, {"pk": 353, "model": "auth.permission", "fields": {"codename": "change_midcoursereverificationwindow", "name": "Can change midcourse reverification window", "content_type": 117}}, {"pk": 354, "model": "auth.permission", "fields": {"codename": "delete_midcoursereverificationwindow", "name": "Can delete midcourse reverification window", "content_type": 117}}, {"pk": 13, "model": "auth.permission", "fields": {"codename": "add_session", "name": "Can add session", "content_type": 5}}, {"pk": 14, "model": "auth.permission", "fields": {"codename": "change_session", "name": "Can change session", "content_type": 5}}, {"pk": 15, "model": "auth.permission", "fields": {"codename": "delete_session", "name": "Can delete session", "content_type": 5}}, {"pk": 331, "model": "auth.permission", "fields": {"codename": "add_certificateitem", "name": "Can add certificate item", "content_type": 110}}, {"pk": 332, "model": "auth.permission", "fields": {"codename": "change_certificateitem", "name": "Can change certificate item", "content_type": 110}}, {"pk": 333, "model": "auth.permission", "fields": {"codename": "delete_certificateitem", "name": "Can delete certificate item", "content_type": 110}}, {"pk": 313, "model": "auth.permission", "fields": {"codename": "add_coupon", "name": "Can add coupon", "content_type": 104}}, {"pk": 314, "model": "auth.permission", "fields": {"codename": "change_coupon", "name": "Can change coupon", "content_type": 104}}, {"pk": 315, "model": "auth.permission", "fields": {"codename": "delete_coupon", "name": "Can delete coupon", "content_type": 104}}, {"pk": 316, "model": "auth.permission", "fields": {"codename": "add_couponredemption", "name": "Can add coupon redemption", "content_type": 105}}, {"pk": 317, "model": "auth.permission", "fields": {"codename": "change_couponredemption", "name": "Can change coupon redemption", "content_type": 105}}, {"pk": 318, "model": "auth.permission", "fields": {"codename": "delete_couponredemption", "name": "Can delete coupon redemption", "content_type": 105}}, {"pk": 322, "model": "auth.permission", "fields": {"codename": "add_courseregcodeitem", "name": "Can add course reg code item", "content_type": 107}}, {"pk": 323, "model": "auth.permission", "fields": {"codename": "change_courseregcodeitem", "name": "Can change course reg code item", "content_type": 107}}, {"pk": 324, "model": "auth.permission", "fields": {"codename": "delete_courseregcodeitem", "name": "Can delete course reg code item", "content_type": 107}}, {"pk": 325, "model": "auth.permission", "fields": {"codename": "add_courseregcodeitemannotation", "name": "Can add course reg code item annotation", "content_type": 108}}, {"pk": 326, "model": "auth.permission", "fields": {"codename": "change_courseregcodeitemannotation", "name": "Can change course reg code item annotation", "content_type": 108}}, {"pk": 327, "model": "auth.permission", "fields": {"codename": "delete_courseregcodeitemannotation", "name": "Can delete course reg code item annotation", "content_type": 108}}, {"pk": 307, "model": "auth.permission", "fields": {"codename": "add_courseregistrationcode", "name": "Can add course registration code", "content_type": 102}}, {"pk": 308, "model": "auth.permission", "fields": {"codename": "change_courseregistrationcode", "name": "Can change course registration code", "content_type": 102}}, {"pk": 309, "model": "auth.permission", "fields": {"codename": "delete_courseregistrationcode", "name": "Can delete course registration code", "content_type": 102}}, {"pk": 301, "model": "auth.permission", "fields": {"codename": "add_courseregistrationcodeinvoiceitem", "name": "Can add course registration code invoice item", "content_type": 100}}, {"pk": 302, "model": "auth.permission", "fields": {"codename": "change_courseregistrationcodeinvoiceitem", "name": "Can change course registration code invoice item", "content_type": 100}}, {"pk": 303, "model": "auth.permission", "fields": {"codename": "delete_courseregistrationcodeinvoiceitem", "name": "Can delete course registration code invoice item", "content_type": 100}}, {"pk": 337, "model": "auth.permission", "fields": {"codename": "add_donation", "name": "Can add donation", "content_type": 112}}, {"pk": 338, "model": "auth.permission", "fields": {"codename": "change_donation", "name": "Can change donation", "content_type": 112}}, {"pk": 339, "model": "auth.permission", "fields": {"codename": "delete_donation", "name": "Can delete donation", "content_type": 112}}, {"pk": 334, "model": "auth.permission", "fields": {"codename": "add_donationconfiguration", "name": "Can add donation configuration", "content_type": 111}}, {"pk": 335, "model": "auth.permission", "fields": {"codename": "change_donationconfiguration", "name": "Can change donation configuration", "content_type": 111}}, {"pk": 336, "model": "auth.permission", "fields": {"codename": "delete_donationconfiguration", "name": "Can delete donation configuration", "content_type": 111}}, {"pk": 292, "model": "auth.permission", "fields": {"codename": "add_invoice", "name": "Can add invoice", "content_type": 97}}, {"pk": 293, "model": "auth.permission", "fields": {"codename": "change_invoice", "name": "Can change invoice", "content_type": 97}}, {"pk": 294, "model": "auth.permission", "fields": {"codename": "delete_invoice", "name": "Can delete invoice", "content_type": 97}}, {"pk": 304, "model": "auth.permission", "fields": {"codename": "add_invoicehistory", "name": "Can add invoice history", "content_type": 101}}, {"pk": 305, "model": "auth.permission", "fields": {"codename": "change_invoicehistory", "name": "Can change invoice history", "content_type": 101}}, {"pk": 306, "model": "auth.permission", "fields": {"codename": "delete_invoicehistory", "name": "Can delete invoice history", "content_type": 101}}, {"pk": 298, "model": "auth.permission", "fields": {"codename": "add_invoiceitem", "name": "Can add invoice item", "content_type": 99}}, {"pk": 299, "model": "auth.permission", "fields": {"codename": "change_invoiceitem", "name": "Can change invoice item", "content_type": 99}}, {"pk": 300, "model": "auth.permission", "fields": {"codename": "delete_invoiceitem", "name": "Can delete invoice item", "content_type": 99}}, {"pk": 295, "model": "auth.permission", "fields": {"codename": "add_invoicetransaction", "name": "Can add invoice transaction", "content_type": 98}}, {"pk": 296, "model": "auth.permission", "fields": {"codename": "change_invoicetransaction", "name": "Can change invoice transaction", "content_type": 98}}, {"pk": 297, "model": "auth.permission", "fields": {"codename": "delete_invoicetransaction", "name": "Can delete invoice transaction", "content_type": 98}}, {"pk": 286, "model": "auth.permission", "fields": {"codename": "add_order", "name": "Can add order", "content_type": 95}}, {"pk": 287, "model": "auth.permission", "fields": {"codename": "change_order", "name": "Can change order", "content_type": 95}}, {"pk": 288, "model": "auth.permission", "fields": {"codename": "delete_order", "name": "Can delete order", "content_type": 95}}, {"pk": 289, "model": "auth.permission", "fields": {"codename": "add_orderitem", "name": "Can add order item", "content_type": 96}}, {"pk": 290, "model": "auth.permission", "fields": {"codename": "change_orderitem", "name": "Can change order item", "content_type": 96}}, {"pk": 291, "model": "auth.permission", "fields": {"codename": "delete_orderitem", "name": "Can delete order item", "content_type": 96}}, {"pk": 319, "model": "auth.permission", "fields": {"codename": "add_paidcourseregistration", "name": "Can add paid course registration", "content_type": 106}}, {"pk": 320, "model": "auth.permission", "fields": {"codename": "change_paidcourseregistration", "name": "Can change paid course registration", "content_type": 106}}, {"pk": 321, "model": "auth.permission", "fields": {"codename": "delete_paidcourseregistration", "name": "Can delete paid course registration", "content_type": 106}}, {"pk": 328, "model": "auth.permission", "fields": {"codename": "add_paidcourseregistrationannotation", "name": "Can add paid course registration annotation", "content_type": 109}}, {"pk": 329, "model": "auth.permission", "fields": {"codename": "change_paidcourseregistrationannotation", "name": "Can change paid course registration annotation", "content_type": 109}}, {"pk": 330, "model": "auth.permission", "fields": {"codename": "delete_paidcourseregistrationannotation", "name": "Can delete paid course registration annotation", "content_type": 109}}, {"pk": 310, "model": "auth.permission", "fields": {"codename": "add_registrationcoderedemption", "name": "Can add registration code redemption", "content_type": 103}}, {"pk": 311, "model": "auth.permission", "fields": {"codename": "change_registrationcoderedemption", "name": "Can change registration code redemption", "content_type": 103}}, {"pk": 312, "model": "auth.permission", "fields": {"codename": "delete_registrationcoderedemption", "name": "Can delete registration code redemption", "content_type": 103}}, {"pk": 16, "model": "auth.permission", "fields": {"codename": "add_site", "name": "Can add site", "content_type": 6}}, {"pk": 17, "model": "auth.permission", "fields": {"codename": "change_site", "name": "Can change site", "content_type": 6}}, {"pk": 18, "model": "auth.permission", "fields": {"codename": "delete_site", "name": "Can delete site", "content_type": 6}}, {"pk": 43, "model": "auth.permission", "fields": {"codename": "add_migrationhistory", "name": "Can add migration history", "content_type": 15}}, {"pk": 44, "model": "auth.permission", "fields": {"codename": "change_migrationhistory", "name": "Can change migration history", "content_type": 15}}, {"pk": 45, "model": "auth.permission", "fields": {"codename": "delete_migrationhistory", "name": "Can delete migration history", "content_type": 15}}, {"pk": 274, "model": "auth.permission", "fields": {"codename": "add_splashconfig", "name": "Can add splash config", "content_type": 91}}, {"pk": 275, "model": "auth.permission", "fields": {"codename": "change_splashconfig", "name": "Can change splash config", "content_type": 91}}, {"pk": 276, "model": "auth.permission", "fields": {"codename": "delete_splashconfig", "name": "Can delete splash config", "content_type": 91}}, {"pk": 100, "model": "auth.permission", "fields": {"codename": "add_anonymoususerid", "name": "Can add anonymous user id", "content_type": 34}}, {"pk": 101, "model": "auth.permission", "fields": {"codename": "change_anonymoususerid", "name": "Can change anonymous user id", "content_type": 34}}, {"pk": 102, "model": "auth.permission", "fields": {"codename": "delete_anonymoususerid", "name": "Can delete anonymous user id", "content_type": 34}}, {"pk": 136, "model": "auth.permission", "fields": {"codename": "add_courseaccessrole", "name": "Can add course access role", "content_type": 46}}, {"pk": 137, "model": "auth.permission", "fields": {"codename": "change_courseaccessrole", "name": "Can change course access role", "content_type": 46}}, {"pk": 138, "model": "auth.permission", "fields": {"codename": "delete_courseaccessrole", "name": "Can delete course access role", "content_type": 46}}, {"pk": 130, "model": "auth.permission", "fields": {"codename": "add_courseenrollment", "name": "Can add course enrollment", "content_type": 44}}, {"pk": 131, "model": "auth.permission", "fields": {"codename": "change_courseenrollment", "name": "Can change course enrollment", "content_type": 44}}, {"pk": 132, "model": "auth.permission", "fields": {"codename": "delete_courseenrollment", "name": "Can delete course enrollment", "content_type": 44}}, {"pk": 133, "model": "auth.permission", "fields": {"codename": "add_courseenrollmentallowed", "name": "Can add course enrollment allowed", "content_type": 45}}, {"pk": 134, "model": "auth.permission", "fields": {"codename": "change_courseenrollmentallowed", "name": "Can change course enrollment allowed", "content_type": 45}}, {"pk": 135, "model": "auth.permission", "fields": {"codename": "delete_courseenrollmentallowed", "name": "Can delete course enrollment allowed", "content_type": 45}}, {"pk": 139, "model": "auth.permission", "fields": {"codename": "add_dashboardconfiguration", "name": "Can add dashboard configuration", "content_type": 47}}, {"pk": 140, "model": "auth.permission", "fields": {"codename": "change_dashboardconfiguration", "name": "Can change dashboard configuration", "content_type": 47}}, {"pk": 141, "model": "auth.permission", "fields": {"codename": "delete_dashboardconfiguration", "name": "Can delete dashboard configuration", "content_type": 47}}, {"pk": 145, "model": "auth.permission", "fields": {"codename": "add_entranceexamconfiguration", "name": "Can add entrance exam configuration", "content_type": 49}}, {"pk": 146, "model": "auth.permission", "fields": {"codename": "change_entranceexamconfiguration", "name": "Can change entrance exam configuration", "content_type": 49}}, {"pk": 147, "model": "auth.permission", "fields": {"codename": "delete_entranceexamconfiguration", "name": "Can delete entrance exam configuration", "content_type": 49}}, {"pk": 142, "model": "auth.permission", "fields": {"codename": "add_linkedinaddtoprofileconfiguration", "name": "Can add linked in add to profile configuration", "content_type": 48}}, {"pk": 143, "model": "auth.permission", "fields": {"codename": "change_linkedinaddtoprofileconfiguration", "name": "Can change linked in add to profile configuration", "content_type": 48}}, {"pk": 144, "model": "auth.permission", "fields": {"codename": "delete_linkedinaddtoprofileconfiguration", "name": "Can delete linked in add to profile configuration", "content_type": 48}}, {"pk": 127, "model": "auth.permission", "fields": {"codename": "add_loginfailures", "name": "Can add login failures", "content_type": 43}}, {"pk": 128, "model": "auth.permission", "fields": {"codename": "change_loginfailures", "name": "Can change login failures", "content_type": 43}}, {"pk": 129, "model": "auth.permission", "fields": {"codename": "delete_loginfailures", "name": "Can delete login failures", "content_type": 43}}, {"pk": 124, "model": "auth.permission", "fields": {"codename": "add_passwordhistory", "name": "Can add password history", "content_type": 42}}, {"pk": 125, "model": "auth.permission", "fields": {"codename": "change_passwordhistory", "name": "Can change password history", "content_type": 42}}, {"pk": 126, "model": "auth.permission", "fields": {"codename": "delete_passwordhistory", "name": "Can delete password history", "content_type": 42}}, {"pk": 121, "model": "auth.permission", "fields": {"codename": "add_pendingemailchange", "name": "Can add pending email change", "content_type": 41}}, {"pk": 122, "model": "auth.permission", "fields": {"codename": "change_pendingemailchange", "name": "Can change pending email change", "content_type": 41}}, {"pk": 123, "model": "auth.permission", "fields": {"codename": "delete_pendingemailchange", "name": "Can delete pending email change", "content_type": 41}}, {"pk": 118, "model": "auth.permission", "fields": {"codename": "add_pendingnamechange", "name": "Can add pending name change", "content_type": 40}}, {"pk": 119, "model": "auth.permission", "fields": {"codename": "change_pendingnamechange", "name": "Can change pending name change", "content_type": 40}}, {"pk": 120, "model": "auth.permission", "fields": {"codename": "delete_pendingnamechange", "name": "Can delete pending name change", "content_type": 40}}, {"pk": 115, "model": "auth.permission", "fields": {"codename": "add_registration", "name": "Can add registration", "content_type": 39}}, {"pk": 116, "model": "auth.permission", "fields": {"codename": "change_registration", "name": "Can change registration", "content_type": 39}}, {"pk": 117, "model": "auth.permission", "fields": {"codename": "delete_registration", "name": "Can delete registration", "content_type": 39}}, {"pk": 106, "model": "auth.permission", "fields": {"codename": "add_userprofile", "name": "Can add user profile", "content_type": 36}}, {"pk": 107, "model": "auth.permission", "fields": {"codename": "change_userprofile", "name": "Can change user profile", "content_type": 36}}, {"pk": 108, "model": "auth.permission", "fields": {"codename": "delete_userprofile", "name": "Can delete user profile", "content_type": 36}}, {"pk": 109, "model": "auth.permission", "fields": {"codename": "add_usersignupsource", "name": "Can add user signup source", "content_type": 37}}, {"pk": 110, "model": "auth.permission", "fields": {"codename": "change_usersignupsource", "name": "Can change user signup source", "content_type": 37}}, {"pk": 111, "model": "auth.permission", "fields": {"codename": "delete_usersignupsource", "name": "Can delete user signup source", "content_type": 37}}, {"pk": 103, "model": "auth.permission", "fields": {"codename": "add_userstanding", "name": "Can add user standing", "content_type": 35}}, {"pk": 104, "model": "auth.permission", "fields": {"codename": "change_userstanding", "name": "Can change user standing", "content_type": 35}}, {"pk": 105, "model": "auth.permission", "fields": {"codename": "delete_userstanding", "name": "Can delete user standing", "content_type": 35}}, {"pk": 112, "model": "auth.permission", "fields": {"codename": "add_usertestgroup", "name": "Can add user test group", "content_type": 38}}, {"pk": 113, "model": "auth.permission", "fields": {"codename": "change_usertestgroup", "name": "Can change user test group", "content_type": 38}}, {"pk": 114, "model": "auth.permission", "fields": {"codename": "delete_usertestgroup", "name": "Can delete user test group", "content_type": 38}}, {"pk": 397, "model": "auth.permission", "fields": {"codename": "add_score", "name": "Can add score", "content_type": 132}}, {"pk": 398, "model": "auth.permission", "fields": {"codename": "change_score", "name": "Can change score", "content_type": 132}}, {"pk": 399, "model": "auth.permission", "fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 132}}, {"pk": 400, "model": "auth.permission", "fields": {"codename": "add_scoresummary", "name": "Can add score summary", "content_type": 133}}, {"pk": 401, "model": "auth.permission", "fields": {"codename": "change_scoresummary", "name": "Can change score summary", "content_type": 133}}, {"pk": 402, "model": "auth.permission", "fields": {"codename": "delete_scoresummary", "name": "Can delete score summary", "content_type": 133}}, {"pk": 391, "model": "auth.permission", "fields": {"codename": "add_studentitem", "name": "Can add student item", "content_type": 130}}, {"pk": 392, "model": "auth.permission", "fields": {"codename": "change_studentitem", "name": "Can change student item", "content_type": 130}}, {"pk": 393, "model": "auth.permission", "fields": {"codename": "delete_studentitem", "name": "Can delete student item", "content_type": 130}}, {"pk": 394, "model": "auth.permission", "fields": {"codename": "add_submission", "name": "Can add submission", "content_type": 131}}, {"pk": 395, "model": "auth.permission", "fields": {"codename": "change_submission", "name": "Can change submission", "content_type": 131}}, {"pk": 396, "model": "auth.permission", "fields": {"codename": "delete_submission", "name": "Can delete submission", "content_type": 131}}, {"pk": 382, "model": "auth.permission", "fields": {"codename": "add_surveyanswer", "name": "Can add survey answer", "content_type": 127}}, {"pk": 383, "model": "auth.permission", "fields": {"codename": "change_surveyanswer", "name": "Can change survey answer", "content_type": 127}}, {"pk": 384, "model": "auth.permission", "fields": {"codename": "delete_surveyanswer", "name": "Can delete survey answer", "content_type": 127}}, {"pk": 379, "model": "auth.permission", "fields": {"codename": "add_surveyform", "name": "Can add survey form", "content_type": 126}}, {"pk": 380, "model": "auth.permission", "fields": {"codename": "change_surveyform", "name": "Can change survey form", "content_type": 126}}, {"pk": 381, "model": "auth.permission", "fields": {"codename": "delete_surveyform", "name": "Can delete survey form", "content_type": 126}}, {"pk": 148, "model": "auth.permission", "fields": {"codename": "add_trackinglog", "name": "Can add tracking log", "content_type": 50}}, {"pk": 149, "model": "auth.permission", "fields": {"codename": "change_trackinglog", "name": "Can change tracking log", "content_type": 50}}, {"pk": 150, "model": "auth.permission", "fields": {"codename": "delete_trackinglog", "name": "Can delete tracking log", "content_type": 50}}, {"pk": 280, "model": "auth.permission", "fields": {"codename": "add_usercoursetag", "name": "Can add user course tag", "content_type": 93}}, {"pk": 281, "model": "auth.permission", "fields": {"codename": "change_usercoursetag", "name": "Can change user course tag", "content_type": 93}}, {"pk": 282, "model": "auth.permission", "fields": {"codename": "delete_usercoursetag", "name": "Can delete user course tag", "content_type": 93}}, {"pk": 283, "model": "auth.permission", "fields": {"codename": "add_userorgtag", "name": "Can add user org tag", "content_type": 94}}, {"pk": 284, "model": "auth.permission", "fields": {"codename": "change_userorgtag", "name": "Can change user org tag", "content_type": 94}}, {"pk": 285, "model": "auth.permission", "fields": {"codename": "delete_userorgtag", "name": "Can delete user org tag", "content_type": 94}}, {"pk": 277, "model": "auth.permission", "fields": {"codename": "add_userpreference", "name": "Can add user preference", "content_type": 92}}, {"pk": 278, "model": "auth.permission", "fields": {"codename": "change_userpreference", "name": "Can change user preference", "content_type": 92}}, {"pk": 279, "model": "auth.permission", "fields": {"codename": "delete_userpreference", "name": "Can delete user preference", "content_type": 92}}, {"pk": 151, "model": "auth.permission", "fields": {"codename": "add_ratelimitconfiguration", "name": "Can add rate limit configuration", "content_type": 51}}, {"pk": 152, "model": "auth.permission", "fields": {"codename": "change_ratelimitconfiguration", "name": "Can change rate limit configuration", "content_type": 51}}, {"pk": 153, "model": "auth.permission", "fields": {"codename": "delete_ratelimitconfiguration", "name": "Can delete rate limit configuration", "content_type": 51}}, {"pk": 346, "model": "auth.permission", "fields": {"codename": "add_softwaresecurephotoverification", "name": "Can add software secure photo verification", "content_type": 115}}, {"pk": 347, "model": "auth.permission", "fields": {"codename": "change_softwaresecurephotoverification", "name": "Can change software secure photo verification", "content_type": 115}}, {"pk": 348, "model": "auth.permission", "fields": {"codename": "delete_softwaresecurephotoverification", "name": "Can delete software secure photo verification", "content_type": 115}}, {"pk": 220, "model": "auth.permission", "fields": {"codename": "add_article", "name": "Can add article", "content_type": 74}}, {"pk": 224, "model": "auth.permission", "fields": {"codename": "assign", "name": "Can change ownership of any article", "content_type": 74}}, {"pk": 221, "model": "auth.permission", "fields": {"codename": "change_article", "name": "Can change article", "content_type": 74}}, {"pk": 222, "model": "auth.permission", "fields": {"codename": "delete_article", "name": "Can delete article", "content_type": 74}}, {"pk": 225, "model": "auth.permission", "fields": {"codename": "grant", "name": "Can assign permissions to other users", "content_type": 74}}, {"pk": 223, "model": "auth.permission", "fields": {"codename": "moderate", "name": "Can edit all articles and lock/unlock/restore", "content_type": 74}}, {"pk": 226, "model": "auth.permission", "fields": {"codename": "add_articleforobject", "name": "Can add Article for object", "content_type": 75}}, {"pk": 227, "model": "auth.permission", "fields": {"codename": "change_articleforobject", "name": "Can change Article for object", "content_type": 75}}, {"pk": 228, "model": "auth.permission", "fields": {"codename": "delete_articleforobject", "name": "Can delete Article for object", "content_type": 75}}, {"pk": 235, "model": "auth.permission", "fields": {"codename": "add_articleplugin", "name": "Can add article plugin", "content_type": 78}}, {"pk": 236, "model": "auth.permission", "fields": {"codename": "change_articleplugin", "name": "Can change article plugin", "content_type": 78}}, {"pk": 237, "model": "auth.permission", "fields": {"codename": "delete_articleplugin", "name": "Can delete article plugin", "content_type": 78}}, {"pk": 229, "model": "auth.permission", "fields": {"codename": "add_articlerevision", "name": "Can add article revision", "content_type": 76}}, {"pk": 230, "model": "auth.permission", "fields": {"codename": "change_articlerevision", "name": "Can change article revision", "content_type": 76}}, {"pk": 231, "model": "auth.permission", "fields": {"codename": "delete_articlerevision", "name": "Can delete article revision", "content_type": 76}}, {"pk": 250, "model": "auth.permission", "fields": {"codename": "add_articlesubscription", "name": "Can add article subscription", "content_type": 83}}, {"pk": 251, "model": "auth.permission", "fields": {"codename": "change_articlesubscription", "name": "Can change article subscription", "content_type": 83}}, {"pk": 252, "model": "auth.permission", "fields": {"codename": "delete_articlesubscription", "name": "Can delete article subscription", "content_type": 83}}, {"pk": 238, "model": "auth.permission", "fields": {"codename": "add_reusableplugin", "name": "Can add reusable plugin", "content_type": 79}}, {"pk": 239, "model": "auth.permission", "fields": {"codename": "change_reusableplugin", "name": "Can change reusable plugin", "content_type": 79}}, {"pk": 240, "model": "auth.permission", "fields": {"codename": "delete_reusableplugin", "name": "Can delete reusable plugin", "content_type": 79}}, {"pk": 244, "model": "auth.permission", "fields": {"codename": "add_revisionplugin", "name": "Can add revision plugin", "content_type": 81}}, {"pk": 245, "model": "auth.permission", "fields": {"codename": "change_revisionplugin", "name": "Can change revision plugin", "content_type": 81}}, {"pk": 246, "model": "auth.permission", "fields": {"codename": "delete_revisionplugin", "name": "Can delete revision plugin", "content_type": 81}}, {"pk": 247, "model": "auth.permission", "fields": {"codename": "add_revisionpluginrevision", "name": "Can add revision plugin revision", "content_type": 82}}, {"pk": 248, "model": "auth.permission", "fields": {"codename": "change_revisionpluginrevision", "name": "Can change revision plugin revision", "content_type": 82}}, {"pk": 249, "model": "auth.permission", "fields": {"codename": "delete_revisionpluginrevision", "name": "Can delete revision plugin revision", "content_type": 82}}, {"pk": 241, "model": "auth.permission", "fields": {"codename": "add_simpleplugin", "name": "Can add simple plugin", "content_type": 80}}, {"pk": 242, "model": "auth.permission", "fields": {"codename": "change_simpleplugin", "name": "Can change simple plugin", "content_type": 80}}, {"pk": 243, "model": "auth.permission", "fields": {"codename": "delete_simpleplugin", "name": "Can delete simple plugin", "content_type": 80}}, {"pk": 232, "model": "auth.permission", "fields": {"codename": "add_urlpath", "name": "Can add URL path", "content_type": 77}}, {"pk": 233, "model": "auth.permission", "fields": {"codename": "change_urlpath", "name": "Can change URL path", "content_type": 77}}, {"pk": 234, "model": "auth.permission", "fields": {"codename": "delete_urlpath", "name": "Can delete URL path", "content_type": 77}}, {"pk": 451, "model": "auth.permission", "fields": {"codename": "add_assessmentworkflow", "name": "Can add assessment workflow", "content_type": 150}}, {"pk": 452, "model": "auth.permission", "fields": {"codename": "change_assessmentworkflow", "name": "Can change assessment workflow", "content_type": 150}}, {"pk": 453, "model": "auth.permission", "fields": {"codename": "delete_assessmentworkflow", "name": "Can delete assessment workflow", "content_type": 150}}, {"pk": 457, "model": "auth.permission", "fields": {"codename": "add_assessmentworkflowcancellation", "name": "Can add assessment workflow cancellation", "content_type": 152}}, {"pk": 458, "model": "auth.permission", "fields": {"codename": "change_assessmentworkflowcancellation", "name": "Can change assessment workflow cancellation", "content_type": 152}}, {"pk": 459, "model": "auth.permission", "fields": {"codename": "delete_assessmentworkflowcancellation", "name": "Can delete assessment workflow cancellation", "content_type": 152}}, {"pk": 454, "model": "auth.permission", "fields": {"codename": "add_assessmentworkflowstep", "name": "Can add assessment workflow step", "content_type": 151}}, {"pk": 455, "model": "auth.permission", "fields": {"codename": "change_assessmentworkflowstep", "name": "Can change assessment workflow step", "content_type": 151}}, {"pk": 456, "model": "auth.permission", "fields": {"codename": "delete_assessmentworkflowstep", "name": "Can delete assessment workflow step", "content_type": 151}}, {"pk": 496, "model": "auth.permission", "fields": {"codename": "add_studioconfig", "name": "Can add studio config", "content_type": 165}}, {"pk": 497, "model": "auth.permission", "fields": {"codename": "change_studioconfig", "name": "Can change studio config", "content_type": 165}}, {"pk": 498, "model": "auth.permission", "fields": {"codename": "delete_studioconfig", "name": "Can delete studio config", "content_type": 165}}, {"pk": 1, "model": "util.ratelimitconfiguration", "fields": {"change_date": "2015-03-06T21:17:28Z", "changed_by": null, "enabled": true}}, {"pk": 1, "model": "dark_lang.darklangconfig", "fields": {"change_date": "2015-03-06T21:17:43Z", "changed_by": null, "enabled": true, "released_languages": ""}}] \ No newline at end of file diff --git a/common/test/db_cache/bok_choy_schema.sql b/common/test/db_cache/bok_choy_schema.sql index 1fb4b60980..c9705b276b 100644 --- a/common/test/db_cache/bok_choy_schema.sql +++ b/common/test/db_cache/bok_choy_schema.sql @@ -20,8 +20,8 @@ CREATE TABLE `assessment_aiclassifier` ( PRIMARY KEY (`id`), KEY `assessment_aiclassifier_714175dc` (`classifier_set_id`), KEY `assessment_aiclassifier_a36470e4` (`criterion_id`), - CONSTRAINT `classifier_set_id_refs_id_e0204c20f80cbf6` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`), - CONSTRAINT `criterion_id_refs_id_5b95f648e6ab97f2` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`) + CONSTRAINT `classifier_set_id_refs_id_f80cbf6` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`), + CONSTRAINT `criterion_id_refs_id_e6ab97f2` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_aiclassifierset`; @@ -40,7 +40,7 @@ CREATE TABLE `assessment_aiclassifierset` ( KEY `assessment_aiclassifierset_53012c1e` (`algorithm_id`), KEY `assessment_aiclassifierset_ff48d8e5` (`course_id`), KEY `assessment_aiclassifierset_67b70d25` (`item_id`), - CONSTRAINT `rubric_id_refs_id_39819374c037b8e4` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) + CONSTRAINT `rubric_id_refs_id_c037b8e4` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_aigradingworkflow`; @@ -73,9 +73,9 @@ CREATE TABLE `assessment_aigradingworkflow` ( KEY `assessment_aigradingworkflow_42ff452e` (`student_id`), KEY `assessment_aigradingworkflow_67b70d25` (`item_id`), KEY `assessment_aigradingworkflow_ff48d8e5` (`course_id`), - CONSTRAINT `assessment_id_refs_id_2b6c2601d8478e7` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), - CONSTRAINT `classifier_set_id_refs_id_4f95ef541e9046d1` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`), - CONSTRAINT `rubric_id_refs_id_7b31a4b7dc2a0464` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) + CONSTRAINT `assessment_id_refs_id_1d8478e7` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), + CONSTRAINT `classifier_set_id_refs_id_1e9046d1` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`), + CONSTRAINT `rubric_id_refs_id_dc2a0464` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_aitrainingworkflow`; @@ -99,7 +99,7 @@ CREATE TABLE `assessment_aitrainingworkflow` ( KEY `assessment_aitrainingworkflow_a2fd3af6` (`completed_at`), KEY `assessment_aitrainingworkflow_67b70d25` (`item_id`), KEY `assessment_aitrainingworkflow_ff48d8e5` (`course_id`), - CONSTRAINT `classifier_set_id_refs_id_4f31dd8e0dcc7412` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`) + CONSTRAINT `classifier_set_id_refs_id_dcc7412` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_aitrainingworkflow_training_examples`; @@ -113,8 +113,8 @@ CREATE TABLE `assessment_aitrainingworkflow_training_examples` ( UNIQUE KEY `assessment_aitraini_aitrainingworkflow_id_4b50cfbece05470a_uniq` (`aitrainingworkflow_id`,`trainingexample_id`), KEY `assessment_aitrainingworkflow_training_examples_a57f9195` (`aitrainingworkflow_id`), KEY `assessment_aitrainingworkflow_training_examples_ea4da31f` (`trainingexample_id`), - CONSTRAINT `trainingexample_id_refs_id_78a2a13b0bf13a24` FOREIGN KEY (`trainingexample_id`) REFERENCES `assessment_trainingexample` (`id`), - CONSTRAINT `aitrainingworkflow_id_refs_id_2840acb945c30582` FOREIGN KEY (`aitrainingworkflow_id`) REFERENCES `assessment_aitrainingworkflow` (`id`) + CONSTRAINT `trainingexample_id_refs_id_bf13a24` FOREIGN KEY (`trainingexample_id`) REFERENCES `assessment_trainingexample` (`id`), + CONSTRAINT `aitrainingworkflow_id_refs_id_45c30582` FOREIGN KEY (`aitrainingworkflow_id`) REFERENCES `assessment_aitrainingworkflow` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_assessment`; @@ -133,7 +133,7 @@ CREATE TABLE `assessment_assessment` ( KEY `assessment_assessment_27cb9807` (`rubric_id`), KEY `assessment_assessment_3227200` (`scored_at`), KEY `assessment_assessment_9f54855a` (`scorer_id`), - CONSTRAINT `rubric_id_refs_id_287cd4a61ab6dbc4` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) + CONSTRAINT `rubric_id_refs_id_1ab6dbc4` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_assessmentfeedback`; @@ -158,8 +158,8 @@ CREATE TABLE `assessment_assessmentfeedback_assessments` ( UNIQUE KEY `assessment_assessmen_assessmentfeedback_id_36925aaa1a839ac_uniq` (`assessmentfeedback_id`,`assessment_id`), KEY `assessment_assessmentfeedback_assessments_58f1f0d` (`assessmentfeedback_id`), KEY `assessment_assessmentfeedback_assessments_c168f2dc` (`assessment_id`), - CONSTRAINT `assessment_id_refs_id_170e92e6e7fd607e` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), - CONSTRAINT `assessmentfeedback_id_refs_id_226c8f1e91bbd347` FOREIGN KEY (`assessmentfeedback_id`) REFERENCES `assessment_assessmentfeedback` (`id`) + CONSTRAINT `assessment_id_refs_id_e7fd607e` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), + CONSTRAINT `assessmentfeedback_id_refs_id_91bbd347` FOREIGN KEY (`assessmentfeedback_id`) REFERENCES `assessment_assessmentfeedback` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_assessmentfeedback_options`; @@ -173,8 +173,8 @@ CREATE TABLE `assessment_assessmentfeedback_options` ( UNIQUE KEY `assessment_assessmen_assessmentfeedback_id_14efc9eea8f4c83_uniq` (`assessmentfeedback_id`,`assessmentfeedbackoption_id`), KEY `assessment_assessmentfeedback_options_58f1f0d` (`assessmentfeedback_id`), KEY `assessment_assessmentfeedback_options_4e523d64` (`assessmentfeedbackoption_id`), - CONSTRAINT `assessmentfeedbackoption_id_refs_id_597390b9cdf28acd` FOREIGN KEY (`assessmentfeedbackoption_id`) REFERENCES `assessment_assessmentfeedbackoption` (`id`), - CONSTRAINT `assessmentfeedback_id_refs_id_5383f6e95c27c412` FOREIGN KEY (`assessmentfeedback_id`) REFERENCES `assessment_assessmentfeedback` (`id`) + CONSTRAINT `assessmentfeedbackoption_id_refs_id_cdf28acd` FOREIGN KEY (`assessmentfeedbackoption_id`) REFERENCES `assessment_assessmentfeedbackoption` (`id`), + CONSTRAINT `assessmentfeedback_id_refs_id_5c27c412` FOREIGN KEY (`assessmentfeedback_id`) REFERENCES `assessment_assessmentfeedback` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_assessmentfeedbackoption`; @@ -200,9 +200,9 @@ CREATE TABLE `assessment_assessmentpart` ( KEY `assessment_assessmentpart_c168f2dc` (`assessment_id`), KEY `assessment_assessmentpart_2f3b0dc9` (`option_id`), KEY `assessment_assessmentpart_a36470e4` (`criterion_id`), - CONSTRAINT `criterion_id_refs_id_507d3ff2eeb3dc44` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`), - CONSTRAINT `assessment_id_refs_id_5cb07795bff26444` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), - CONSTRAINT `option_id_refs_id_5353f6b204439dd5` FOREIGN KEY (`option_id`) REFERENCES `assessment_criterionoption` (`id`) + CONSTRAINT `criterion_id_refs_id_eeb3dc44` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`), + CONSTRAINT `assessment_id_refs_id_bff26444` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), + CONSTRAINT `option_id_refs_id_4439dd5` FOREIGN KEY (`option_id`) REFERENCES `assessment_criterionoption` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_criterion`; @@ -214,10 +214,10 @@ CREATE TABLE `assessment_criterion` ( `name` varchar(100) NOT NULL, `order_num` int(10) unsigned NOT NULL, `prompt` longtext NOT NULL, - `label` varchar(100) NOT NULL DEFAULT '', + `label` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `assessment_criterion_27cb9807` (`rubric_id`), - CONSTRAINT `rubric_id_refs_id_48945684f2f4f3c4` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) + CONSTRAINT `rubric_id_refs_id_f2f4f3c4` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_criterionoption`; @@ -230,10 +230,10 @@ CREATE TABLE `assessment_criterionoption` ( `points` int(10) unsigned NOT NULL, `name` varchar(100) NOT NULL, `explanation` longtext NOT NULL, - `label` varchar(100) NOT NULL DEFAULT '', + `label` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `assessment_criterionoption_a36470e4` (`criterion_id`), - CONSTRAINT `criterion_id_refs_id_4aabcea0d2645232` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`) + CONSTRAINT `criterion_id_refs_id_d2645232` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_peerworkflow`; @@ -248,6 +248,7 @@ CREATE TABLE `assessment_peerworkflow` ( `created_at` datetime NOT NULL, `completed_at` datetime DEFAULT NULL, `grading_completed_at` datetime, + `cancelled_at` datetime, PRIMARY KEY (`id`), UNIQUE KEY `submission_uuid` (`submission_uuid`), KEY `assessment_peerworkflow_42ff452e` (`student_id`), @@ -256,7 +257,8 @@ CREATE TABLE `assessment_peerworkflow` ( KEY `assessment_peerworkflow_3b1c9c31` (`created_at`), KEY `assessment_peerworkflow_a2fd3af6` (`completed_at`), KEY `assessment_peerworkflow_course_id_5ca23fddca9b630d` (`course_id`,`item_id`,`student_id`), - KEY `assessment_peerworkflow_dcd62131` (`grading_completed_at`) + KEY `assessment_peerworkflow_dcd62131` (`grading_completed_at`), + KEY `assessment_peerworkflow_853d09a8` (`cancelled_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_peerworkflowitem`; @@ -276,9 +278,9 @@ CREATE TABLE `assessment_peerworkflowitem` ( KEY `assessment_peerworkflowitem_39d020e6` (`submission_uuid`), KEY `assessment_peerworkflowitem_d6e710e4` (`started_at`), KEY `assessment_peerworkflowitem_c168f2dc` (`assessment_id`), - CONSTRAINT `assessment_id_refs_id_61929d36f69a86a1` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), - CONSTRAINT `author_id_refs_id_5b3f4e759547df0` FOREIGN KEY (`author_id`) REFERENCES `assessment_peerworkflow` (`id`), - CONSTRAINT `scorer_id_refs_id_5b3f4e759547df0` FOREIGN KEY (`scorer_id`) REFERENCES `assessment_peerworkflow` (`id`) + CONSTRAINT `assessment_id_refs_id_f69a86a1` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), + CONSTRAINT `author_id_refs_id_59547df0` FOREIGN KEY (`author_id`) REFERENCES `assessment_peerworkflow` (`id`), + CONSTRAINT `scorer_id_refs_id_59547df0` FOREIGN KEY (`scorer_id`) REFERENCES `assessment_peerworkflow` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_rubric`; @@ -324,8 +326,8 @@ CREATE TABLE `assessment_studenttrainingworkflowitem` ( UNIQUE KEY `assessment_studenttrainingworkf_order_num_1391289faa95b87c_uniq` (`order_num`,`workflow_id`), KEY `assessment_studenttrainingworkflowitem_26cddbc7` (`workflow_id`), KEY `assessment_studenttrainingworkflowitem_541d6663` (`training_example_id`), - CONSTRAINT `training_example_id_refs_id_21003d6e7d3f36e4` FOREIGN KEY (`training_example_id`) REFERENCES `assessment_trainingexample` (`id`), - CONSTRAINT `workflow_id_refs_id_5a3573250ce50a30` FOREIGN KEY (`workflow_id`) REFERENCES `assessment_studenttrainingworkflow` (`id`) + CONSTRAINT `training_example_id_refs_id_7d3f36e4` FOREIGN KEY (`training_example_id`) REFERENCES `assessment_trainingexample` (`id`), + CONSTRAINT `workflow_id_refs_id_ce50a30` FOREIGN KEY (`workflow_id`) REFERENCES `assessment_studenttrainingworkflow` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_trainingexample`; @@ -339,7 +341,7 @@ CREATE TABLE `assessment_trainingexample` ( PRIMARY KEY (`id`), UNIQUE KEY `content_hash` (`content_hash`), KEY `assessment_trainingexample_27cb9807` (`rubric_id`), - CONSTRAINT `rubric_id_refs_id_36f1317b7750db21` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) + CONSTRAINT `rubric_id_refs_id_7750db21` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_trainingexample_options_selected`; @@ -353,8 +355,8 @@ CREATE TABLE `assessment_trainingexample_options_selected` ( UNIQUE KEY `assessment_trainingexa_trainingexample_id_60940991fb17d27d_uniq` (`trainingexample_id`,`criterionoption_id`), KEY `assessment_trainingexample_options_selected_ea4da31f` (`trainingexample_id`), KEY `assessment_trainingexample_options_selected_843fa247` (`criterionoption_id`), - CONSTRAINT `criterionoption_id_refs_id_16ecec54bed5a465` FOREIGN KEY (`criterionoption_id`) REFERENCES `assessment_criterionoption` (`id`), - CONSTRAINT `trainingexample_id_refs_id_797bc2db5f0faa8d` FOREIGN KEY (`trainingexample_id`) REFERENCES `assessment_trainingexample` (`id`) + CONSTRAINT `criterionoption_id_refs_id_bed5a465` FOREIGN KEY (`criterionoption_id`) REFERENCES `assessment_criterionoption` (`id`), + CONSTRAINT `trainingexample_id_refs_id_5f0faa8d` FOREIGN KEY (`trainingexample_id`) REFERENCES `assessment_trainingexample` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `auth_group`; @@ -394,7 +396,7 @@ CREATE TABLE `auth_permission` ( UNIQUE KEY `content_type_id` (`content_type_id`,`codename`), KEY `auth_permission_e4470c6e` (`content_type_id`), CONSTRAINT `content_type_id_refs_id_728de91f` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=448 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=499 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `auth_registration`; /*!40101 SET @saved_cs_client = @@character_set_client */; @@ -406,7 +408,7 @@ CREATE TABLE `auth_registration` ( PRIMARY KEY (`id`), UNIQUE KEY `user_id` (`user_id`), UNIQUE KEY `activation_key` (`activation_key`), - CONSTRAINT `user_id_refs_id_3fe8066a03e5b0b5` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_3e5b0b5` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `auth_user`; @@ -486,7 +488,21 @@ CREATE TABLE `auth_userprofile` ( KEY `auth_userprofile_fca3d292` (`gender`), KEY `auth_userprofile_d85587` (`year_of_birth`), KEY `auth_userprofile_551e365c` (`level_of_education`), - CONSTRAINT `user_id_refs_id_3daaa960628b4c11` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_628b4c11` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `branding_brandinginfoconfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `branding_brandinginfoconfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + `enabled` tinyint(1) NOT NULL, + `configuration` longtext NOT NULL, + PRIMARY KEY (`id`), + KEY `branding_brandinginfoconfig_16905482` (`changed_by_id`), + CONSTRAINT `changed_by_id_refs_id_d2757db8` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `bulk_email_courseauthorization`; @@ -521,7 +537,7 @@ CREATE TABLE `bulk_email_courseemail` ( KEY `bulk_email_courseemail_901f59e9` (`sender_id`), KEY `bulk_email_courseemail_36af87d1` (`slug`), KEY `bulk_email_courseemail_ff48d8e5` (`course_id`), - CONSTRAINT `sender_id_refs_id_5e8b8f9870ed6279` FOREIGN KEY (`sender_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `sender_id_refs_id_70ed6279` FOREIGN KEY (`sender_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `bulk_email_courseemailtemplate`; @@ -547,7 +563,7 @@ CREATE TABLE `bulk_email_optout` ( UNIQUE KEY `bulk_email_optout_course_id_368f7519b2997e1a_uniq` (`course_id`,`user_id`), KEY `bulk_email_optout_ff48d8e5` (`course_id`), KEY `bulk_email_optout_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_fc2bac99e68e67c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_9e68e67c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `celery_taskmeta`; @@ -581,6 +597,32 @@ CREATE TABLE `celery_tasksetmeta` ( KEY `celery_tasksetmeta_c91f1bf` (`hidden`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `certificates_certificategenerationconfiguration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `certificates_certificategenerationconfiguration` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + `enabled` tinyint(1) NOT NULL, + PRIMARY KEY (`id`), + KEY `certificates_certificategenerationconfiguration_16905482` (`changed_by_id`), + CONSTRAINT `changed_by_id_refs_id_abb3a677` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `certificates_certificategenerationcoursesetting`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `certificates_certificategenerationcoursesetting` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, + `course_key` varchar(255) NOT NULL, + `enabled` tinyint(1) NOT NULL, + PRIMARY KEY (`id`), + KEY `certificates_certificategenerationcoursesetting_b4b47e7a` (`course_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `certificates_certificatewhitelist`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -591,7 +633,43 @@ CREATE TABLE `certificates_certificatewhitelist` ( `whitelist` tinyint(1) NOT NULL, PRIMARY KEY (`id`), KEY `certificates_certificatewhitelist_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_517c1c6aa7ba9306` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_a7ba9306` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `certificates_examplecertificate`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `certificates_examplecertificate` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, + `example_cert_set_id` int(11) NOT NULL, + `description` varchar(255) NOT NULL, + `uuid` varchar(255) NOT NULL, + `access_key` varchar(255) NOT NULL, + `full_name` varchar(255) NOT NULL, + `template` varchar(255) NOT NULL, + `status` varchar(255) NOT NULL, + `error_reason` longtext, + `download_url` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uuid` (`uuid`), + KEY `certificates_examplecertificate_uuid_183b9188451b331e` (`uuid`,`access_key`), + KEY `certificates_examplecertificate_3b9264a` (`example_cert_set_id`), + KEY `certificates_examplecertificate_752852c3` (`access_key`), + CONSTRAINT `example_cert_set_id_refs_id_bdd9e28a` FOREIGN KEY (`example_cert_set_id`) REFERENCES `certificates_examplecertificateset` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `certificates_examplecertificateset`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `certificates_examplecertificateset` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, + `course_key` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + KEY `certificates_examplecertificateset_b4b47e7a` (`course_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `certificates_generatedcertificate`; @@ -616,7 +694,7 @@ CREATE TABLE `certificates_generatedcertificate` ( PRIMARY KEY (`id`), UNIQUE KEY `certificates_generatedcertifica_course_id_1389f6b2d72f5e78_uniq` (`course_id`,`user_id`), KEY `certificates_generatedcertificate_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_6c4fb3478e23bfe2` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_8e23bfe2` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `circuit_servercircuit`; @@ -639,12 +717,20 @@ CREATE TABLE `contentstore_videouploadconfig` ( `changed_by_id` int(11) DEFAULT NULL, `enabled` tinyint(1) NOT NULL, `profile_whitelist` longtext NOT NULL, - `status_whitelist` longtext NOT NULL, PRIMARY KEY (`id`), KEY `contentstore_videouploadconfig_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_31e0e2c8209c438f` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_209c438f` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `corsheaders_corsmodel`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `corsheaders_corsmodel` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `cors` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `course_action_state_coursererunstate`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -668,8 +754,8 @@ CREATE TABLE `course_action_state_coursererunstate` ( KEY `course_action_state_coursererunstate_b4b47e7a` (`course_key`), KEY `course_action_state_coursererunstate_1bd4707b` (`action`), KEY `course_action_state_coursererunstate_ebfe36dd` (`source_course_key`), - CONSTRAINT `created_user_id_refs_id_1334640c1744bdeb` FOREIGN KEY (`created_user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `updated_user_id_refs_id_1334640c1744bdeb` FOREIGN KEY (`updated_user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `created_user_id_refs_id_1744bdeb` FOREIGN KEY (`created_user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `updated_user_id_refs_id_1744bdeb` FOREIGN KEY (`updated_user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `course_creators_coursecreator`; @@ -683,7 +769,7 @@ CREATE TABLE `course_creators_coursecreator` ( `note` varchar(512) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `user_id` (`user_id`), - CONSTRAINT `user_id_refs_id_22dd4a06a0e6044` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_6a0e6044` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `course_groups_courseusergroup`; @@ -710,8 +796,8 @@ CREATE TABLE `course_groups_courseusergroup_users` ( UNIQUE KEY `course_groups_courseus_courseusergroup_id_46691806058983eb_uniq` (`courseusergroup_id`,`user_id`), KEY `course_groups_courseusergroup_users_caee1c64` (`courseusergroup_id`), KEY `course_groups_courseusergroup_users_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_779390fdbf33b47a` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `courseusergroup_id_refs_id_43167b76d26180aa` FOREIGN KEY (`courseusergroup_id`) REFERENCES `course_groups_courseusergroup` (`id`) + CONSTRAINT `user_id_refs_id_bf33b47a` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `courseusergroup_id_refs_id_d26180aa` FOREIGN KEY (`courseusergroup_id`) REFERENCES `course_groups_courseusergroup` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `course_groups_courseusergrouppartitiongroup`; @@ -726,7 +812,7 @@ CREATE TABLE `course_groups_courseusergrouppartitiongroup` ( `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `course_user_group_id` (`course_user_group_id`), - CONSTRAINT `course_user_group_id_refs_id_48edc507145383c4` FOREIGN KEY (`course_user_group_id`) REFERENCES `course_groups_courseusergroup` (`id`) + CONSTRAINT `course_user_group_id_refs_id_145383c4` FOREIGN KEY (`course_user_group_id`) REFERENCES `course_groups_courseusergroup` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `course_modes_coursemode`; @@ -743,6 +829,7 @@ CREATE TABLE `course_modes_coursemode` ( `expiration_date` date DEFAULT NULL, `expiration_datetime` datetime DEFAULT NULL, `description` longtext, + `sku` varchar(255), PRIMARY KEY (`id`), UNIQUE KEY `course_modes_coursemode_course_id_69505c92fc09856_uniq` (`course_id`,`currency`,`mode_slug`), KEY `course_modes_coursemode_ff48d8e5` (`course_id`) @@ -765,6 +852,19 @@ CREATE TABLE `course_modes_coursemodesarchive` ( KEY `course_modes_coursemodesarchive_ff48d8e5` (`course_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `course_structures_coursestructure`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `course_structures_coursestructure` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, + `course_id` varchar(255) NOT NULL, + `structure_json` longtext, + PRIMARY KEY (`id`), + UNIQUE KEY `course_id` (`course_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `courseware_offlinecomputedgrade`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -781,7 +881,7 @@ CREATE TABLE `courseware_offlinecomputedgrade` ( KEY `courseware_offlinecomputedgrade_ff48d8e5` (`course_id`), KEY `courseware_offlinecomputedgrade_3216ff68` (`created`), KEY `courseware_offlinecomputedgrade_8aac229` (`updated`), - CONSTRAINT `user_id_refs_id_7b3221f638cf339d` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_38cf339d` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `courseware_offlinecomputedgradelog`; @@ -823,7 +923,7 @@ CREATE TABLE `courseware_studentmodule` ( KEY `courseware_studentmodule_f53ed95e` (`module_id`), KEY `courseware_studentmodule_1923c03f` (`done`), KEY `courseware_studentmodule_ff48d8e5` (`course_id`), - CONSTRAINT `student_id_refs_id_51af713179ba2570` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `student_id_refs_id_79ba2570` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `courseware_studentmodulehistory`; @@ -841,7 +941,7 @@ CREATE TABLE `courseware_studentmodulehistory` ( KEY `courseware_studentmodulehistory_5656f5fe` (`student_module_id`), KEY `courseware_studentmodulehistory_659105e4` (`version`), KEY `courseware_studentmodulehistory_3216ff68` (`created`), - CONSTRAINT `student_module_id_refs_id_51904344e48636f4` FOREIGN KEY (`student_module_id`) REFERENCES `courseware_studentmodule` (`id`) + CONSTRAINT `student_module_id_refs_id_e48636f4` FOREIGN KEY (`student_module_id`) REFERENCES `courseware_studentmodule` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `courseware_xmodulestudentinfofield`; @@ -860,7 +960,7 @@ CREATE TABLE `courseware_xmodulestudentinfofield` ( KEY `courseware_xmodulestudentinfofield_42ff452e` (`student_id`), KEY `courseware_xmodulestudentinfofield_3216ff68` (`created`), KEY `courseware_xmodulestudentinfofield_5436e97a` (`modified`), - CONSTRAINT `student_id_refs_id_66e06928bfcfbe68` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `student_id_refs_id_bfcfbe68` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `courseware_xmodulestudentprefsfield`; @@ -881,7 +981,7 @@ CREATE TABLE `courseware_xmodulestudentprefsfield` ( KEY `courseware_xmodulestudentprefsfield_42ff452e` (`student_id`), KEY `courseware_xmodulestudentprefsfield_3216ff68` (`created`), KEY `courseware_xmodulestudentprefsfield_5436e97a` (`modified`), - CONSTRAINT `student_id_refs_id_32bbaa45d7b9940b` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `student_id_refs_id_d7b9940b` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `courseware_xmoduleuserstatesummaryfield`; @@ -913,7 +1013,7 @@ CREATE TABLE `dark_lang_darklangconfig` ( `released_languages` longtext NOT NULL, PRIMARY KEY (`id`), KEY `dark_lang_darklangconfig_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_3fb19c355c5fe834` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_5c5fe834` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_admin_log`; @@ -931,8 +1031,8 @@ CREATE TABLE `django_admin_log` ( PRIMARY KEY (`id`), KEY `django_admin_log_fbfc09f1` (`user_id`), KEY `django_admin_log_e4470c6e` (`content_type_id`), - CONSTRAINT `content_type_id_refs_id_288599e6` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), - CONSTRAINT `user_id_refs_id_c8665aa` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_c8665aa` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `content_type_id_refs_id_288599e6` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_comment_client_permission`; @@ -954,8 +1054,8 @@ CREATE TABLE `django_comment_client_permission_roles` ( UNIQUE KEY `django_comment_client_permi_permission_id_7a766da089425952_uniq` (`permission_id`,`role_id`), KEY `django_comment_client_permission_roles_1e014c8f` (`permission_id`), KEY `django_comment_client_permission_roles_bf07f040` (`role_id`), - CONSTRAINT `role_id_refs_id_6ccffe4ec1b5c854` FOREIGN KEY (`role_id`) REFERENCES `django_comment_client_role` (`id`), - CONSTRAINT `permission_id_refs_name_63b5ab82b6302d27` FOREIGN KEY (`permission_id`) REFERENCES `django_comment_client_permission` (`name`) + CONSTRAINT `role_id_refs_id_c1b5c854` FOREIGN KEY (`role_id`) REFERENCES `django_comment_client_role` (`id`), + CONSTRAINT `permission_id_refs_name_b6302d27` FOREIGN KEY (`permission_id`) REFERENCES `django_comment_client_permission` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_comment_client_role`; @@ -980,8 +1080,8 @@ CREATE TABLE `django_comment_client_role_users` ( UNIQUE KEY `django_comment_client_role_users_role_id_78e483f531943614_uniq` (`role_id`,`user_id`), KEY `django_comment_client_role_users_bf07f040` (`role_id`), KEY `django_comment_client_role_users_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_60d02531441b79e7` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `role_id_refs_id_282d08d1ab82c838` FOREIGN KEY (`role_id`) REFERENCES `django_comment_client_role` (`id`) + CONSTRAINT `user_id_refs_id_441b79e7` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `role_id_refs_id_ab82c838` FOREIGN KEY (`role_id`) REFERENCES `django_comment_client_role` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_content_type`; @@ -994,7 +1094,7 @@ CREATE TABLE `django_content_type` ( `model` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `app_label` (`app_label`,`model`) -) ENGINE=InnoDB AUTO_INCREMENT=149 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=166 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_openid_auth_association`; /*!40101 SET @saved_cs_client = @@character_set_client */; @@ -1166,7 +1266,7 @@ CREATE TABLE `edxval_coursevideo` ( PRIMARY KEY (`id`), UNIQUE KEY `edxval_coursevideo_course_id_42cecee05cff2d8c_uniq` (`course_id`,`video_id`), KEY `edxval_coursevideo_fa26288c` (`video_id`), - CONSTRAINT `video_id_refs_id_586418447520c050` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`) + CONSTRAINT `video_id_refs_id_7520c050` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `edxval_encodedvideo`; @@ -1184,8 +1284,8 @@ CREATE TABLE `edxval_encodedvideo` ( PRIMARY KEY (`id`), KEY `edxval_encodedvideo_141c6eec` (`profile_id`), KEY `edxval_encodedvideo_fa26288c` (`video_id`), - CONSTRAINT `video_id_refs_id_7813fe29176ce1a0` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`), - CONSTRAINT `profile_id_refs_id_3fd6b88b0692d754` FOREIGN KEY (`profile_id`) REFERENCES `edxval_profile` (`id`) + CONSTRAINT `video_id_refs_id_176ce1a0` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`), + CONSTRAINT `profile_id_refs_id_692d754` FOREIGN KEY (`profile_id`) REFERENCES `edxval_profile` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `edxval_profile`; @@ -1216,7 +1316,7 @@ CREATE TABLE `edxval_subtitle` ( KEY `edxval_subtitle_fa26288c` (`video_id`), KEY `edxval_subtitle_306df28f` (`fmt`), KEY `edxval_subtitle_8a7ac9ab` (`language`), - CONSTRAINT `video_id_refs_id_73eaa5f6788bc3d3` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`) + CONSTRAINT `video_id_refs_id_788bc3d3` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `edxval_video`; @@ -1235,6 +1335,45 @@ CREATE TABLE `edxval_video` ( KEY `edxval_video_c9ad71dd` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `embargo_country`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `embargo_country` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `country` varchar(2) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `country` (`country`) +) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `embargo_countryaccessrule`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `embargo_countryaccessrule` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `rule_type` varchar(255) NOT NULL, + `restricted_course_id` int(11) NOT NULL, + `country_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `embargo_countryacces_restricted_course_id_6f340c36c633cb0a_uniq` (`restricted_course_id`,`country_id`), + KEY `embargo_countryaccessrule_3cd064f4` (`restricted_course_id`), + KEY `embargo_countryaccessrule_534dd89` (`country_id`), + CONSTRAINT `country_id_refs_id_f679fa73` FOREIGN KEY (`country_id`) REFERENCES `embargo_country` (`id`), + CONSTRAINT `restricted_course_id_refs_id_c792331c` FOREIGN KEY (`restricted_course_id`) REFERENCES `embargo_restrictedcourse` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `embargo_courseaccessrulehistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `embargo_courseaccessrulehistory` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `timestamp` datetime NOT NULL, + `course_key` varchar(255) NOT NULL, + `snapshot` longtext, + PRIMARY KEY (`id`), + KEY `embargo_courseaccessrulehistory_67f1b7ce` (`timestamp`), + KEY `embargo_courseaccessrulehistory_b4b47e7a` (`course_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `embargo_embargoedcourse`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -1257,7 +1396,7 @@ CREATE TABLE `embargo_embargoedstate` ( `embargoed_countries` longtext NOT NULL, PRIMARY KEY (`id`), KEY `embargo_embargoedstate_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_3c8b83add0205d39` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_d0205d39` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `embargo_ipfilter`; @@ -1272,7 +1411,19 @@ CREATE TABLE `embargo_ipfilter` ( `blacklist` longtext NOT NULL, PRIMARY KEY (`id`), KEY `embargo_ipfilter_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_3babbf0a22c1f5d3` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_22c1f5d3` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `embargo_restrictedcourse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `embargo_restrictedcourse` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `course_key` varchar(255) NOT NULL, + `enroll_msg_key` varchar(255) NOT NULL, + `access_msg_key` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `course_key` (`course_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `external_auth_externalauthmap`; @@ -1296,7 +1447,7 @@ CREATE TABLE `external_auth_externalauthmap` ( KEY `external_auth_externalauthmap_a570024c` (`external_domain`), KEY `external_auth_externalauthmap_a142061d` (`external_email`), KEY `external_auth_externalauthmap_c1a016f` (`external_name`), - CONSTRAINT `user_id_refs_id_39c4e675f8635f67` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_f8635f67` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `foldit_puzzlecomplete`; @@ -1316,7 +1467,7 @@ CREATE TABLE `foldit_puzzlecomplete` ( KEY `foldit_puzzlecomplete_8027477e` (`unique_user_id`), KEY `foldit_puzzlecomplete_4798a2b8` (`puzzle_set`), KEY `foldit_puzzlecomplete_59f06bcd` (`puzzle_subset`), - CONSTRAINT `user_id_refs_id_23bb09ab37e9437b` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_37e9437b` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `foldit_score`; @@ -1336,7 +1487,7 @@ CREATE TABLE `foldit_score` ( KEY `foldit_score_8027477e` (`unique_user_id`), KEY `foldit_score_3624c060` (`best_score`), KEY `foldit_score_b4627792` (`current_score`), - CONSTRAINT `user_id_refs_id_44efb56f4c07957f` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_4c07957f` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `instructor_task_instructortask`; @@ -1362,7 +1513,7 @@ CREATE TABLE `instructor_task_instructortask` ( KEY `instructor_task_instructortask_c00fe455` (`task_id`), KEY `instructor_task_instructortask_731e67a4` (`task_state`), KEY `instructor_task_instructortask_b8ca8b9f` (`requester_id`), - CONSTRAINT `requester_id_refs_id_4d6b69c6a97278e6` FOREIGN KEY (`requester_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `requester_id_refs_id_a97278e6` FOREIGN KEY (`requester_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `licenses_coursesoftware`; @@ -1388,8 +1539,8 @@ CREATE TABLE `licenses_userlicense` ( PRIMARY KEY (`id`), KEY `licenses_userlicense_4c6ed3c1` (`software_id`), KEY `licenses_userlicense_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_26345de02f3a1cb3` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `software_id_refs_id_78738fcdf9e27be8` FOREIGN KEY (`software_id`) REFERENCES `licenses_coursesoftware` (`id`) + CONSTRAINT `user_id_refs_id_2f3a1cb3` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `software_id_refs_id_f9e27be8` FOREIGN KEY (`software_id`) REFERENCES `licenses_coursesoftware` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `lms_xblock_xblockasidesconfig`; @@ -1403,43 +1554,7 @@ CREATE TABLE `lms_xblock_xblockasidesconfig` ( `disabled_blocks` longtext NOT NULL, PRIMARY KEY (`id`), KEY `lms_xblock_xblockasidesconfig_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_40c91094552627bc` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -DROP TABLE IF EXISTS `mentoring_answer`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mentoring_answer` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) NOT NULL, - `student_id` varchar(32) NOT NULL, - `student_input` longtext NOT NULL, - `created_on` datetime NOT NULL, - `modified_on` datetime NOT NULL, - `course_id` varchar(50) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `mentoring_answer_course_id_7f581fd43d0d1f77_uniq` (`course_id`,`student_id`,`name`), - KEY `mentoring_answer_52094d6e` (`name`), - KEY `mentoring_answer_42ff452e` (`student_id`), - KEY `mentoring_answer_ff48d8e5` (`course_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -DROP TABLE IF EXISTS `mentoring_lightchild`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mentoring_lightchild` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) NOT NULL, - `student_id` varchar(32) NOT NULL, - `course_id` varchar(50) NOT NULL, - `student_data` longtext NOT NULL, - `created_on` datetime NOT NULL, - `modified_on` datetime NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `mentoring_lightchild_student_id_2d3f2d211f8b8d41_uniq` (`student_id`,`course_id`,`name`), - KEY `mentoring_lightchild_52094d6e` (`name`), - KEY `mentoring_lightchild_42ff452e` (`student_id`), - KEY `mentoring_lightchild_ff48d8e5` (`course_id`) + CONSTRAINT `changed_by_id_refs_id_552627bc` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `milestones_coursecontentmilestone`; @@ -1460,8 +1575,8 @@ CREATE TABLE `milestones_coursecontentmilestone` ( KEY `milestones_coursecontentmilestone_cc8ff3c` (`content_id`), KEY `milestones_coursecontentmilestone_9cfa291f` (`milestone_id`), KEY `milestones_coursecontentmilestone_595c57ff` (`milestone_relationship_type_id`), - CONSTRAINT `milestone_relationship_type_id_refs_id_57f7e3570d7ab186` FOREIGN KEY (`milestone_relationship_type_id`) REFERENCES `milestones_milestonerelationshiptype` (`id`), - CONSTRAINT `milestone_id_refs_id_5c1b1e8cd7fabedc` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) + CONSTRAINT `milestone_relationship_type_id_refs_id_d7ab186` FOREIGN KEY (`milestone_relationship_type_id`) REFERENCES `milestones_milestonerelationshiptype` (`id`), + CONSTRAINT `milestone_id_refs_id_d7fabedc` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `milestones_coursemilestone`; @@ -1480,8 +1595,8 @@ CREATE TABLE `milestones_coursemilestone` ( KEY `milestones_coursemilestone_ff48d8e5` (`course_id`), KEY `milestones_coursemilestone_9cfa291f` (`milestone_id`), KEY `milestones_coursemilestone_595c57ff` (`milestone_relationship_type_id`), - CONSTRAINT `milestone_relationship_type_id_refs_id_2c1c593f874a03b6` FOREIGN KEY (`milestone_relationship_type_id`) REFERENCES `milestones_milestonerelationshiptype` (`id`), - CONSTRAINT `milestone_id_refs_id_540108c1cd764354` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) + CONSTRAINT `milestone_relationship_type_id_refs_id_874a03b6` FOREIGN KEY (`milestone_relationship_type_id`) REFERENCES `milestones_milestonerelationshiptype` (`id`), + CONSTRAINT `milestone_id_refs_id_cd764354` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `milestones_milestone`; @@ -1532,7 +1647,7 @@ CREATE TABLE `milestones_usermilestone` ( UNIQUE KEY `milestones_usermilestone_user_id_10206aa452468351_uniq` (`user_id`,`milestone_id`), KEY `milestones_usermilestone_fbfc09f1` (`user_id`), KEY `milestones_usermilestone_9cfa291f` (`milestone_id`), - CONSTRAINT `milestone_id_refs_id_1a7fbf83af7fa460` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) + CONSTRAINT `milestone_id_refs_id_af7fa460` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `notes_note`; @@ -1558,7 +1673,7 @@ CREATE TABLE `notes_note` ( KEY `notes_note_a9794fa` (`uri`), KEY `notes_note_3216ff68` (`created`), KEY `notes_note_8aac229` (`updated`), - CONSTRAINT `user_id_refs_id_380a4734360715cc` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_360715cc` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `notifications_articlesubscription`; @@ -1569,8 +1684,8 @@ CREATE TABLE `notifications_articlesubscription` ( `articleplugin_ptr_id` int(11) NOT NULL, PRIMARY KEY (`articleplugin_ptr_id`), UNIQUE KEY `subscription_ptr_id` (`subscription_ptr_id`), - CONSTRAINT `articleplugin_ptr_id_refs_id_1bd08ac071ed584a` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`), - CONSTRAINT `subscription_ptr_id_refs_id_18f7bae575c0b518` FOREIGN KEY (`subscription_ptr_id`) REFERENCES `notify_subscription` (`id`) + CONSTRAINT `articleplugin_ptr_id_refs_id_71ed584a` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`), + CONSTRAINT `subscription_ptr_id_refs_id_75c0b518` FOREIGN KEY (`subscription_ptr_id`) REFERENCES `notify_subscription` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `notify_notification`; @@ -1586,7 +1701,7 @@ CREATE TABLE `notify_notification` ( `created` datetime NOT NULL, PRIMARY KEY (`id`), KEY `notify_notification_104f5ac1` (`subscription_id`), - CONSTRAINT `subscription_id_refs_id_7a99ebc5baf93d4f` FOREIGN KEY (`subscription_id`) REFERENCES `notify_subscription` (`id`) + CONSTRAINT `subscription_id_refs_id_baf93d4f` FOREIGN KEY (`subscription_id`) REFERENCES `notify_subscription` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `notify_notificationtype`; @@ -1598,7 +1713,7 @@ CREATE TABLE `notify_notificationtype` ( `content_type_id` int(11) DEFAULT NULL, PRIMARY KEY (`key`), KEY `notify_notificationtype_e4470c6e` (`content_type_id`), - CONSTRAINT `content_type_id_refs_id_4919de6f2478378` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) + CONSTRAINT `content_type_id_refs_id_f2478378` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `notify_settings`; @@ -1610,7 +1725,7 @@ CREATE TABLE `notify_settings` ( `interval` smallint(6) NOT NULL, PRIMARY KEY (`id`), KEY `notify_settings_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_2e6a6a1d9a2911e6` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_9a2911e6` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `notify_subscription`; @@ -1625,8 +1740,8 @@ CREATE TABLE `notify_subscription` ( PRIMARY KEY (`id`), KEY `notify_subscription_83326d99` (`settings_id`), KEY `notify_subscription_9955f091` (`notification_type_id`), - CONSTRAINT `notification_type_id_refs_key_25426c9bbaa41a19` FOREIGN KEY (`notification_type_id`) REFERENCES `notify_notificationtype` (`key`), - CONSTRAINT `settings_id_refs_id_2b8d6d653b7225d5` FOREIGN KEY (`settings_id`) REFERENCES `notify_settings` (`id`) + CONSTRAINT `notification_type_id_refs_key_baa41a19` FOREIGN KEY (`notification_type_id`) REFERENCES `notify_notificationtype` (`key`), + CONSTRAINT `settings_id_refs_id_3b7225d5` FOREIGN KEY (`settings_id`) REFERENCES `notify_settings` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth2_accesstoken`; @@ -1643,8 +1758,8 @@ CREATE TABLE `oauth2_accesstoken` ( KEY `oauth2_accesstoken_fbfc09f1` (`user_id`), KEY `oauth2_accesstoken_4a4e8ffb` (`client_id`), KEY `oauth2_accesstoken_bfac9f99` (`token`), - CONSTRAINT `client_id_refs_id_12f62e33e566ebcc` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), - CONSTRAINT `user_id_refs_id_55b335adc740ddb9` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `client_id_refs_id_e566ebcc` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), + CONSTRAINT `user_id_refs_id_c740ddb9` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth2_client`; @@ -1661,7 +1776,7 @@ CREATE TABLE `oauth2_client` ( `name` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `oauth2_client_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_61238461c2e3e9a0` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_c2e3e9a0` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth2_grant`; @@ -1678,8 +1793,8 @@ CREATE TABLE `oauth2_grant` ( PRIMARY KEY (`id`), KEY `oauth2_grant_fbfc09f1` (`user_id`), KEY `oauth2_grant_4a4e8ffb` (`client_id`), - CONSTRAINT `client_id_refs_id_728e499fb2f66ded` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), - CONSTRAINT `user_id_refs_id_75389f4e37f50fe6` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `client_id_refs_id_b2f66ded` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), + CONSTRAINT `user_id_refs_id_37f50fe6` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth2_provider_trustedclient`; @@ -1690,7 +1805,7 @@ CREATE TABLE `oauth2_provider_trustedclient` ( `client_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `oauth2_provider_trustedclient_4a4e8ffb` (`client_id`), - CONSTRAINT `client_id_refs_id_12df66c5f6dfcacc` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`) + CONSTRAINT `client_id_refs_id_f6dfcacc` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth2_refreshtoken`; @@ -1707,9 +1822,9 @@ CREATE TABLE `oauth2_refreshtoken` ( UNIQUE KEY `access_token_id` (`access_token_id`), KEY `oauth2_refreshtoken_fbfc09f1` (`user_id`), KEY `oauth2_refreshtoken_4a4e8ffb` (`client_id`), - CONSTRAINT `client_id_refs_id_40eff42b798730c8` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), - CONSTRAINT `access_token_id_refs_id_18e29982df7961b9` FOREIGN KEY (`access_token_id`) REFERENCES `oauth2_accesstoken` (`id`), - CONSTRAINT `user_id_refs_id_7d0e6f3678216905` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `client_id_refs_id_798730c8` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), + CONSTRAINT `access_token_id_refs_id_df7961b9` FOREIGN KEY (`access_token_id`) REFERENCES `oauth2_accesstoken` (`id`), + CONSTRAINT `user_id_refs_id_78216905` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `psychometrics_psychometricdata`; @@ -1749,8 +1864,8 @@ CREATE TABLE `shoppingcart_certificateitem` ( KEY `shoppingcart_certificateitem_ff48d8e5` (`course_id`), KEY `shoppingcart_certificateitem_9e513f0b` (`course_enrollment_id`), KEY `shoppingcart_certificateitem_4160619e` (`mode`), - CONSTRAINT `course_enrollment_id_refs_id_259181e58048c435` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), - CONSTRAINT `orderitem_ptr_id_refs_id_4d598262d3ebc4d0` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) + CONSTRAINT `course_enrollment_id_refs_id_8048c435` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), + CONSTRAINT `orderitem_ptr_id_refs_id_d3ebc4d0` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_coupon`; @@ -1769,7 +1884,7 @@ CREATE TABLE `shoppingcart_coupon` ( PRIMARY KEY (`id`), KEY `shoppingcart_coupon_65da3d2c` (`code`), KEY `shoppingcart_coupon_b5de30be` (`created_by_id`), - CONSTRAINT `created_by_id_refs_id_70b740220259aadc` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `created_by_id_refs_id_259aadc` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_couponredemption`; @@ -1784,9 +1899,9 @@ CREATE TABLE `shoppingcart_couponredemption` ( KEY `shoppingcart_couponredemption_8337030b` (`order_id`), KEY `shoppingcart_couponredemption_fbfc09f1` (`user_id`), KEY `shoppingcart_couponredemption_c29b2e60` (`coupon_id`), - CONSTRAINT `coupon_id_refs_id_1c5f086bc11a8022` FOREIGN KEY (`coupon_id`) REFERENCES `shoppingcart_coupon` (`id`), - CONSTRAINT `order_id_refs_id_13bbfbf0f5db1967` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `user_id_refs_id_c543b145e9b8167` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `coupon_id_refs_id_c11a8022` FOREIGN KEY (`coupon_id`) REFERENCES `shoppingcart_coupon` (`id`), + CONSTRAINT `order_id_refs_id_f5db1967` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), + CONSTRAINT `user_id_refs_id_5e9b8167` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_courseregcodeitem`; @@ -1799,7 +1914,7 @@ CREATE TABLE `shoppingcart_courseregcodeitem` ( PRIMARY KEY (`orderitem_ptr_id`), KEY `shoppingcart_courseregcodeitem_ff48d8e5` (`course_id`), KEY `shoppingcart_courseregcodeitem_4160619e` (`mode`), - CONSTRAINT `orderitem_ptr_id_refs_id_2ea4d9d5a466f07f` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) + CONSTRAINT `orderitem_ptr_id_refs_id_a466f07f` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_courseregcodeitemannotation`; @@ -1825,6 +1940,7 @@ CREATE TABLE `shoppingcart_courseregistrationcode` ( `invoice_id` int(11), `order_id` int(11), `mode_slug` varchar(100), + `invoice_item_id` int(11), PRIMARY KEY (`id`), UNIQUE KEY `shoppingcart_courseregistrationcode_code_6614bad3cae62199_uniq` (`code`), KEY `shoppingcart_courseregistrationcode_65da3d2c` (`code`), @@ -1832,9 +1948,22 @@ CREATE TABLE `shoppingcart_courseregistrationcode` ( KEY `shoppingcart_courseregistrationcode_b5de30be` (`created_by_id`), KEY `shoppingcart_courseregistrationcode_59f72b12` (`invoice_id`), KEY `shoppingcart_courseregistrationcode_8337030b` (`order_id`), - CONSTRAINT `created_by_id_refs_id_7eaaed0838397037` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `invoice_id_refs_id_6e8c54da995f0ae8` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`), - CONSTRAINT `order_id_refs_id_6378d414be36d837` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`) + KEY `shoppingcart_courseregistrationcode_80766641` (`invoice_item_id`), + CONSTRAINT `invoice_item_id_refs_invoiceitem_ptr_id_8a5558e6` FOREIGN KEY (`invoice_item_id`) REFERENCES `shoppingcart_courseregistrationcodeinvoiceitem` (`invoiceitem_ptr_id`), + CONSTRAINT `created_by_id_refs_id_38397037` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `invoice_id_refs_id_995f0ae8` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`), + CONSTRAINT `order_id_refs_id_be36d837` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shoppingcart_courseregistrationcodeinvoiceitem`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `shoppingcart_courseregistrationcodeinvoiceitem` ( + `invoiceitem_ptr_id` int(11) NOT NULL, + `course_id` varchar(128) NOT NULL, + PRIMARY KEY (`invoiceitem_ptr_id`), + KEY `shoppingcart_courseregistrationcodeinvoiceitem_ff48d8e5` (`course_id`), + CONSTRAINT `invoiceitem_ptr_id_refs_id_74a11b46` FOREIGN KEY (`invoiceitem_ptr_id`) REFERENCES `shoppingcart_invoiceitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_donation`; @@ -1846,7 +1975,7 @@ CREATE TABLE `shoppingcart_donation` ( `course_id` varchar(255) NOT NULL, PRIMARY KEY (`orderitem_ptr_id`), KEY `shoppingcart_donation_ff48d8e5` (`course_id`), - CONSTRAINT `orderitem_ptr_id_refs_id_28d47c0cb7138a4b` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) + CONSTRAINT `orderitem_ptr_id_refs_id_b7138a4b` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_donationconfiguration`; @@ -1859,7 +1988,7 @@ CREATE TABLE `shoppingcart_donationconfiguration` ( `enabled` tinyint(1) NOT NULL, PRIMARY KEY (`id`), KEY `shoppingcart_donationconfiguration_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_28af5c44b4a26b7f` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_b4a26b7f` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_invoice`; @@ -1884,11 +2013,66 @@ CREATE TABLE `shoppingcart_invoice` ( `customer_reference_number` varchar(63), `company_contact_name` varchar(255) NOT NULL, `company_contact_email` varchar(255) NOT NULL, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, PRIMARY KEY (`id`), KEY `shoppingcart_invoice_ca9021a2` (`company_name`), KEY `shoppingcart_invoice_ff48d8e5` (`course_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shoppingcart_invoicehistory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `shoppingcart_invoicehistory` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `timestamp` datetime NOT NULL, + `invoice_id` int(11) NOT NULL, + `snapshot` longtext NOT NULL, + PRIMARY KEY (`id`), + KEY `shoppingcart_invoicehistory_67f1b7ce` (`timestamp`), + KEY `shoppingcart_invoicehistory_59f72b12` (`invoice_id`), + CONSTRAINT `invoice_id_refs_id_239c2b7c` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shoppingcart_invoiceitem`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `shoppingcart_invoiceitem` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, + `invoice_id` int(11) NOT NULL, + `qty` int(11) NOT NULL, + `unit_price` decimal(30,2) NOT NULL, + `currency` varchar(8) NOT NULL, + PRIMARY KEY (`id`), + KEY `shoppingcart_invoiceitem_59f72b12` (`invoice_id`), + CONSTRAINT `invoice_id_refs_id_5c894802` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shoppingcart_invoicetransaction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `shoppingcart_invoicetransaction` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` datetime NOT NULL, + `modified` datetime NOT NULL, + `invoice_id` int(11) NOT NULL, + `amount` decimal(30,2) NOT NULL, + `currency` varchar(8) NOT NULL, + `comments` longtext, + `status` varchar(32) NOT NULL, + `created_by_id` int(11) NOT NULL, + `last_modified_by_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `shoppingcart_invoicetransaction_59f72b12` (`invoice_id`), + KEY `shoppingcart_invoicetransaction_b5de30be` (`created_by_id`), + KEY `shoppingcart_invoicetransaction_bcd6c6d2` (`last_modified_by_id`), + CONSTRAINT `last_modified_by_id_refs_id_7259d0bb` FOREIGN KEY (`last_modified_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `created_by_id_refs_id_7259d0bb` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `invoice_id_refs_id_8e5b62ec` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_order`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -1919,7 +2103,7 @@ CREATE TABLE `shoppingcart_order` ( `order_type` varchar(32) NOT NULL, PRIMARY KEY (`id`), KEY `shoppingcart_order_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_a4b0342e1195673` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_e1195673` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_orderitem`; @@ -1947,8 +2131,8 @@ CREATE TABLE `shoppingcart_orderitem` ( KEY `shoppingcart_orderitem_c9ad71dd` (`status`), KEY `shoppingcart_orderitem_8457f26a` (`fulfilled_time`), KEY `shoppingcart_orderitem_416112c1` (`refund_requested_time`), - CONSTRAINT `order_id_refs_id_4fad6e867c77b3f0` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `user_id_refs_id_608b9042d92ae410` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `order_id_refs_id_7c77b3f0` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), + CONSTRAINT `user_id_refs_id_d92ae410` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_paidcourseregistration`; @@ -1963,8 +2147,8 @@ CREATE TABLE `shoppingcart_paidcourseregistration` ( KEY `shoppingcart_paidcourseregistration_ff48d8e5` (`course_id`), KEY `shoppingcart_paidcourseregistration_4160619e` (`mode`), KEY `shoppingcart_paidcourseregistration_9e513f0b` (`course_enrollment_id`), - CONSTRAINT `course_enrollment_id_refs_id_50077099dc061be6` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), - CONSTRAINT `orderitem_ptr_id_refs_id_c5c6141d8709d99` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) + CONSTRAINT `course_enrollment_id_refs_id_dc061be6` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), + CONSTRAINT `orderitem_ptr_id_refs_id_d8709d99` FOREIGN KEY (`orderitem_ptr_id`) REFERENCES `shoppingcart_orderitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_paidcourseregistrationannotation`; @@ -1993,10 +2177,10 @@ CREATE TABLE `shoppingcart_registrationcoderedemption` ( KEY `shoppingcart_registrationcoderedemption_d25b37dc` (`registration_code_id`), KEY `shoppingcart_registrationcoderedemption_e151467a` (`redeemed_by_id`), KEY `shoppingcart_registrationcoderedemption_9e513f0b` (`course_enrollment_id`), - CONSTRAINT `course_enrollment_id_refs_id_6d4e7d1dc9486127` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), - CONSTRAINT `order_id_refs_id_3e4c388753a8a5c9` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `redeemed_by_id_refs_id_2c29fd0d4e320dc9` FOREIGN KEY (`redeemed_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `registration_code_id_refs_id_2b7812ae4d01e47b` FOREIGN KEY (`registration_code_id`) REFERENCES `shoppingcart_courseregistrationcode` (`id`) + CONSTRAINT `course_enrollment_id_refs_id_c9486127` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), + CONSTRAINT `order_id_refs_id_53a8a5c9` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), + CONSTRAINT `redeemed_by_id_refs_id_4e320dc9` FOREIGN KEY (`redeemed_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `registration_code_id_refs_id_4d01e47b` FOREIGN KEY (`registration_code_id`) REFERENCES `shoppingcart_courseregistrationcode` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `social_auth_association`; @@ -2061,7 +2245,7 @@ CREATE TABLE `south_migrationhistory` ( `migration` varchar(255) NOT NULL, `applied` datetime NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=222 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `splash_splashconfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; @@ -2078,7 +2262,7 @@ CREATE TABLE `splash_splashconfig` ( `unaffected_url_paths` longtext NOT NULL, PRIMARY KEY (`id`), KEY `splash_splashconfig_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_6024c0b79125b21c` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_9125b21c` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_anonymoususerid`; @@ -2093,7 +2277,7 @@ CREATE TABLE `student_anonymoususerid` ( UNIQUE KEY `anonymous_user_id` (`anonymous_user_id`), KEY `student_anonymoususerid_fbfc09f1` (`user_id`), KEY `student_anonymoususerid_ff48d8e5` (`course_id`), - CONSTRAINT `user_id_refs_id_23effb36c38f7a2a` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_c38f7a2a` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_courseaccessrole`; @@ -2111,7 +2295,7 @@ CREATE TABLE `student_courseaccessrole` ( KEY `student_courseaccessrole_4f5f82e2` (`org`), KEY `student_courseaccessrole_ff48d8e5` (`course_id`), KEY `student_courseaccessrole_e0b082a1` (`role`), - CONSTRAINT `user_id_refs_id_7460a3f36ac23885` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_6ac23885` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_courseenrollment`; @@ -2129,7 +2313,7 @@ CREATE TABLE `student_courseenrollment` ( KEY `student_courseenrollment_fbfc09f1` (`user_id`), KEY `student_courseenrollment_ff48d8e5` (`course_id`), KEY `student_courseenrollment_3216ff68` (`created`), - CONSTRAINT `user_id_refs_id_45948fcded37bc9d` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_ed37bc9d` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_courseenrollmentallowed`; @@ -2159,7 +2343,42 @@ CREATE TABLE `student_dashboardconfiguration` ( `recent_enrollment_time_delta` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `student_dashboardconfiguration_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_31b94d88eec78c18` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_eec78c18` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `student_entranceexamconfiguration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `student_entranceexamconfiguration` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `course_id` varchar(255) NOT NULL, + `created` datetime DEFAULT NULL, + `updated` datetime NOT NULL, + `skip_entrance_exam` tinyint(1) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `student_entranceexamconfiguration_user_id_714c2ef6a88504f0_uniq` (`user_id`,`course_id`), + KEY `student_entranceexamconfiguration_fbfc09f1` (`user_id`), + KEY `student_entranceexamconfiguration_ff48d8e5` (`course_id`), + KEY `student_entranceexamconfiguration_3216ff68` (`created`), + KEY `student_entranceexamconfiguration_8aac229` (`updated`), + CONSTRAINT `user_id_refs_id_9c93dc16` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `student_linkedinaddtoprofileconfiguration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `student_linkedinaddtoprofileconfiguration` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + `enabled` tinyint(1) NOT NULL, + `dashboard_tracking_code` longtext NOT NULL, + `company_identifier` longtext NOT NULL, + `trk_partner_name` varchar(10) NOT NULL, + PRIMARY KEY (`id`), + KEY `student_linkedinaddtoprofileconfiguration_16905482` (`changed_by_id`), + CONSTRAINT `changed_by_id_refs_id_9469646a` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_loginfailures`; @@ -2172,7 +2391,7 @@ CREATE TABLE `student_loginfailures` ( `lockout_until` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `student_loginfailures_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_50dcb1c1e6a71045` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_e6a71045` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_passwordhistory`; @@ -2185,7 +2404,7 @@ CREATE TABLE `student_passwordhistory` ( `time_set` datetime NOT NULL, PRIMARY KEY (`id`), KEY `student_passwordhistory_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_6110e7eaed0987da` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_ed0987da` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_pendingemailchange`; @@ -2200,7 +2419,7 @@ CREATE TABLE `student_pendingemailchange` ( UNIQUE KEY `user_id` (`user_id`), UNIQUE KEY `activation_key` (`activation_key`), KEY `student_pendingemailchange_856c86d7` (`new_email`), - CONSTRAINT `user_id_refs_id_24fa3bcda525fa67` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_a525fa67` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_pendingnamechange`; @@ -2213,7 +2432,7 @@ CREATE TABLE `student_pendingnamechange` ( `rationale` varchar(1024) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `user_id` (`user_id`), - CONSTRAINT `user_id_refs_id_24e959cdd9359b27` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_d9359b27` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_usersignupsource`; @@ -2226,7 +2445,7 @@ CREATE TABLE `student_usersignupsource` ( PRIMARY KEY (`id`), KEY `student_usersignupsource_e00a881a` (`site`), KEY `student_usersignupsource_fbfc09f1` (`user_id`), - CONSTRAINT `user_id_refs_id_4ae6e32838a4bd6e` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_38a4bd6e` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_userstanding`; @@ -2241,8 +2460,8 @@ CREATE TABLE `student_userstanding` ( PRIMARY KEY (`id`), UNIQUE KEY `user_id` (`user_id`), KEY `student_userstanding_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_5ec33b2b0450a33b` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `user_id_refs_id_5ec33b2b0450a33b` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_450a33b` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `user_id_refs_id_450a33b` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `student_usertestgroup`; @@ -2267,8 +2486,8 @@ CREATE TABLE `student_usertestgroup_users` ( UNIQUE KEY `student_usertestgroup_us_usertestgroup_id_63c588e0372991b0_uniq` (`usertestgroup_id`,`user_id`), KEY `student_usertestgroup_users_44f27cdf` (`usertestgroup_id`), KEY `student_usertestgroup_users_fbfc09f1` (`user_id`), - CONSTRAINT `usertestgroup_id_refs_id_78e186d36d724f9e` FOREIGN KEY (`usertestgroup_id`) REFERENCES `student_usertestgroup` (`id`), - CONSTRAINT `user_id_refs_id_412b14bf8947584c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `usertestgroup_id_refs_id_6d724f9e` FOREIGN KEY (`usertestgroup_id`) REFERENCES `student_usertestgroup` (`id`), + CONSTRAINT `user_id_refs_id_8947584c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `submissions_score`; @@ -2286,8 +2505,8 @@ CREATE TABLE `submissions_score` ( KEY `submissions_score_fa84001` (`student_item_id`), KEY `submissions_score_b3d6235a` (`submission_id`), KEY `submissions_score_3b1c9c31` (`created_at`), - CONSTRAINT `student_item_id_refs_id_33922a7f8cd97385` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`), - CONSTRAINT `submission_id_refs_id_3b63d5ec9e39cf2e` FOREIGN KEY (`submission_id`) REFERENCES `submissions_submission` (`id`) + CONSTRAINT `student_item_id_refs_id_8cd97385` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`), + CONSTRAINT `submission_id_refs_id_9e39cf2e` FOREIGN KEY (`submission_id`) REFERENCES `submissions_submission` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `submissions_scoresummary`; @@ -2302,9 +2521,9 @@ CREATE TABLE `submissions_scoresummary` ( UNIQUE KEY `student_item_id` (`student_item_id`), KEY `submissions_scoresummary_d65f9365` (`highest_id`), KEY `submissions_scoresummary_1efb24d9` (`latest_id`), - CONSTRAINT `latest_id_refs_id_37a2bc281bdc0a18` FOREIGN KEY (`latest_id`) REFERENCES `submissions_score` (`id`), - CONSTRAINT `highest_id_refs_id_37a2bc281bdc0a18` FOREIGN KEY (`highest_id`) REFERENCES `submissions_score` (`id`), - CONSTRAINT `student_item_id_refs_id_6183d6a8bd51e768` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`) + CONSTRAINT `latest_id_refs_id_1bdc0a18` FOREIGN KEY (`latest_id`) REFERENCES `submissions_score` (`id`), + CONSTRAINT `highest_id_refs_id_1bdc0a18` FOREIGN KEY (`highest_id`) REFERENCES `submissions_score` (`id`), + CONSTRAINT `student_item_id_refs_id_bd51e768` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `submissions_studentitem`; @@ -2339,7 +2558,7 @@ CREATE TABLE `submissions_submission` ( KEY `submissions_submission_fa84001` (`student_item_id`), KEY `submissions_submission_4452d192` (`submitted_at`), KEY `submissions_submission_3b1c9c31` (`created_at`), - CONSTRAINT `student_item_id_refs_id_1df1d83e00b5cccc` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`) + CONSTRAINT `student_item_id_refs_id_b5cccc` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `survey_surveyanswer`; @@ -2357,8 +2576,8 @@ CREATE TABLE `survey_surveyanswer` ( KEY `survey_surveyanswer_fbfc09f1` (`user_id`), KEY `survey_surveyanswer_1d0aabf2` (`form_id`), KEY `survey_surveyanswer_7e1499` (`field_name`), - CONSTRAINT `form_id_refs_id_5a119e5cf4c79f29` FOREIGN KEY (`form_id`) REFERENCES `survey_surveyform` (`id`), - CONSTRAINT `user_id_refs_id_74dcdfa0e0ad4b5e` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `form_id_refs_id_f4c79f29` FOREIGN KEY (`form_id`) REFERENCES `survey_surveyform` (`id`), + CONSTRAINT `user_id_refs_id_e0ad4b5e` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `survey_surveyform`; @@ -2406,7 +2625,7 @@ CREATE TABLE `user_api_usercoursetag` ( KEY `user_api_usercoursetags_fbfc09f1` (`user_id`), KEY `user_api_usercoursetags_45544485` (`key`), KEY `user_api_usercoursetags_ff48d8e5` (`course_id`), - CONSTRAINT `user_id_refs_id_1d26ef6c47a9a367` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_47a9a367` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `user_api_userorgtag`; @@ -2426,7 +2645,7 @@ CREATE TABLE `user_api_userorgtag` ( KEY `user_api_userorgtag_fbfc09f1` (`user_id`), KEY `user_api_userorgtag_45544485` (`key`), KEY `user_api_userorgtag_4f5f82e2` (`org`), - CONSTRAINT `user_id_refs_id_4fedbcc0e54b717f` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_e54b717f` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `user_api_userpreference`; @@ -2441,9 +2660,22 @@ CREATE TABLE `user_api_userpreference` ( UNIQUE KEY `user_api_userpreference_user_id_4e4942d73f760072_uniq` (`user_id`,`key`), KEY `user_api_userpreference_fbfc09f1` (`user_id`), KEY `user_api_userpreference_45544485` (`key`), - CONSTRAINT `user_id_refs_id_2839c1f4f3473b9e` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `user_id_refs_id_f3473b9e` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `util_ratelimitconfiguration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `util_ratelimitconfiguration` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + `enabled` tinyint(1) NOT NULL, + PRIMARY KEY (`id`), + KEY `util_ratelimitconfiguration_16905482` (`changed_by_id`), + CONSTRAINT `changed_by_id_refs_id_76a26307` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `verify_student_softwaresecurephotoverification`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -2475,9 +2707,9 @@ CREATE TABLE `verify_student_softwaresecurephotoverification` ( KEY `verify_student_softwaresecurephotoverification_b2c165b4` (`reviewing_user_id`), KEY `verify_student_softwaresecurephotoverification_7343ffda` (`window_id`), KEY `verify_student_softwaresecurephotoverification_35eebcb6` (`display`), - CONSTRAINT `reviewing_user_id_refs_id_5b90d52ad6ea4207` FOREIGN KEY (`reviewing_user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `user_id_refs_id_5b90d52ad6ea4207` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `window_id_refs_id_30f70c30fce8f38a` FOREIGN KEY (`window_id`) REFERENCES `reverification_midcoursereverificationwindow` (`id`) + CONSTRAINT `reviewing_user_id_refs_id_d6ea4207` FOREIGN KEY (`reviewing_user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `user_id_refs_id_d6ea4207` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `window_id_refs_id_fce8f38a` FOREIGN KEY (`window_id`) REFERENCES `reverification_midcoursereverificationwindow` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_article`; @@ -2498,9 +2730,9 @@ CREATE TABLE `wiki_article` ( UNIQUE KEY `current_revision_id` (`current_revision_id`), KEY `wiki_article_5d52dd10` (`owner_id`), KEY `wiki_article_bda51c3c` (`group_id`), - CONSTRAINT `group_id_refs_id_10e2d3dd108bfee4` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), - CONSTRAINT `current_revision_id_refs_id_1d8d320ebafac304` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_articlerevision` (`id`), - CONSTRAINT `owner_id_refs_id_18073b359e14b583` FOREIGN KEY (`owner_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `group_id_refs_id_108bfee4` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), + CONSTRAINT `current_revision_id_refs_id_bafac304` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_articlerevision` (`id`), + CONSTRAINT `owner_id_refs_id_9e14b583` FOREIGN KEY (`owner_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_articleforobject`; @@ -2516,8 +2748,8 @@ CREATE TABLE `wiki_articleforobject` ( UNIQUE KEY `wiki_articleforobject_content_type_id_27c4cce189b3bcab_uniq` (`content_type_id`,`object_id`), KEY `wiki_articleforobject_30525a19` (`article_id`), KEY `wiki_articleforobject_e4470c6e` (`content_type_id`), - CONSTRAINT `content_type_id_refs_id_6b30567037828764` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), - CONSTRAINT `article_id_refs_id_1698e37305099436` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`) + CONSTRAINT `content_type_id_refs_id_37828764` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), + CONSTRAINT `article_id_refs_id_5099436` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_articleplugin`; @@ -2530,7 +2762,7 @@ CREATE TABLE `wiki_articleplugin` ( `created` datetime NOT NULL, PRIMARY KEY (`id`), KEY `wiki_articleplugin_30525a19` (`article_id`), - CONSTRAINT `article_id_refs_id_64fa106f92c648ca` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`) + CONSTRAINT `article_id_refs_id_92c648ca` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_articlerevision`; @@ -2556,9 +2788,9 @@ CREATE TABLE `wiki_articlerevision` ( KEY `wiki_articlerevision_fbfc09f1` (`user_id`), KEY `wiki_articlerevision_49bc38cc` (`previous_revision_id`), KEY `wiki_articlerevision_30525a19` (`article_id`), - CONSTRAINT `article_id_refs_id_5a3b45ce5c88570a` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), - CONSTRAINT `previous_revision_id_refs_id_7c6fe338a951e36b` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_articlerevision` (`id`), - CONSTRAINT `user_id_refs_id_672c6e4dfbb26714` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `article_id_refs_id_5c88570a` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), + CONSTRAINT `previous_revision_id_refs_id_a951e36b` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_articlerevision` (`id`), + CONSTRAINT `user_id_refs_id_fbb26714` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_articlesubscription`; @@ -2569,8 +2801,8 @@ CREATE TABLE `wiki_articlesubscription` ( `articleplugin_ptr_id` int(11) NOT NULL, PRIMARY KEY (`articleplugin_ptr_id`), UNIQUE KEY `subscription_ptr_id` (`subscription_ptr_id`), - CONSTRAINT `articleplugin_ptr_id_refs_id_7b2f9df4cbce00e3` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`), - CONSTRAINT `subscription_ptr_id_refs_id_4ec3f6dbae89f475` FOREIGN KEY (`subscription_ptr_id`) REFERENCES `notify_subscription` (`id`) + CONSTRAINT `articleplugin_ptr_id_refs_id_cbce00e3` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`), + CONSTRAINT `subscription_ptr_id_refs_id_ae89f475` FOREIGN KEY (`subscription_ptr_id`) REFERENCES `notify_subscription` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_attachment`; @@ -2582,8 +2814,8 @@ CREATE TABLE `wiki_attachment` ( `original_filename` varchar(256) DEFAULT NULL, PRIMARY KEY (`reusableplugin_ptr_id`), UNIQUE KEY `current_revision_id` (`current_revision_id`), - CONSTRAINT `current_revision_id_refs_id_66561e6e2198feb4` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_attachmentrevision` (`id`), - CONSTRAINT `reusableplugin_ptr_id_refs_articleplugin_ptr_id_79d179a16644e87a` FOREIGN KEY (`reusableplugin_ptr_id`) REFERENCES `wiki_reusableplugin` (`articleplugin_ptr_id`) + CONSTRAINT `current_revision_id_refs_id_2198feb4` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_attachmentrevision` (`id`), + CONSTRAINT `reusableplugin_ptr_id_refs_articleplugin_ptr_id_6644e87a` FOREIGN KEY (`reusableplugin_ptr_id`) REFERENCES `wiki_reusableplugin` (`articleplugin_ptr_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_attachmentrevision`; @@ -2608,9 +2840,9 @@ CREATE TABLE `wiki_attachmentrevision` ( KEY `wiki_attachmentrevision_fbfc09f1` (`user_id`), KEY `wiki_attachmentrevision_49bc38cc` (`previous_revision_id`), KEY `wiki_attachmentrevision_edee6011` (`attachment_id`), - CONSTRAINT `attachment_id_refs_reusableplugin_ptr_id_33d8cf1f640583da` FOREIGN KEY (`attachment_id`) REFERENCES `wiki_attachment` (`reusableplugin_ptr_id`), - CONSTRAINT `previous_revision_id_refs_id_5521ecec0041bbf5` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_attachmentrevision` (`id`), - CONSTRAINT `user_id_refs_id_2822eb682eaca84c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `attachment_id_refs_reusableplugin_ptr_id_640583da` FOREIGN KEY (`attachment_id`) REFERENCES `wiki_attachment` (`reusableplugin_ptr_id`), + CONSTRAINT `previous_revision_id_refs_id_41bbf5` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_attachmentrevision` (`id`), + CONSTRAINT `user_id_refs_id_2eaca84c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_image`; @@ -2619,7 +2851,7 @@ DROP TABLE IF EXISTS `wiki_image`; CREATE TABLE `wiki_image` ( `revisionplugin_ptr_id` int(11) NOT NULL, PRIMARY KEY (`revisionplugin_ptr_id`), - CONSTRAINT `revisionplugin_ptr_id_refs_articleplugin_ptr_id_1a20f885fc42a0b1` FOREIGN KEY (`revisionplugin_ptr_id`) REFERENCES `wiki_revisionplugin` (`articleplugin_ptr_id`) + CONSTRAINT `revisionplugin_ptr_id_refs_articleplugin_ptr_id_fc42a0b1` FOREIGN KEY (`revisionplugin_ptr_id`) REFERENCES `wiki_revisionplugin` (`articleplugin_ptr_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_imagerevision`; @@ -2631,7 +2863,7 @@ CREATE TABLE `wiki_imagerevision` ( `width` smallint(6), `height` smallint(6), PRIMARY KEY (`revisionpluginrevision_ptr_id`), - CONSTRAINT `revisionpluginrevision_ptr_id_refs_id_5da3ee545b9fc791` FOREIGN KEY (`revisionpluginrevision_ptr_id`) REFERENCES `wiki_revisionpluginrevision` (`id`) + CONSTRAINT `revisionpluginrevision_ptr_id_refs_id_5b9fc791` FOREIGN KEY (`revisionpluginrevision_ptr_id`) REFERENCES `wiki_revisionpluginrevision` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_reusableplugin`; @@ -2640,7 +2872,7 @@ DROP TABLE IF EXISTS `wiki_reusableplugin`; CREATE TABLE `wiki_reusableplugin` ( `articleplugin_ptr_id` int(11) NOT NULL, PRIMARY KEY (`articleplugin_ptr_id`), - CONSTRAINT `articleplugin_ptr_id_refs_id_2a5c48de4ca661fd` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`) + CONSTRAINT `articleplugin_ptr_id_refs_id_4ca661fd` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_reusableplugin_articles`; @@ -2654,8 +2886,8 @@ CREATE TABLE `wiki_reusableplugin_articles` ( UNIQUE KEY `wiki_reusableplugin_art_reusableplugin_id_6e34ac94afa8f9f2_uniq` (`reusableplugin_id`,`article_id`), KEY `wiki_reusableplugin_articles_28b0b358` (`reusableplugin_id`), KEY `wiki_reusableplugin_articles_30525a19` (`article_id`), - CONSTRAINT `article_id_refs_id_854477c2f51faad` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), - CONSTRAINT `reusableplugin_id_refs_articleplugin_ptr_id_496cabe744b45e30` FOREIGN KEY (`reusableplugin_id`) REFERENCES `wiki_reusableplugin` (`articleplugin_ptr_id`) + CONSTRAINT `article_id_refs_id_2f51faad` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), + CONSTRAINT `reusableplugin_id_refs_articleplugin_ptr_id_44b45e30` FOREIGN KEY (`reusableplugin_id`) REFERENCES `wiki_reusableplugin` (`articleplugin_ptr_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_revisionplugin`; @@ -2666,8 +2898,8 @@ CREATE TABLE `wiki_revisionplugin` ( `current_revision_id` int(11), PRIMARY KEY (`articleplugin_ptr_id`), UNIQUE KEY `current_revision_id` (`current_revision_id`), - CONSTRAINT `current_revision_id_refs_id_2732d4b244938e26` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_revisionpluginrevision` (`id`), - CONSTRAINT `articleplugin_ptr_id_refs_id_2b8f815fcac31401` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`) + CONSTRAINT `current_revision_id_refs_id_44938e26` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_revisionpluginrevision` (`id`), + CONSTRAINT `articleplugin_ptr_id_refs_id_cac31401` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_revisionpluginrevision`; @@ -2690,9 +2922,9 @@ CREATE TABLE `wiki_revisionpluginrevision` ( KEY `wiki_revisionpluginrevision_fbfc09f1` (`user_id`), KEY `wiki_revisionpluginrevision_49bc38cc` (`previous_revision_id`), KEY `wiki_revisionpluginrevision_2857ccbf` (`plugin_id`), - CONSTRAINT `plugin_id_refs_articleplugin_ptr_id_3e044eb541bbc69c` FOREIGN KEY (`plugin_id`) REFERENCES `wiki_revisionplugin` (`articleplugin_ptr_id`), - CONSTRAINT `previous_revision_id_refs_id_3348918678fffe43` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_revisionpluginrevision` (`id`), - CONSTRAINT `user_id_refs_id_21540d2c32d8f395` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `plugin_id_refs_articleplugin_ptr_id_41bbc69c` FOREIGN KEY (`plugin_id`) REFERENCES `wiki_revisionplugin` (`articleplugin_ptr_id`), + CONSTRAINT `previous_revision_id_refs_id_78fffe43` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_revisionpluginrevision` (`id`), + CONSTRAINT `user_id_refs_id_32d8f395` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_simpleplugin`; @@ -2703,8 +2935,8 @@ CREATE TABLE `wiki_simpleplugin` ( `article_revision_id` int(11) NOT NULL, PRIMARY KEY (`articleplugin_ptr_id`), KEY `wiki_simpleplugin_b3dc49fe` (`article_revision_id`), - CONSTRAINT `article_revision_id_refs_id_2252033b6df37b12` FOREIGN KEY (`article_revision_id`) REFERENCES `wiki_articlerevision` (`id`), - CONSTRAINT `articleplugin_ptr_id_refs_id_6704e8c7a25cbfd2` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`) + CONSTRAINT `article_revision_id_refs_id_6df37b12` FOREIGN KEY (`article_revision_id`) REFERENCES `wiki_articlerevision` (`id`), + CONSTRAINT `articleplugin_ptr_id_refs_id_a25cbfd2` FOREIGN KEY (`articleplugin_ptr_id`) REFERENCES `wiki_articleplugin` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_urlpath`; @@ -2719,7 +2951,7 @@ CREATE TABLE `wiki_urlpath` ( `rght` int(10) unsigned NOT NULL, `tree_id` int(10) unsigned NOT NULL, `level` int(10) unsigned NOT NULL, - `article_id` int(11) NOT NULL DEFAULT '1', + `article_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `wiki_urlpath_site_id_124f6aa7b2cc9b82_uniq` (`site_id`,`parent_id`,`slug`), KEY `wiki_urlpath_a951d5d6` (`slug`), @@ -2730,9 +2962,9 @@ CREATE TABLE `wiki_urlpath` ( KEY `wiki_urlpath_efd07f28` (`tree_id`), KEY `wiki_urlpath_2a8f42e8` (`level`), KEY `wiki_urlpath_30525a19` (`article_id`), - CONSTRAINT `article_id_refs_id_23bd80e7971759c9` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), - CONSTRAINT `parent_id_refs_id_62afe7c752d1e703` FOREIGN KEY (`parent_id`) REFERENCES `wiki_urlpath` (`id`), - CONSTRAINT `site_id_refs_id_462d2bc7f4bbaaa2` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`) + CONSTRAINT `article_id_refs_id_971759c9` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), + CONSTRAINT `parent_id_refs_id_52d1e703` FOREIGN KEY (`parent_id`) REFERENCES `wiki_urlpath` (`id`), + CONSTRAINT `site_id_refs_id_f4bbaaa2` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `workflow_assessmentworkflow`; @@ -2756,6 +2988,22 @@ CREATE TABLE `workflow_assessmentworkflow` ( KEY `workflow_assessmentworkflow_67b70d25` (`item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `workflow_assessmentworkflowcancellation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workflow_assessmentworkflowcancellation` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `workflow_id` int(11) NOT NULL, + `comments` longtext NOT NULL, + `cancelled_by_id` varchar(40) NOT NULL, + `created_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `workflow_assessmentworkflowcancellation_26cddbc7` (`workflow_id`), + KEY `workflow_assessmentworkflowcancellation_8569167` (`cancelled_by_id`), + KEY `workflow_assessmentworkflowcancellation_3b1c9c31` (`created_at`), + CONSTRAINT `workflow_id_refs_id_9b9e066a` FOREIGN KEY (`workflow_id`) REFERENCES `workflow_assessmentworkflow` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `workflow_assessmentworkflowstep`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -2768,7 +3016,7 @@ CREATE TABLE `workflow_assessmentworkflowstep` ( `order_num` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `workflow_assessmentworkflowstep_26cddbc7` (`workflow_id`), - CONSTRAINT `workflow_id_refs_id_4e31588b69d0b483` FOREIGN KEY (`workflow_id`) REFERENCES `workflow_assessmentworkflow` (`id`) + CONSTRAINT `workflow_id_refs_id_69d0b483` FOREIGN KEY (`workflow_id`) REFERENCES `workflow_assessmentworkflow` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `xblock_config_studioconfig`; @@ -2782,7 +3030,7 @@ CREATE TABLE `xblock_config_studioconfig` ( `disabled_blocks` longtext NOT NULL, PRIMARY KEY (`id`), KEY `xblock_config_studioconfig_16905482` (`changed_by_id`), - CONSTRAINT `changed_by_id_refs_id_3d4ae52c6ef7f7d7` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `changed_by_id_refs_id_6ef7f7d7` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 0b1a766f80..0e09b5bec5 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -216,6 +216,7 @@ THEME_NAME = ENV_TOKENS.get('THEME_NAME', None) # Marketing link overrides MKTG_URL_LINK_MAP.update(ENV_TOKENS.get('MKTG_URL_LINK_MAP', {})) + # Mobile store URL overrides MOBILE_STORE_URLS = ENV_TOKENS.get('MOBILE_STORE_URLS', MOBILE_STORE_URLS) @@ -305,15 +306,44 @@ VIDEO_CDN_URL = ENV_TOKENS.get('VIDEO_CDN_URL', {}) ############# CORS headers for cross-domain requests ################# -if FEATURES.get('ENABLE_CORS_HEADERS'): - INSTALLED_APPS += ('corsheaders', 'cors_csrf') - MIDDLEWARE_CLASSES = ( - 'corsheaders.middleware.CorsMiddleware', - 'cors_csrf.middleware.CorsCSRFMiddleware', - ) + MIDDLEWARE_CLASSES +if FEATURES.get('ENABLE_CORS_HEADERS') or FEATURES.get('ENABLE_CROSS_DOMAIN_CSRF_COOKIE'): CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_WHITELIST = ENV_TOKENS.get('CORS_ORIGIN_WHITELIST', ()) CORS_ORIGIN_ALLOW_ALL = ENV_TOKENS.get('CORS_ORIGIN_ALLOW_ALL', False) + CORS_ALLOW_INSECURE = ENV_TOKENS.get('CORS_ALLOW_INSECURE', False) + + # If setting a cross-domain cookie, it's really important to choose + # a name for the cookie that is DIFFERENT than the cookies used + # by each subdomain. For example, suppose the applications + # at these subdomains are configured to use the following cookie names: + # + # 1) foo.example.com --> "csrftoken" + # 2) baz.example.com --> "csrftoken" + # 3) bar.example.com --> "csrftoken" + # + # For the cross-domain version of the CSRF cookie, you need to choose + # a name DIFFERENT than "csrftoken"; otherwise, the new token configured + # for ".example.com" could conflict with the other cookies, + # non-deterministically causing 403 responses. + # + # Because of the way Django stores cookies, the cookie name MUST + # be a `str`, not unicode. Otherwise there will `TypeError`s will be raised + # when Django tries to call the unicode `translate()` method with the wrong + # number of parameters. + CROSS_DOMAIN_CSRF_COOKIE_NAME = str(ENV_TOKENS.get('CROSS_DOMAIN_CSRF_COOKIE_NAME')) + + # When setting the domain for the "cross-domain" version of the CSRF + # cookie, you should choose something like: ".example.com" + # (note the leading dot), where both the referer and the host + # are subdomains of "example.com". + # + # Browser security rules require that + # the cookie domain matches the domain of the server; otherwise + # the cookie won't get set. And once the cookie gets set, the client + # needs to be on a domain that matches the cookie domain, otherwise + # the client won't be able to read the cookie. + CROSS_DOMAIN_CSRF_COOKIE_DOMAIN = ENV_TOKENS.get('CROSS_DOMAIN_CSRF_COOKIE_DOMAIN') + ############################## SECURE AUTH ITEMS ############### # Secret things: passwords, access keys, etc. diff --git a/lms/envs/common.py b/lms/envs/common.py index c48ea4724e..180c7c5e90 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -1000,7 +1000,13 @@ MIDDLEWARE_CLASSES = ( 'django.contrib.messages.middleware.MessageMiddleware', 'track.middleware.TrackMiddleware', + + # CORS and CSRF + 'corsheaders.middleware.CorsMiddleware', + 'cors_csrf.middleware.CorsCSRFMiddleware', + 'cors_csrf.middleware.CsrfCrossDomainCookieMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', + 'splash.middleware.SplashMiddleware', # Allows us to dark-launch particular languages @@ -1634,8 +1640,18 @@ INSTALLED_APPS = ( 'openedx.core.djangoapps.content.course_structures', 'course_structure_api', + + # CORS and cross-domain CSRF + 'corsheaders', + 'cors_csrf' ) +######################### CSRF ######################################### + +# Forwards-compatibility with Django 1.7 +CSRF_COOKIE_AGE = 60 * 60 * 24 * 7 * 52 + + ######################### MARKETING SITE ############################### EDXMKTG_COOKIE_NAME = 'edxloggedin' MKTG_URLS = {} @@ -1688,11 +1704,6 @@ if FEATURES.get('AUTH_USE_CAS'): ############# CORS headers for cross-domain requests ################# if FEATURES.get('ENABLE_CORS_HEADERS'): - INSTALLED_APPS += ('corsheaders', 'cors_csrf') - MIDDLEWARE_CLASSES = ( - 'corsheaders.middleware.CorsMiddleware', - 'cors_csrf.middleware.CorsCSRFMiddleware', - ) + MIDDLEWARE_CLASSES CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_WHITELIST = () CORS_ORIGIN_ALLOW_ALL = False