From dd90c556024fefee14058e47aa4c43eb1a8b556f Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 16 Sep 2015 12:02:11 -0400 Subject: [PATCH 1/3] Create a new CSMHExtended table to hold our new data This is a clone (copy) of CSMH's declaration and methods with an added id of UnsignedBigInAutoField We should be able to delete the save_history code, but needs testing. Add error logging when capa failures happen Put StudentModuleHistory into its own database Bump out the primary key on CSMHE This gives us a gap to backfill as needed. Since the new table's pk is an unsigned bigint, even for people who don't consolidate CSMH into CSMHE, the lost rows are unlikely to matter. Remove StudentModuleHistory cleaner --- cms/envs/acceptance.py | 8 + common/lib/xmodule/xmodule/capa_module.py | 16 +- common/test/db_cache/bok_choy_data.json | 1 - .../test/db_cache/bok_choy_data_default.json | 1 + .../bok_choy_data_student_module_history.json | 1 + ...schema.sql => bok_choy_schema_default.sql} | 26 +- ...bok_choy_schema_student_module_history.sql | 21 + .../tests/test_field_override_performance.py | 101 ++-- lms/djangoapps/courseware/fields.py | 21 + .../management/commands/clean_history.py | 222 -------- .../commands/tests/test_clean_history.py | 491 ------------------ .../migrations/0002_csmh-extended-keyspace.py | 53 ++ lms/djangoapps/courseware/models.py | 46 +- lms/djangoapps/courseware/routers.py | 57 ++ .../courseware/tests/test_model_data.py | 5 +- lms/envs/acceptance.py | 8 + lms/envs/aws.py | 5 + lms/envs/aws_migrate.py | 33 +- lms/envs/bok_choy.auth.json | 8 + lms/envs/common.py | 10 + lms/envs/dev.py | 5 + lms/envs/devplus.py | 9 + lms/envs/static.py | 5 + lms/envs/test.py | 5 +- lms/envs/test_static_optimized.py | 4 +- scripts/reset-test-db.sh | 75 ++- 26 files changed, 413 insertions(+), 824 deletions(-) delete mode 100644 common/test/db_cache/bok_choy_data.json create mode 100644 common/test/db_cache/bok_choy_data_default.json create mode 100644 common/test/db_cache/bok_choy_data_student_module_history.json rename common/test/db_cache/{bok_choy_schema.sql => bok_choy_schema_default.sql} (99%) create mode 100644 common/test/db_cache/bok_choy_schema_student_module_history.sql create mode 100644 lms/djangoapps/courseware/fields.py delete mode 100644 lms/djangoapps/courseware/management/commands/clean_history.py delete mode 100644 lms/djangoapps/courseware/management/commands/tests/test_clean_history.py create mode 100644 lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py create mode 100644 lms/djangoapps/courseware/routers.py diff --git a/cms/envs/acceptance.py b/cms/envs/acceptance.py index 20bdeb0270..3bb18399f3 100644 --- a/cms/envs/acceptance.py +++ b/cms/envs/acceptance.py @@ -80,6 +80,14 @@ DATABASES = { 'timeout': 30, }, 'ATOMIC_REQUESTS': True, + }, + 'student_module_history': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': TEST_ROOT / "db" / "test_student_module_history.db", + 'TEST_NAME': TEST_ROOT / "db" / "test_student_module_history.db", + 'OPTIONS': { + 'timeout': 30, + }, } } diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index d44a82276c..ff9af91c0d 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -93,11 +93,23 @@ class CapaModule(CapaMixin, XModule): result = handlers[dispatch](data) except NotFoundError as err: - _, _, traceback_obj = sys.exc_info() + log.exception( + "Unable to find data when dispatching %s to %s for user %s", + dispatch, + self.scope_ids.usage_id, + self.scope_ids.user_id + ) + _, _, traceback_obj = sys.exc_info() # pylint: disable=redefined-outer-name raise ProcessingError(not_found_error_message), None, traceback_obj except Exception as err: - _, _, traceback_obj = sys.exc_info() + log.exception( + "Unknown error when dispatching %s to %s for user %s", + dispatch, + self.scope_ids.usage_id, + self.scope_ids.user_id + ) + _, _, traceback_obj = sys.exc_info() # pylint: disable=redefined-outer-name raise ProcessingError(generic_error_message), None, traceback_obj after = self.get_progress() diff --git a/common/test/db_cache/bok_choy_data.json b/common/test/db_cache/bok_choy_data.json deleted file mode 100644 index 3c64c3e6a5..0000000000 --- a/common/test/db_cache/bok_choy_data.json +++ /dev/null @@ -1 +0,0 @@ -[{"fields": {"model": "permission", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 1}, {"fields": {"model": "group", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 2}, {"fields": {"model": "user", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 3}, {"fields": {"model": "contenttype", "app_label": "contenttypes"}, "model": "contenttypes.contenttype", "pk": 4}, {"fields": {"model": "session", "app_label": "sessions"}, "model": "contenttypes.contenttype", "pk": 5}, {"fields": {"model": "site", "app_label": "sites"}, "model": "contenttypes.contenttype", "pk": 6}, {"fields": {"model": "taskmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 7}, {"fields": {"model": "tasksetmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 8}, {"fields": {"model": "intervalschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 9}, {"fields": {"model": "crontabschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 10}, {"fields": {"model": "periodictasks", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 11}, {"fields": {"model": "periodictask", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 12}, {"fields": {"model": "workerstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 13}, {"fields": {"model": "taskstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 14}, {"fields": {"model": "globalstatusmessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 15}, {"fields": {"model": "coursemessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 16}, {"fields": {"model": "assetbaseurlconfig", "app_label": "static_replace"}, "model": "contenttypes.contenttype", "pk": 17}, {"fields": {"model": "studentmodule", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 18}, {"fields": {"model": "studentmodulehistory", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 19}, {"fields": {"model": "xmoduleuserstatesummaryfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 20}, {"fields": {"model": "xmodulestudentprefsfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 21}, {"fields": {"model": "xmodulestudentinfofield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 22}, {"fields": {"model": "offlinecomputedgrade", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 23}, {"fields": {"model": "offlinecomputedgradelog", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 24}, {"fields": {"model": "studentfieldoverride", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 25}, {"fields": {"model": "anonymoususerid", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 26}, {"fields": {"model": "userstanding", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 27}, {"fields": {"model": "userprofile", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 28}, {"fields": {"model": "usersignupsource", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 29}, {"fields": {"model": "usertestgroup", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 30}, {"fields": {"model": "registration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 31}, {"fields": {"model": "pendingnamechange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 32}, {"fields": {"model": "pendingemailchange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 33}, {"fields": {"model": "passwordhistory", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 34}, {"fields": {"model": "loginfailures", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 35}, {"fields": {"model": "historicalcourseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 36}, {"fields": {"model": "courseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 37}, {"fields": {"model": "manualenrollmentaudit", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 38}, {"fields": {"model": "courseenrollmentallowed", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 39}, {"fields": {"model": "courseaccessrole", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 40}, {"fields": {"model": "dashboardconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 41}, {"fields": {"model": "linkedinaddtoprofileconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 42}, {"fields": {"model": "entranceexamconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 43}, {"fields": {"model": "languageproficiency", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 44}, {"fields": {"model": "courseenrollmentattribute", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 45}, {"fields": {"model": "enrollmentrefundconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 46}, {"fields": {"model": "trackinglog", "app_label": "track"}, "model": "contenttypes.contenttype", "pk": 47}, {"fields": {"model": "ratelimitconfiguration", "app_label": "util"}, "model": "contenttypes.contenttype", "pk": 48}, {"fields": {"model": "certificatewhitelist", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 49}, {"fields": {"model": "generatedcertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 50}, {"fields": {"model": "certificategenerationhistory", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 51}, {"fields": {"model": "certificateinvalidation", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 52}, {"fields": {"model": "examplecertificateset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 53}, {"fields": {"model": "examplecertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 54}, {"fields": {"model": "certificategenerationcoursesetting", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 55}, {"fields": {"model": "certificategenerationconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 56}, {"fields": {"model": "certificatehtmlviewconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 57}, {"fields": {"model": "badgeassertion", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 58}, {"fields": {"model": "badgeimageconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 59}, {"fields": {"model": "certificatetemplate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 60}, {"fields": {"model": "certificatetemplateasset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 61}, {"fields": {"model": "instructortask", "app_label": "instructor_task"}, "model": "contenttypes.contenttype", "pk": 62}, {"fields": {"model": "courseusergroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 63}, {"fields": {"model": "cohortmembership", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 64}, {"fields": {"model": "courseusergrouppartitiongroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 65}, {"fields": {"model": "coursecohortssettings", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 66}, {"fields": {"model": "coursecohort", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 67}, {"fields": {"model": "courseemail", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 68}, {"fields": {"model": "optout", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 69}, {"fields": {"model": "courseemailtemplate", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 70}, {"fields": {"model": "courseauthorization", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 71}, {"fields": {"model": "brandinginfoconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 72}, {"fields": {"model": "brandingapiconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 73}, {"fields": {"model": "externalauthmap", "app_label": "external_auth"}, "model": "contenttypes.contenttype", "pk": 74}, {"fields": {"model": "nonce", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 75}, {"fields": {"model": "association", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 76}, {"fields": {"model": "useropenid", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 77}, {"fields": {"model": "client", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 78}, {"fields": {"model": "grant", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 79}, {"fields": {"model": "accesstoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 80}, {"fields": {"model": "refreshtoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 81}, {"fields": {"model": "trustedclient", "app_label": "oauth2_provider"}, "model": "contenttypes.contenttype", "pk": 82}, {"fields": {"model": "oauth2providerconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 83}, {"fields": {"model": "samlproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 84}, {"fields": {"model": "samlconfiguration", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 85}, {"fields": {"model": "samlproviderdata", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 86}, {"fields": {"model": "ltiproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 87}, {"fields": {"model": "providerapipermissions", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 88}, {"fields": {"model": "nonce", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 89}, {"fields": {"model": "scope", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 90}, {"fields": {"model": "consumer", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 91}, {"fields": {"model": "token", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 92}, {"fields": {"model": "resource", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 93}, {"fields": {"model": "article", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 94}, {"fields": {"model": "articleforobject", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 95}, {"fields": {"model": "articlerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 96}, {"fields": {"model": "urlpath", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 97}, {"fields": {"model": "articleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 98}, {"fields": {"model": "reusableplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 99}, {"fields": {"model": "simpleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 100}, {"fields": {"model": "revisionplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 101}, {"fields": {"model": "revisionpluginrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 102}, {"fields": {"model": "image", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 103}, {"fields": {"model": "imagerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 104}, {"fields": {"model": "attachment", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 105}, {"fields": {"model": "attachmentrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 106}, {"fields": {"model": "notificationtype", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 107}, {"fields": {"model": "settings", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 108}, {"fields": {"model": "subscription", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 109}, {"fields": {"model": "notification", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 110}, {"fields": {"model": "logentry", "app_label": "admin"}, "model": "contenttypes.contenttype", "pk": 111}, {"fields": {"model": "role", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 112}, {"fields": {"model": "permission", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 113}, {"fields": {"model": "note", "app_label": "notes"}, "model": "contenttypes.contenttype", "pk": 114}, {"fields": {"model": "splashconfig", "app_label": "splash"}, "model": "contenttypes.contenttype", "pk": 115}, {"fields": {"model": "userpreference", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 116}, {"fields": {"model": "usercoursetag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 117}, {"fields": {"model": "userorgtag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 118}, {"fields": {"model": "order", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 119}, {"fields": {"model": "orderitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 120}, {"fields": {"model": "invoice", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 121}, {"fields": {"model": "invoicetransaction", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 122}, {"fields": {"model": "invoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 123}, {"fields": {"model": "courseregistrationcodeinvoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 124}, {"fields": {"model": "invoicehistory", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 125}, {"fields": {"model": "courseregistrationcode", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 126}, {"fields": {"model": "registrationcoderedemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 127}, {"fields": {"model": "coupon", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 128}, {"fields": {"model": "couponredemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 129}, {"fields": {"model": "paidcourseregistration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 130}, {"fields": {"model": "courseregcodeitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 131}, {"fields": {"model": "courseregcodeitemannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 132}, {"fields": {"model": "paidcourseregistrationannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 133}, {"fields": {"model": "certificateitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 134}, {"fields": {"model": "donationconfiguration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 135}, {"fields": {"model": "donation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 136}, {"fields": {"model": "coursemode", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 137}, {"fields": {"model": "coursemodesarchive", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 138}, {"fields": {"model": "coursemodeexpirationconfig", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 139}, {"fields": {"model": "softwaresecurephotoverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 140}, {"fields": {"model": "historicalverificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 141}, {"fields": {"model": "verificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 142}, {"fields": {"model": "verificationcheckpoint", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 143}, {"fields": {"model": "verificationstatus", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 144}, {"fields": {"model": "incoursereverificationconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 145}, {"fields": {"model": "icrvstatusemailsconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 146}, {"fields": {"model": "skippedreverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 147}, {"fields": {"model": "darklangconfig", "app_label": "dark_lang"}, "model": "contenttypes.contenttype", "pk": 148}, {"fields": {"model": "microsite", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 149}, {"fields": {"model": "micrositehistory", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 150}, {"fields": {"model": "historicalmicrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 151}, {"fields": {"model": "micrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 152}, {"fields": {"model": "historicalmicrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 153}, {"fields": {"model": "micrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 154}, {"fields": {"model": "whitelistedrssurl", "app_label": "rss_proxy"}, "model": "contenttypes.contenttype", "pk": 155}, {"fields": {"model": "embargoedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 156}, {"fields": {"model": "embargoedstate", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 157}, {"fields": {"model": "restrictedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 158}, {"fields": {"model": "country", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 159}, {"fields": {"model": "countryaccessrule", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 160}, {"fields": {"model": "courseaccessrulehistory", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 161}, {"fields": {"model": "ipfilter", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 162}, {"fields": {"model": "coursererunstate", "app_label": "course_action_state"}, "model": "contenttypes.contenttype", "pk": 163}, {"fields": {"model": "mobileapiconfig", "app_label": "mobile_api"}, "model": "contenttypes.contenttype", "pk": 164}, {"fields": {"model": "usersocialauth", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 165}, {"fields": {"model": "nonce", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 166}, {"fields": {"model": "association", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 167}, {"fields": {"model": "code", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 168}, {"fields": {"model": "surveyform", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 169}, {"fields": {"model": "surveyanswer", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 170}, {"fields": {"model": "xblockasidesconfig", "app_label": "lms_xblock"}, "model": "contenttypes.contenttype", "pk": 171}, {"fields": {"model": "courseoverview", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 172}, {"fields": {"model": "courseoverviewtab", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 173}, {"fields": {"model": "courseoverviewimageset", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 174}, {"fields": {"model": "courseoverviewimageconfig", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 175}, {"fields": {"model": "coursestructure", "app_label": "course_structures"}, "model": "contenttypes.contenttype", "pk": 176}, {"fields": {"model": "corsmodel", "app_label": "corsheaders"}, "model": "contenttypes.contenttype", "pk": 177}, {"fields": {"model": "xdomainproxyconfiguration", "app_label": "cors_csrf"}, "model": "contenttypes.contenttype", "pk": 178}, {"fields": {"model": "creditprovider", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 179}, {"fields": {"model": "creditcourse", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 180}, {"fields": {"model": "creditrequirement", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 181}, {"fields": {"model": "historicalcreditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 182}, {"fields": {"model": "creditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 183}, {"fields": {"model": "crediteligibility", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 184}, {"fields": {"model": "historicalcreditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 185}, {"fields": {"model": "creditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 186}, {"fields": {"model": "courseteam", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 187}, {"fields": {"model": "courseteammembership", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 188}, {"fields": {"model": "xblockdisableconfig", "app_label": "xblock_django"}, "model": "contenttypes.contenttype", "pk": 189}, {"fields": {"model": "bookmark", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 190}, {"fields": {"model": "xblockcache", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 191}, {"fields": {"model": "programsapiconfig", "app_label": "programs"}, "model": "contenttypes.contenttype", "pk": 192}, {"fields": {"model": "selfpacedconfiguration", "app_label": "self_paced"}, "model": "contenttypes.contenttype", "pk": 193}, {"fields": {"model": "kvstore", "app_label": "thumbnail"}, "model": "contenttypes.contenttype", "pk": 194}, {"fields": {"model": "credentialsapiconfig", "app_label": "credentials"}, "model": "contenttypes.contenttype", "pk": 195}, {"fields": {"model": "answer", "app_label": "problem_builder"}, "model": "contenttypes.contenttype", "pk": 196}, {"fields": {"model": "studentitem", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 197}, {"fields": {"model": "submission", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 198}, {"fields": {"model": "score", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 199}, {"fields": {"model": "scoresummary", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 200}, {"fields": {"model": "scoreannotation", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 201}, {"fields": {"model": "rubric", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 202}, {"fields": {"model": "criterion", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 203}, {"fields": {"model": "criterionoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 204}, {"fields": {"model": "assessment", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 205}, {"fields": {"model": "assessmentpart", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 206}, {"fields": {"model": "assessmentfeedbackoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 207}, {"fields": {"model": "assessmentfeedback", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 208}, {"fields": {"model": "peerworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 209}, {"fields": {"model": "peerworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 210}, {"fields": {"model": "trainingexample", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 211}, {"fields": {"model": "studenttrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 212}, {"fields": {"model": "studenttrainingworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 213}, {"fields": {"model": "aiclassifierset", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 214}, {"fields": {"model": "aiclassifier", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 215}, {"fields": {"model": "aitrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 216}, {"fields": {"model": "aigradingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 217}, {"fields": {"model": "staffworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 218}, {"fields": {"model": "assessmentworkflow", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 219}, {"fields": {"model": "assessmentworkflowstep", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 220}, {"fields": {"model": "assessmentworkflowcancellation", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 221}, {"fields": {"model": "profile", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 222}, {"fields": {"model": "video", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 223}, {"fields": {"model": "coursevideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 224}, {"fields": {"model": "encodedvideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 225}, {"fields": {"model": "subtitle", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 226}, {"fields": {"model": "milestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 227}, {"fields": {"model": "milestonerelationshiptype", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 228}, {"fields": {"model": "coursemilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 229}, {"fields": {"model": "coursecontentmilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 230}, {"fields": {"model": "usermilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 231}, {"fields": {"model": "proctoredexam", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 232}, {"fields": {"model": "proctoredexamreviewpolicy", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 233}, {"fields": {"model": "proctoredexamreviewpolicyhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 234}, {"fields": {"model": "proctoredexamstudentattempt", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 235}, {"fields": {"model": "proctoredexamstudentattempthistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 236}, {"fields": {"model": "proctoredexamstudentallowance", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 237}, {"fields": {"model": "proctoredexamstudentallowancehistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 238}, {"fields": {"model": "proctoredexamsoftwaresecurereview", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 239}, {"fields": {"model": "proctoredexamsoftwaresecurereviewhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 240}, {"fields": {"model": "proctoredexamsoftwaresecurecomment", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 241}, {"fields": {"model": "organization", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 242}, {"fields": {"model": "organizationcourse", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 243}, {"fields": {"model": "videouploadconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 244}, {"fields": {"model": "pushnotificationconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 245}, {"fields": {"model": "coursecreator", "app_label": "course_creators"}, "model": "contenttypes.contenttype", "pk": 246}, {"fields": {"model": "studioconfig", "app_label": "xblock_config"}, "model": "contenttypes.contenttype", "pk": 247}, {"fields": {"domain": "example.com", "name": "example.com"}, "model": "sites.site", "pk": 1}, {"fields": {"default": false, "mode": "honor", "icon": "badges/honor.png"}, "model": "certificates.badgeimageconfiguration", "pk": 1}, {"fields": {"default": false, "mode": "verified", "icon": "badges/verified.png"}, "model": "certificates.badgeimageconfiguration", "pk": 2}, {"fields": {"default": false, "mode": "professional", "icon": "badges/professional.png"}, "model": "certificates.badgeimageconfiguration", "pk": 3}, {"fields": {"plain_template": "{course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": null}, "model": "bulk_email.courseemailtemplate", "pk": 1}, {"fields": {"plain_template": "THIS IS A BRANDED TEXT TEMPLATE. {course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " THIS IS A BRANDED HTML TEMPLATE Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": "branded.template"}, "model": "bulk_email.courseemailtemplate", "pk": 2}, {"fields": {"country": "AF"}, "model": "embargo.country", "pk": 1}, {"fields": {"country": "AX"}, "model": "embargo.country", "pk": 2}, {"fields": {"country": "AL"}, "model": "embargo.country", "pk": 3}, {"fields": {"country": "DZ"}, "model": "embargo.country", "pk": 4}, {"fields": {"country": "AS"}, "model": "embargo.country", "pk": 5}, {"fields": {"country": "AD"}, "model": "embargo.country", "pk": 6}, {"fields": {"country": "AO"}, "model": "embargo.country", "pk": 7}, {"fields": {"country": "AI"}, "model": "embargo.country", "pk": 8}, {"fields": {"country": "AQ"}, "model": "embargo.country", "pk": 9}, {"fields": {"country": "AG"}, "model": "embargo.country", "pk": 10}, {"fields": {"country": "AR"}, "model": "embargo.country", "pk": 11}, {"fields": {"country": "AM"}, "model": "embargo.country", "pk": 12}, {"fields": {"country": "AW"}, "model": "embargo.country", "pk": 13}, {"fields": {"country": "AU"}, "model": "embargo.country", "pk": 14}, {"fields": {"country": "AT"}, "model": "embargo.country", "pk": 15}, {"fields": {"country": "AZ"}, "model": "embargo.country", "pk": 16}, {"fields": {"country": "BS"}, "model": "embargo.country", "pk": 17}, {"fields": {"country": "BH"}, "model": "embargo.country", "pk": 18}, {"fields": {"country": "BD"}, "model": "embargo.country", "pk": 19}, {"fields": {"country": "BB"}, "model": "embargo.country", "pk": 20}, {"fields": {"country": "BY"}, "model": "embargo.country", "pk": 21}, {"fields": {"country": "BE"}, "model": "embargo.country", "pk": 22}, {"fields": {"country": "BZ"}, "model": "embargo.country", "pk": 23}, {"fields": {"country": "BJ"}, "model": "embargo.country", "pk": 24}, {"fields": {"country": "BM"}, "model": "embargo.country", "pk": 25}, {"fields": {"country": "BT"}, "model": "embargo.country", "pk": 26}, {"fields": {"country": "BO"}, "model": "embargo.country", "pk": 27}, {"fields": {"country": "BQ"}, "model": "embargo.country", "pk": 28}, {"fields": {"country": "BA"}, "model": "embargo.country", "pk": 29}, {"fields": {"country": "BW"}, "model": "embargo.country", "pk": 30}, {"fields": {"country": "BV"}, "model": "embargo.country", "pk": 31}, {"fields": {"country": "BR"}, "model": "embargo.country", "pk": 32}, {"fields": {"country": "IO"}, "model": "embargo.country", "pk": 33}, {"fields": {"country": "BN"}, "model": "embargo.country", "pk": 34}, {"fields": {"country": "BG"}, "model": "embargo.country", "pk": 35}, {"fields": {"country": "BF"}, "model": "embargo.country", "pk": 36}, {"fields": {"country": "BI"}, "model": "embargo.country", "pk": 37}, {"fields": {"country": "CV"}, "model": "embargo.country", "pk": 38}, {"fields": {"country": "KH"}, "model": "embargo.country", "pk": 39}, {"fields": {"country": "CM"}, "model": "embargo.country", "pk": 40}, {"fields": {"country": "CA"}, "model": "embargo.country", "pk": 41}, {"fields": {"country": "KY"}, "model": "embargo.country", "pk": 42}, {"fields": {"country": "CF"}, "model": "embargo.country", "pk": 43}, {"fields": {"country": "TD"}, "model": "embargo.country", "pk": 44}, {"fields": {"country": "CL"}, "model": "embargo.country", "pk": 45}, {"fields": {"country": "CN"}, "model": "embargo.country", "pk": 46}, {"fields": {"country": "CX"}, "model": "embargo.country", "pk": 47}, {"fields": {"country": "CC"}, "model": "embargo.country", "pk": 48}, {"fields": {"country": "CO"}, "model": "embargo.country", "pk": 49}, {"fields": {"country": "KM"}, "model": "embargo.country", "pk": 50}, {"fields": {"country": "CG"}, "model": "embargo.country", "pk": 51}, {"fields": {"country": "CD"}, "model": "embargo.country", "pk": 52}, {"fields": {"country": "CK"}, "model": "embargo.country", "pk": 53}, {"fields": {"country": "CR"}, "model": "embargo.country", "pk": 54}, {"fields": {"country": "CI"}, "model": "embargo.country", "pk": 55}, {"fields": {"country": "HR"}, "model": "embargo.country", "pk": 56}, {"fields": {"country": "CU"}, "model": "embargo.country", "pk": 57}, {"fields": {"country": "CW"}, "model": "embargo.country", "pk": 58}, {"fields": {"country": "CY"}, "model": "embargo.country", "pk": 59}, {"fields": {"country": "CZ"}, "model": "embargo.country", "pk": 60}, {"fields": {"country": "DK"}, "model": "embargo.country", "pk": 61}, {"fields": {"country": "DJ"}, "model": "embargo.country", "pk": 62}, {"fields": {"country": "DM"}, "model": "embargo.country", "pk": 63}, {"fields": {"country": "DO"}, "model": "embargo.country", "pk": 64}, {"fields": {"country": "EC"}, "model": "embargo.country", "pk": 65}, {"fields": {"country": "EG"}, "model": "embargo.country", "pk": 66}, {"fields": {"country": "SV"}, "model": "embargo.country", "pk": 67}, {"fields": {"country": "GQ"}, "model": "embargo.country", "pk": 68}, {"fields": {"country": "ER"}, "model": "embargo.country", "pk": 69}, {"fields": {"country": "EE"}, "model": "embargo.country", "pk": 70}, {"fields": {"country": "ET"}, "model": "embargo.country", "pk": 71}, {"fields": {"country": "FK"}, "model": "embargo.country", "pk": 72}, {"fields": {"country": "FO"}, "model": "embargo.country", "pk": 73}, {"fields": {"country": "FJ"}, "model": "embargo.country", "pk": 74}, {"fields": {"country": "FI"}, "model": "embargo.country", "pk": 75}, {"fields": {"country": "FR"}, "model": "embargo.country", "pk": 76}, {"fields": {"country": "GF"}, "model": "embargo.country", "pk": 77}, {"fields": {"country": "PF"}, "model": "embargo.country", "pk": 78}, {"fields": {"country": "TF"}, "model": "embargo.country", "pk": 79}, {"fields": {"country": "GA"}, "model": "embargo.country", "pk": 80}, {"fields": {"country": "GM"}, "model": "embargo.country", "pk": 81}, {"fields": {"country": "GE"}, "model": "embargo.country", "pk": 82}, {"fields": {"country": "DE"}, "model": "embargo.country", "pk": 83}, {"fields": {"country": "GH"}, "model": "embargo.country", "pk": 84}, {"fields": {"country": "GI"}, "model": "embargo.country", "pk": 85}, {"fields": {"country": "GR"}, "model": "embargo.country", "pk": 86}, {"fields": {"country": "GL"}, "model": "embargo.country", "pk": 87}, {"fields": {"country": "GD"}, "model": "embargo.country", "pk": 88}, {"fields": {"country": "GP"}, "model": "embargo.country", "pk": 89}, {"fields": {"country": "GU"}, "model": "embargo.country", "pk": 90}, {"fields": {"country": "GT"}, "model": "embargo.country", "pk": 91}, {"fields": {"country": "GG"}, "model": "embargo.country", "pk": 92}, {"fields": {"country": "GN"}, "model": "embargo.country", "pk": 93}, {"fields": {"country": "GW"}, "model": "embargo.country", "pk": 94}, {"fields": {"country": "GY"}, "model": "embargo.country", "pk": 95}, {"fields": {"country": "HT"}, "model": "embargo.country", "pk": 96}, {"fields": {"country": "HM"}, "model": "embargo.country", "pk": 97}, {"fields": {"country": "VA"}, "model": "embargo.country", "pk": 98}, {"fields": {"country": "HN"}, "model": "embargo.country", "pk": 99}, {"fields": {"country": "HK"}, "model": "embargo.country", "pk": 100}, {"fields": {"country": "HU"}, "model": "embargo.country", "pk": 101}, {"fields": {"country": "IS"}, "model": "embargo.country", "pk": 102}, {"fields": {"country": "IN"}, "model": "embargo.country", "pk": 103}, {"fields": {"country": "ID"}, "model": "embargo.country", "pk": 104}, {"fields": {"country": "IR"}, "model": "embargo.country", "pk": 105}, {"fields": {"country": "IQ"}, "model": "embargo.country", "pk": 106}, {"fields": {"country": "IE"}, "model": "embargo.country", "pk": 107}, {"fields": {"country": "IM"}, "model": "embargo.country", "pk": 108}, {"fields": {"country": "IL"}, "model": "embargo.country", "pk": 109}, {"fields": {"country": "IT"}, "model": "embargo.country", "pk": 110}, {"fields": {"country": "JM"}, "model": "embargo.country", "pk": 111}, {"fields": {"country": "JP"}, "model": "embargo.country", "pk": 112}, {"fields": {"country": "JE"}, "model": "embargo.country", "pk": 113}, {"fields": {"country": "JO"}, "model": "embargo.country", "pk": 114}, {"fields": {"country": "KZ"}, "model": "embargo.country", "pk": 115}, {"fields": {"country": "KE"}, "model": "embargo.country", "pk": 116}, {"fields": {"country": "KI"}, "model": "embargo.country", "pk": 117}, {"fields": {"country": "KW"}, "model": "embargo.country", "pk": 118}, {"fields": {"country": "KG"}, "model": "embargo.country", "pk": 119}, {"fields": {"country": "LA"}, "model": "embargo.country", "pk": 120}, {"fields": {"country": "LV"}, "model": "embargo.country", "pk": 121}, {"fields": {"country": "LB"}, "model": "embargo.country", "pk": 122}, {"fields": {"country": "LS"}, "model": "embargo.country", "pk": 123}, {"fields": {"country": "LR"}, "model": "embargo.country", "pk": 124}, {"fields": {"country": "LY"}, "model": "embargo.country", "pk": 125}, {"fields": {"country": "LI"}, "model": "embargo.country", "pk": 126}, {"fields": {"country": "LT"}, "model": "embargo.country", "pk": 127}, {"fields": {"country": "LU"}, "model": "embargo.country", "pk": 128}, {"fields": {"country": "MO"}, "model": "embargo.country", "pk": 129}, {"fields": {"country": "MK"}, "model": "embargo.country", "pk": 130}, {"fields": {"country": "MG"}, "model": "embargo.country", "pk": 131}, {"fields": {"country": "MW"}, "model": "embargo.country", "pk": 132}, {"fields": {"country": "MY"}, "model": "embargo.country", "pk": 133}, {"fields": {"country": "MV"}, "model": "embargo.country", "pk": 134}, {"fields": {"country": "ML"}, "model": "embargo.country", "pk": 135}, {"fields": {"country": "MT"}, "model": "embargo.country", "pk": 136}, {"fields": {"country": "MH"}, "model": "embargo.country", "pk": 137}, {"fields": {"country": "MQ"}, "model": "embargo.country", "pk": 138}, {"fields": {"country": "MR"}, "model": "embargo.country", "pk": 139}, {"fields": {"country": "MU"}, "model": "embargo.country", "pk": 140}, {"fields": {"country": "YT"}, "model": "embargo.country", "pk": 141}, {"fields": {"country": "MX"}, "model": "embargo.country", "pk": 142}, {"fields": {"country": "FM"}, "model": "embargo.country", "pk": 143}, {"fields": {"country": "MD"}, "model": "embargo.country", "pk": 144}, {"fields": {"country": "MC"}, "model": "embargo.country", "pk": 145}, {"fields": {"country": "MN"}, "model": "embargo.country", "pk": 146}, {"fields": {"country": "ME"}, "model": "embargo.country", "pk": 147}, {"fields": {"country": "MS"}, "model": "embargo.country", "pk": 148}, {"fields": {"country": "MA"}, "model": "embargo.country", "pk": 149}, {"fields": {"country": "MZ"}, "model": "embargo.country", "pk": 150}, {"fields": {"country": "MM"}, "model": "embargo.country", "pk": 151}, {"fields": {"country": "NA"}, "model": "embargo.country", "pk": 152}, {"fields": {"country": "NR"}, "model": "embargo.country", "pk": 153}, {"fields": {"country": "NP"}, "model": "embargo.country", "pk": 154}, {"fields": {"country": "NL"}, "model": "embargo.country", "pk": 155}, {"fields": {"country": "NC"}, "model": "embargo.country", "pk": 156}, {"fields": {"country": "NZ"}, "model": "embargo.country", "pk": 157}, {"fields": {"country": "NI"}, "model": "embargo.country", "pk": 158}, {"fields": {"country": "NE"}, "model": "embargo.country", "pk": 159}, {"fields": {"country": "NG"}, "model": "embargo.country", "pk": 160}, {"fields": {"country": "NU"}, "model": "embargo.country", "pk": 161}, {"fields": {"country": "NF"}, "model": "embargo.country", "pk": 162}, {"fields": {"country": "KP"}, "model": "embargo.country", "pk": 163}, {"fields": {"country": "MP"}, "model": "embargo.country", "pk": 164}, {"fields": {"country": "NO"}, "model": "embargo.country", "pk": 165}, {"fields": {"country": "OM"}, "model": "embargo.country", "pk": 166}, {"fields": {"country": "PK"}, "model": "embargo.country", "pk": 167}, {"fields": {"country": "PW"}, "model": "embargo.country", "pk": 168}, {"fields": {"country": "PS"}, "model": "embargo.country", "pk": 169}, {"fields": {"country": "PA"}, "model": "embargo.country", "pk": 170}, {"fields": {"country": "PG"}, "model": "embargo.country", "pk": 171}, {"fields": {"country": "PY"}, "model": "embargo.country", "pk": 172}, {"fields": {"country": "PE"}, "model": "embargo.country", "pk": 173}, {"fields": {"country": "PH"}, "model": "embargo.country", "pk": 174}, {"fields": {"country": "PN"}, "model": "embargo.country", "pk": 175}, {"fields": {"country": "PL"}, "model": "embargo.country", "pk": 176}, {"fields": {"country": "PT"}, "model": "embargo.country", "pk": 177}, {"fields": {"country": "PR"}, "model": "embargo.country", "pk": 178}, {"fields": {"country": "QA"}, "model": "embargo.country", "pk": 179}, {"fields": {"country": "RE"}, "model": "embargo.country", "pk": 180}, {"fields": {"country": "RO"}, "model": "embargo.country", "pk": 181}, {"fields": {"country": "RU"}, "model": "embargo.country", "pk": 182}, {"fields": {"country": "RW"}, "model": "embargo.country", "pk": 183}, {"fields": {"country": "BL"}, "model": "embargo.country", "pk": 184}, {"fields": {"country": "SH"}, "model": "embargo.country", "pk": 185}, {"fields": {"country": "KN"}, "model": "embargo.country", "pk": 186}, {"fields": {"country": "LC"}, "model": "embargo.country", "pk": 187}, {"fields": {"country": "MF"}, "model": "embargo.country", "pk": 188}, {"fields": {"country": "PM"}, "model": "embargo.country", "pk": 189}, {"fields": {"country": "VC"}, "model": "embargo.country", "pk": 190}, {"fields": {"country": "WS"}, "model": "embargo.country", "pk": 191}, {"fields": {"country": "SM"}, "model": "embargo.country", "pk": 192}, {"fields": {"country": "ST"}, "model": "embargo.country", "pk": 193}, {"fields": {"country": "SA"}, "model": "embargo.country", "pk": 194}, {"fields": {"country": "SN"}, "model": "embargo.country", "pk": 195}, {"fields": {"country": "RS"}, "model": "embargo.country", "pk": 196}, {"fields": {"country": "SC"}, "model": "embargo.country", "pk": 197}, {"fields": {"country": "SL"}, "model": "embargo.country", "pk": 198}, {"fields": {"country": "SG"}, "model": "embargo.country", "pk": 199}, {"fields": {"country": "SX"}, "model": "embargo.country", "pk": 200}, {"fields": {"country": "SK"}, "model": "embargo.country", "pk": 201}, {"fields": {"country": "SI"}, "model": "embargo.country", "pk": 202}, {"fields": {"country": "SB"}, "model": "embargo.country", "pk": 203}, {"fields": {"country": "SO"}, "model": "embargo.country", "pk": 204}, {"fields": {"country": "ZA"}, "model": "embargo.country", "pk": 205}, {"fields": {"country": "GS"}, "model": "embargo.country", "pk": 206}, {"fields": {"country": "KR"}, "model": "embargo.country", "pk": 207}, {"fields": {"country": "SS"}, "model": "embargo.country", "pk": 208}, {"fields": {"country": "ES"}, "model": "embargo.country", "pk": 209}, {"fields": {"country": "LK"}, "model": "embargo.country", "pk": 210}, {"fields": {"country": "SD"}, "model": "embargo.country", "pk": 211}, {"fields": {"country": "SR"}, "model": "embargo.country", "pk": 212}, {"fields": {"country": "SJ"}, "model": "embargo.country", "pk": 213}, {"fields": {"country": "SZ"}, "model": "embargo.country", "pk": 214}, {"fields": {"country": "SE"}, "model": "embargo.country", "pk": 215}, {"fields": {"country": "CH"}, "model": "embargo.country", "pk": 216}, {"fields": {"country": "SY"}, "model": "embargo.country", "pk": 217}, {"fields": {"country": "TW"}, "model": "embargo.country", "pk": 218}, {"fields": {"country": "TJ"}, "model": "embargo.country", "pk": 219}, {"fields": {"country": "TZ"}, "model": "embargo.country", "pk": 220}, {"fields": {"country": "TH"}, "model": "embargo.country", "pk": 221}, {"fields": {"country": "TL"}, "model": "embargo.country", "pk": 222}, {"fields": {"country": "TG"}, "model": "embargo.country", "pk": 223}, {"fields": {"country": "TK"}, "model": "embargo.country", "pk": 224}, {"fields": {"country": "TO"}, "model": "embargo.country", "pk": 225}, {"fields": {"country": "TT"}, "model": "embargo.country", "pk": 226}, {"fields": {"country": "TN"}, "model": "embargo.country", "pk": 227}, {"fields": {"country": "TR"}, "model": "embargo.country", "pk": 228}, {"fields": {"country": "TM"}, "model": "embargo.country", "pk": 229}, {"fields": {"country": "TC"}, "model": "embargo.country", "pk": 230}, {"fields": {"country": "TV"}, "model": "embargo.country", "pk": 231}, {"fields": {"country": "UG"}, "model": "embargo.country", "pk": 232}, {"fields": {"country": "UA"}, "model": "embargo.country", "pk": 233}, {"fields": {"country": "AE"}, "model": "embargo.country", "pk": 234}, {"fields": {"country": "GB"}, "model": "embargo.country", "pk": 235}, {"fields": {"country": "UM"}, "model": "embargo.country", "pk": 236}, {"fields": {"country": "US"}, "model": "embargo.country", "pk": 237}, {"fields": {"country": "UY"}, "model": "embargo.country", "pk": 238}, {"fields": {"country": "UZ"}, "model": "embargo.country", "pk": 239}, {"fields": {"country": "VU"}, "model": "embargo.country", "pk": 240}, {"fields": {"country": "VE"}, "model": "embargo.country", "pk": 241}, {"fields": {"country": "VN"}, "model": "embargo.country", "pk": 242}, {"fields": {"country": "VG"}, "model": "embargo.country", "pk": 243}, {"fields": {"country": "VI"}, "model": "embargo.country", "pk": 244}, {"fields": {"country": "WF"}, "model": "embargo.country", "pk": 245}, {"fields": {"country": "EH"}, "model": "embargo.country", "pk": 246}, {"fields": {"country": "YE"}, "model": "embargo.country", "pk": 247}, {"fields": {"country": "ZM"}, "model": "embargo.country", "pk": 248}, {"fields": {"country": "ZW"}, "model": "embargo.country", "pk": 249}, {"fields": {"profile_name": "desktop_mp4"}, "model": "edxval.profile", "pk": 1}, {"fields": {"profile_name": "desktop_webm"}, "model": "edxval.profile", "pk": 2}, {"fields": {"profile_name": "mobile_high"}, "model": "edxval.profile", "pk": 3}, {"fields": {"profile_name": "mobile_low"}, "model": "edxval.profile", "pk": 4}, {"fields": {"profile_name": "youtube"}, "model": "edxval.profile", "pk": 5}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"fulfills\"", "modified": "2016-01-22T20:04:36.731Z", "name": "fulfills", "created": "2016-01-22T20:04:36.730Z"}, "model": "milestones.milestonerelationshiptype", "pk": 1}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"requires\"", "modified": "2016-01-22T20:04:36.733Z", "name": "requires", "created": "2016-01-22T20:04:36.733Z"}, "model": "milestones.milestonerelationshiptype", "pk": 2}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 1}, "model": "auth.permission", "pk": 1}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 1}, "model": "auth.permission", "pk": 2}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 1}, "model": "auth.permission", "pk": 3}, {"fields": {"codename": "add_group", "name": "Can add group", "content_type": 2}, "model": "auth.permission", "pk": 4}, {"fields": {"codename": "change_group", "name": "Can change group", "content_type": 2}, "model": "auth.permission", "pk": 5}, {"fields": {"codename": "delete_group", "name": "Can delete group", "content_type": 2}, "model": "auth.permission", "pk": 6}, {"fields": {"codename": "add_user", "name": "Can add user", "content_type": 3}, "model": "auth.permission", "pk": 7}, {"fields": {"codename": "change_user", "name": "Can change user", "content_type": 3}, "model": "auth.permission", "pk": 8}, {"fields": {"codename": "delete_user", "name": "Can delete user", "content_type": 3}, "model": "auth.permission", "pk": 9}, {"fields": {"codename": "add_contenttype", "name": "Can add content type", "content_type": 4}, "model": "auth.permission", "pk": 10}, {"fields": {"codename": "change_contenttype", "name": "Can change content type", "content_type": 4}, "model": "auth.permission", "pk": 11}, {"fields": {"codename": "delete_contenttype", "name": "Can delete content type", "content_type": 4}, "model": "auth.permission", "pk": 12}, {"fields": {"codename": "add_session", "name": "Can add session", "content_type": 5}, "model": "auth.permission", "pk": 13}, {"fields": {"codename": "change_session", "name": "Can change session", "content_type": 5}, "model": "auth.permission", "pk": 14}, {"fields": {"codename": "delete_session", "name": "Can delete session", "content_type": 5}, "model": "auth.permission", "pk": 15}, {"fields": {"codename": "add_site", "name": "Can add site", "content_type": 6}, "model": "auth.permission", "pk": 16}, {"fields": {"codename": "change_site", "name": "Can change site", "content_type": 6}, "model": "auth.permission", "pk": 17}, {"fields": {"codename": "delete_site", "name": "Can delete site", "content_type": 6}, "model": "auth.permission", "pk": 18}, {"fields": {"codename": "add_taskmeta", "name": "Can add task state", "content_type": 7}, "model": "auth.permission", "pk": 19}, {"fields": {"codename": "change_taskmeta", "name": "Can change task state", "content_type": 7}, "model": "auth.permission", "pk": 20}, {"fields": {"codename": "delete_taskmeta", "name": "Can delete task state", "content_type": 7}, "model": "auth.permission", "pk": 21}, {"fields": {"codename": "add_tasksetmeta", "name": "Can add saved group result", "content_type": 8}, "model": "auth.permission", "pk": 22}, {"fields": {"codename": "change_tasksetmeta", "name": "Can change saved group result", "content_type": 8}, "model": "auth.permission", "pk": 23}, {"fields": {"codename": "delete_tasksetmeta", "name": "Can delete saved group result", "content_type": 8}, "model": "auth.permission", "pk": 24}, {"fields": {"codename": "add_intervalschedule", "name": "Can add interval", "content_type": 9}, "model": "auth.permission", "pk": 25}, {"fields": {"codename": "change_intervalschedule", "name": "Can change interval", "content_type": 9}, "model": "auth.permission", "pk": 26}, {"fields": {"codename": "delete_intervalschedule", "name": "Can delete interval", "content_type": 9}, "model": "auth.permission", "pk": 27}, {"fields": {"codename": "add_crontabschedule", "name": "Can add crontab", "content_type": 10}, "model": "auth.permission", "pk": 28}, {"fields": {"codename": "change_crontabschedule", "name": "Can change crontab", "content_type": 10}, "model": "auth.permission", "pk": 29}, {"fields": {"codename": "delete_crontabschedule", "name": "Can delete crontab", "content_type": 10}, "model": "auth.permission", "pk": 30}, {"fields": {"codename": "add_periodictasks", "name": "Can add periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 31}, {"fields": {"codename": "change_periodictasks", "name": "Can change periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 32}, {"fields": {"codename": "delete_periodictasks", "name": "Can delete periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 33}, {"fields": {"codename": "add_periodictask", "name": "Can add periodic task", "content_type": 12}, "model": "auth.permission", "pk": 34}, {"fields": {"codename": "change_periodictask", "name": "Can change periodic task", "content_type": 12}, "model": "auth.permission", "pk": 35}, {"fields": {"codename": "delete_periodictask", "name": "Can delete periodic task", "content_type": 12}, "model": "auth.permission", "pk": 36}, {"fields": {"codename": "add_workerstate", "name": "Can add worker", "content_type": 13}, "model": "auth.permission", "pk": 37}, {"fields": {"codename": "change_workerstate", "name": "Can change worker", "content_type": 13}, "model": "auth.permission", "pk": 38}, {"fields": {"codename": "delete_workerstate", "name": "Can delete worker", "content_type": 13}, "model": "auth.permission", "pk": 39}, {"fields": {"codename": "add_taskstate", "name": "Can add task", "content_type": 14}, "model": "auth.permission", "pk": 40}, {"fields": {"codename": "change_taskstate", "name": "Can change task", "content_type": 14}, "model": "auth.permission", "pk": 41}, {"fields": {"codename": "delete_taskstate", "name": "Can delete task", "content_type": 14}, "model": "auth.permission", "pk": 42}, {"fields": {"codename": "add_globalstatusmessage", "name": "Can add global status message", "content_type": 15}, "model": "auth.permission", "pk": 43}, {"fields": {"codename": "change_globalstatusmessage", "name": "Can change global status message", "content_type": 15}, "model": "auth.permission", "pk": 44}, {"fields": {"codename": "delete_globalstatusmessage", "name": "Can delete global status message", "content_type": 15}, "model": "auth.permission", "pk": 45}, {"fields": {"codename": "add_coursemessage", "name": "Can add course message", "content_type": 16}, "model": "auth.permission", "pk": 46}, {"fields": {"codename": "change_coursemessage", "name": "Can change course message", "content_type": 16}, "model": "auth.permission", "pk": 47}, {"fields": {"codename": "delete_coursemessage", "name": "Can delete course message", "content_type": 16}, "model": "auth.permission", "pk": 48}, {"fields": {"codename": "add_assetbaseurlconfig", "name": "Can add asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 49}, {"fields": {"codename": "change_assetbaseurlconfig", "name": "Can change asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 50}, {"fields": {"codename": "delete_assetbaseurlconfig", "name": "Can delete asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 51}, {"fields": {"codename": "add_studentmodule", "name": "Can add student module", "content_type": 18}, "model": "auth.permission", "pk": 52}, {"fields": {"codename": "change_studentmodule", "name": "Can change student module", "content_type": 18}, "model": "auth.permission", "pk": 53}, {"fields": {"codename": "delete_studentmodule", "name": "Can delete student module", "content_type": 18}, "model": "auth.permission", "pk": 54}, {"fields": {"codename": "add_studentmodulehistory", "name": "Can add student module history", "content_type": 19}, "model": "auth.permission", "pk": 55}, {"fields": {"codename": "change_studentmodulehistory", "name": "Can change student module history", "content_type": 19}, "model": "auth.permission", "pk": 56}, {"fields": {"codename": "delete_studentmodulehistory", "name": "Can delete student module history", "content_type": 19}, "model": "auth.permission", "pk": 57}, {"fields": {"codename": "add_xmoduleuserstatesummaryfield", "name": "Can add x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 58}, {"fields": {"codename": "change_xmoduleuserstatesummaryfield", "name": "Can change x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 59}, {"fields": {"codename": "delete_xmoduleuserstatesummaryfield", "name": "Can delete x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 60}, {"fields": {"codename": "add_xmodulestudentprefsfield", "name": "Can add x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 61}, {"fields": {"codename": "change_xmodulestudentprefsfield", "name": "Can change x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 62}, {"fields": {"codename": "delete_xmodulestudentprefsfield", "name": "Can delete x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 63}, {"fields": {"codename": "add_xmodulestudentinfofield", "name": "Can add x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 64}, {"fields": {"codename": "change_xmodulestudentinfofield", "name": "Can change x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 65}, {"fields": {"codename": "delete_xmodulestudentinfofield", "name": "Can delete x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 66}, {"fields": {"codename": "add_offlinecomputedgrade", "name": "Can add offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 67}, {"fields": {"codename": "change_offlinecomputedgrade", "name": "Can change offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 68}, {"fields": {"codename": "delete_offlinecomputedgrade", "name": "Can delete offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 69}, {"fields": {"codename": "add_offlinecomputedgradelog", "name": "Can add offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 70}, {"fields": {"codename": "change_offlinecomputedgradelog", "name": "Can change offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 71}, {"fields": {"codename": "delete_offlinecomputedgradelog", "name": "Can delete offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 72}, {"fields": {"codename": "add_studentfieldoverride", "name": "Can add student field override", "content_type": 25}, "model": "auth.permission", "pk": 73}, {"fields": {"codename": "change_studentfieldoverride", "name": "Can change student field override", "content_type": 25}, "model": "auth.permission", "pk": 74}, {"fields": {"codename": "delete_studentfieldoverride", "name": "Can delete student field override", "content_type": 25}, "model": "auth.permission", "pk": 75}, {"fields": {"codename": "add_anonymoususerid", "name": "Can add anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 76}, {"fields": {"codename": "change_anonymoususerid", "name": "Can change anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 77}, {"fields": {"codename": "delete_anonymoususerid", "name": "Can delete anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 78}, {"fields": {"codename": "add_userstanding", "name": "Can add user standing", "content_type": 27}, "model": "auth.permission", "pk": 79}, {"fields": {"codename": "change_userstanding", "name": "Can change user standing", "content_type": 27}, "model": "auth.permission", "pk": 80}, {"fields": {"codename": "delete_userstanding", "name": "Can delete user standing", "content_type": 27}, "model": "auth.permission", "pk": 81}, {"fields": {"codename": "add_userprofile", "name": "Can add user profile", "content_type": 28}, "model": "auth.permission", "pk": 82}, {"fields": {"codename": "change_userprofile", "name": "Can change user profile", "content_type": 28}, "model": "auth.permission", "pk": 83}, {"fields": {"codename": "delete_userprofile", "name": "Can delete user profile", "content_type": 28}, "model": "auth.permission", "pk": 84}, {"fields": {"codename": "add_usersignupsource", "name": "Can add user signup source", "content_type": 29}, "model": "auth.permission", "pk": 85}, {"fields": {"codename": "change_usersignupsource", "name": "Can change user signup source", "content_type": 29}, "model": "auth.permission", "pk": 86}, {"fields": {"codename": "delete_usersignupsource", "name": "Can delete user signup source", "content_type": 29}, "model": "auth.permission", "pk": 87}, {"fields": {"codename": "add_usertestgroup", "name": "Can add user test group", "content_type": 30}, "model": "auth.permission", "pk": 88}, {"fields": {"codename": "change_usertestgroup", "name": "Can change user test group", "content_type": 30}, "model": "auth.permission", "pk": 89}, {"fields": {"codename": "delete_usertestgroup", "name": "Can delete user test group", "content_type": 30}, "model": "auth.permission", "pk": 90}, {"fields": {"codename": "add_registration", "name": "Can add registration", "content_type": 31}, "model": "auth.permission", "pk": 91}, {"fields": {"codename": "change_registration", "name": "Can change registration", "content_type": 31}, "model": "auth.permission", "pk": 92}, {"fields": {"codename": "delete_registration", "name": "Can delete registration", "content_type": 31}, "model": "auth.permission", "pk": 93}, {"fields": {"codename": "add_pendingnamechange", "name": "Can add pending name change", "content_type": 32}, "model": "auth.permission", "pk": 94}, {"fields": {"codename": "change_pendingnamechange", "name": "Can change pending name change", "content_type": 32}, "model": "auth.permission", "pk": 95}, {"fields": {"codename": "delete_pendingnamechange", "name": "Can delete pending name change", "content_type": 32}, "model": "auth.permission", "pk": 96}, {"fields": {"codename": "add_pendingemailchange", "name": "Can add pending email change", "content_type": 33}, "model": "auth.permission", "pk": 97}, {"fields": {"codename": "change_pendingemailchange", "name": "Can change pending email change", "content_type": 33}, "model": "auth.permission", "pk": 98}, {"fields": {"codename": "delete_pendingemailchange", "name": "Can delete pending email change", "content_type": 33}, "model": "auth.permission", "pk": 99}, {"fields": {"codename": "add_passwordhistory", "name": "Can add password history", "content_type": 34}, "model": "auth.permission", "pk": 100}, {"fields": {"codename": "change_passwordhistory", "name": "Can change password history", "content_type": 34}, "model": "auth.permission", "pk": 101}, {"fields": {"codename": "delete_passwordhistory", "name": "Can delete password history", "content_type": 34}, "model": "auth.permission", "pk": 102}, {"fields": {"codename": "add_loginfailures", "name": "Can add login failures", "content_type": 35}, "model": "auth.permission", "pk": 103}, {"fields": {"codename": "change_loginfailures", "name": "Can change login failures", "content_type": 35}, "model": "auth.permission", "pk": 104}, {"fields": {"codename": "delete_loginfailures", "name": "Can delete login failures", "content_type": 35}, "model": "auth.permission", "pk": 105}, {"fields": {"codename": "add_historicalcourseenrollment", "name": "Can add historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 106}, {"fields": {"codename": "change_historicalcourseenrollment", "name": "Can change historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 107}, {"fields": {"codename": "delete_historicalcourseenrollment", "name": "Can delete historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 108}, {"fields": {"codename": "add_courseenrollment", "name": "Can add course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 109}, {"fields": {"codename": "change_courseenrollment", "name": "Can change course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 110}, {"fields": {"codename": "delete_courseenrollment", "name": "Can delete course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 111}, {"fields": {"codename": "add_manualenrollmentaudit", "name": "Can add manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 112}, {"fields": {"codename": "change_manualenrollmentaudit", "name": "Can change manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 113}, {"fields": {"codename": "delete_manualenrollmentaudit", "name": "Can delete manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 114}, {"fields": {"codename": "add_courseenrollmentallowed", "name": "Can add course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 115}, {"fields": {"codename": "change_courseenrollmentallowed", "name": "Can change course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 116}, {"fields": {"codename": "delete_courseenrollmentallowed", "name": "Can delete course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 117}, {"fields": {"codename": "add_courseaccessrole", "name": "Can add course access role", "content_type": 40}, "model": "auth.permission", "pk": 118}, {"fields": {"codename": "change_courseaccessrole", "name": "Can change course access role", "content_type": 40}, "model": "auth.permission", "pk": 119}, {"fields": {"codename": "delete_courseaccessrole", "name": "Can delete course access role", "content_type": 40}, "model": "auth.permission", "pk": 120}, {"fields": {"codename": "add_dashboardconfiguration", "name": "Can add dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 121}, {"fields": {"codename": "change_dashboardconfiguration", "name": "Can change dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 122}, {"fields": {"codename": "delete_dashboardconfiguration", "name": "Can delete dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 123}, {"fields": {"codename": "add_linkedinaddtoprofileconfiguration", "name": "Can add linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 124}, {"fields": {"codename": "change_linkedinaddtoprofileconfiguration", "name": "Can change linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 125}, {"fields": {"codename": "delete_linkedinaddtoprofileconfiguration", "name": "Can delete linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 126}, {"fields": {"codename": "add_entranceexamconfiguration", "name": "Can add entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 127}, {"fields": {"codename": "change_entranceexamconfiguration", "name": "Can change entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 128}, {"fields": {"codename": "delete_entranceexamconfiguration", "name": "Can delete entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 129}, {"fields": {"codename": "add_languageproficiency", "name": "Can add language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 130}, {"fields": {"codename": "change_languageproficiency", "name": "Can change language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 131}, {"fields": {"codename": "delete_languageproficiency", "name": "Can delete language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 132}, {"fields": {"codename": "add_courseenrollmentattribute", "name": "Can add course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 133}, {"fields": {"codename": "change_courseenrollmentattribute", "name": "Can change course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 134}, {"fields": {"codename": "delete_courseenrollmentattribute", "name": "Can delete course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 135}, {"fields": {"codename": "add_enrollmentrefundconfiguration", "name": "Can add enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 136}, {"fields": {"codename": "change_enrollmentrefundconfiguration", "name": "Can change enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 137}, {"fields": {"codename": "delete_enrollmentrefundconfiguration", "name": "Can delete enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 138}, {"fields": {"codename": "add_trackinglog", "name": "Can add tracking log", "content_type": 47}, "model": "auth.permission", "pk": 139}, {"fields": {"codename": "change_trackinglog", "name": "Can change tracking log", "content_type": 47}, "model": "auth.permission", "pk": 140}, {"fields": {"codename": "delete_trackinglog", "name": "Can delete tracking log", "content_type": 47}, "model": "auth.permission", "pk": 141}, {"fields": {"codename": "add_ratelimitconfiguration", "name": "Can add rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 142}, {"fields": {"codename": "change_ratelimitconfiguration", "name": "Can change rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 143}, {"fields": {"codename": "delete_ratelimitconfiguration", "name": "Can delete rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 144}, {"fields": {"codename": "add_certificatewhitelist", "name": "Can add certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 145}, {"fields": {"codename": "change_certificatewhitelist", "name": "Can change certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 146}, {"fields": {"codename": "delete_certificatewhitelist", "name": "Can delete certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 147}, {"fields": {"codename": "add_generatedcertificate", "name": "Can add generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 148}, {"fields": {"codename": "change_generatedcertificate", "name": "Can change generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 149}, {"fields": {"codename": "delete_generatedcertificate", "name": "Can delete generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 150}, {"fields": {"codename": "add_certificategenerationhistory", "name": "Can add certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 151}, {"fields": {"codename": "change_certificategenerationhistory", "name": "Can change certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 152}, {"fields": {"codename": "delete_certificategenerationhistory", "name": "Can delete certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 153}, {"fields": {"codename": "add_certificateinvalidation", "name": "Can add certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 154}, {"fields": {"codename": "change_certificateinvalidation", "name": "Can change certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 155}, {"fields": {"codename": "delete_certificateinvalidation", "name": "Can delete certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 156}, {"fields": {"codename": "add_examplecertificateset", "name": "Can add example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 157}, {"fields": {"codename": "change_examplecertificateset", "name": "Can change example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 158}, {"fields": {"codename": "delete_examplecertificateset", "name": "Can delete example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 159}, {"fields": {"codename": "add_examplecertificate", "name": "Can add example certificate", "content_type": 54}, "model": "auth.permission", "pk": 160}, {"fields": {"codename": "change_examplecertificate", "name": "Can change example certificate", "content_type": 54}, "model": "auth.permission", "pk": 161}, {"fields": {"codename": "delete_examplecertificate", "name": "Can delete example certificate", "content_type": 54}, "model": "auth.permission", "pk": 162}, {"fields": {"codename": "add_certificategenerationcoursesetting", "name": "Can add certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 163}, {"fields": {"codename": "change_certificategenerationcoursesetting", "name": "Can change certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 164}, {"fields": {"codename": "delete_certificategenerationcoursesetting", "name": "Can delete certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 165}, {"fields": {"codename": "add_certificategenerationconfiguration", "name": "Can add certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 166}, {"fields": {"codename": "change_certificategenerationconfiguration", "name": "Can change certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 167}, {"fields": {"codename": "delete_certificategenerationconfiguration", "name": "Can delete certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 168}, {"fields": {"codename": "add_certificatehtmlviewconfiguration", "name": "Can add certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 169}, {"fields": {"codename": "change_certificatehtmlviewconfiguration", "name": "Can change certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 170}, {"fields": {"codename": "delete_certificatehtmlviewconfiguration", "name": "Can delete certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 171}, {"fields": {"codename": "add_badgeassertion", "name": "Can add badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 172}, {"fields": {"codename": "change_badgeassertion", "name": "Can change badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 173}, {"fields": {"codename": "delete_badgeassertion", "name": "Can delete badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 174}, {"fields": {"codename": "add_badgeimageconfiguration", "name": "Can add badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 175}, {"fields": {"codename": "change_badgeimageconfiguration", "name": "Can change badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 176}, {"fields": {"codename": "delete_badgeimageconfiguration", "name": "Can delete badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 177}, {"fields": {"codename": "add_certificatetemplate", "name": "Can add certificate template", "content_type": 60}, "model": "auth.permission", "pk": 178}, {"fields": {"codename": "change_certificatetemplate", "name": "Can change certificate template", "content_type": 60}, "model": "auth.permission", "pk": 179}, {"fields": {"codename": "delete_certificatetemplate", "name": "Can delete certificate template", "content_type": 60}, "model": "auth.permission", "pk": 180}, {"fields": {"codename": "add_certificatetemplateasset", "name": "Can add certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 181}, {"fields": {"codename": "change_certificatetemplateasset", "name": "Can change certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 182}, {"fields": {"codename": "delete_certificatetemplateasset", "name": "Can delete certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 183}, {"fields": {"codename": "add_instructortask", "name": "Can add instructor task", "content_type": 62}, "model": "auth.permission", "pk": 184}, {"fields": {"codename": "change_instructortask", "name": "Can change instructor task", "content_type": 62}, "model": "auth.permission", "pk": 185}, {"fields": {"codename": "delete_instructortask", "name": "Can delete instructor task", "content_type": 62}, "model": "auth.permission", "pk": 186}, {"fields": {"codename": "add_courseusergroup", "name": "Can add course user group", "content_type": 63}, "model": "auth.permission", "pk": 187}, {"fields": {"codename": "change_courseusergroup", "name": "Can change course user group", "content_type": 63}, "model": "auth.permission", "pk": 188}, {"fields": {"codename": "delete_courseusergroup", "name": "Can delete course user group", "content_type": 63}, "model": "auth.permission", "pk": 189}, {"fields": {"codename": "add_cohortmembership", "name": "Can add cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 190}, {"fields": {"codename": "change_cohortmembership", "name": "Can change cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 191}, {"fields": {"codename": "delete_cohortmembership", "name": "Can delete cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 192}, {"fields": {"codename": "add_courseusergrouppartitiongroup", "name": "Can add course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 193}, {"fields": {"codename": "change_courseusergrouppartitiongroup", "name": "Can change course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 194}, {"fields": {"codename": "delete_courseusergrouppartitiongroup", "name": "Can delete course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 195}, {"fields": {"codename": "add_coursecohortssettings", "name": "Can add course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 196}, {"fields": {"codename": "change_coursecohortssettings", "name": "Can change course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 197}, {"fields": {"codename": "delete_coursecohortssettings", "name": "Can delete course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 198}, {"fields": {"codename": "add_coursecohort", "name": "Can add course cohort", "content_type": 67}, "model": "auth.permission", "pk": 199}, {"fields": {"codename": "change_coursecohort", "name": "Can change course cohort", "content_type": 67}, "model": "auth.permission", "pk": 200}, {"fields": {"codename": "delete_coursecohort", "name": "Can delete course cohort", "content_type": 67}, "model": "auth.permission", "pk": 201}, {"fields": {"codename": "add_courseemail", "name": "Can add course email", "content_type": 68}, "model": "auth.permission", "pk": 202}, {"fields": {"codename": "change_courseemail", "name": "Can change course email", "content_type": 68}, "model": "auth.permission", "pk": 203}, {"fields": {"codename": "delete_courseemail", "name": "Can delete course email", "content_type": 68}, "model": "auth.permission", "pk": 204}, {"fields": {"codename": "add_optout", "name": "Can add optout", "content_type": 69}, "model": "auth.permission", "pk": 205}, {"fields": {"codename": "change_optout", "name": "Can change optout", "content_type": 69}, "model": "auth.permission", "pk": 206}, {"fields": {"codename": "delete_optout", "name": "Can delete optout", "content_type": 69}, "model": "auth.permission", "pk": 207}, {"fields": {"codename": "add_courseemailtemplate", "name": "Can add course email template", "content_type": 70}, "model": "auth.permission", "pk": 208}, {"fields": {"codename": "change_courseemailtemplate", "name": "Can change course email template", "content_type": 70}, "model": "auth.permission", "pk": 209}, {"fields": {"codename": "delete_courseemailtemplate", "name": "Can delete course email template", "content_type": 70}, "model": "auth.permission", "pk": 210}, {"fields": {"codename": "add_courseauthorization", "name": "Can add course authorization", "content_type": 71}, "model": "auth.permission", "pk": 211}, {"fields": {"codename": "change_courseauthorization", "name": "Can change course authorization", "content_type": 71}, "model": "auth.permission", "pk": 212}, {"fields": {"codename": "delete_courseauthorization", "name": "Can delete course authorization", "content_type": 71}, "model": "auth.permission", "pk": 213}, {"fields": {"codename": "add_brandinginfoconfig", "name": "Can add branding info config", "content_type": 72}, "model": "auth.permission", "pk": 214}, {"fields": {"codename": "change_brandinginfoconfig", "name": "Can change branding info config", "content_type": 72}, "model": "auth.permission", "pk": 215}, {"fields": {"codename": "delete_brandinginfoconfig", "name": "Can delete branding info config", "content_type": 72}, "model": "auth.permission", "pk": 216}, {"fields": {"codename": "add_brandingapiconfig", "name": "Can add branding api config", "content_type": 73}, "model": "auth.permission", "pk": 217}, {"fields": {"codename": "change_brandingapiconfig", "name": "Can change branding api config", "content_type": 73}, "model": "auth.permission", "pk": 218}, {"fields": {"codename": "delete_brandingapiconfig", "name": "Can delete branding api config", "content_type": 73}, "model": "auth.permission", "pk": 219}, {"fields": {"codename": "add_externalauthmap", "name": "Can add external auth map", "content_type": 74}, "model": "auth.permission", "pk": 220}, {"fields": {"codename": "change_externalauthmap", "name": "Can change external auth map", "content_type": 74}, "model": "auth.permission", "pk": 221}, {"fields": {"codename": "delete_externalauthmap", "name": "Can delete external auth map", "content_type": 74}, "model": "auth.permission", "pk": 222}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 75}, "model": "auth.permission", "pk": 223}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 75}, "model": "auth.permission", "pk": 224}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 75}, "model": "auth.permission", "pk": 225}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 76}, "model": "auth.permission", "pk": 226}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 76}, "model": "auth.permission", "pk": 227}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 76}, "model": "auth.permission", "pk": 228}, {"fields": {"codename": "add_useropenid", "name": "Can add user open id", "content_type": 77}, "model": "auth.permission", "pk": 229}, {"fields": {"codename": "change_useropenid", "name": "Can change user open id", "content_type": 77}, "model": "auth.permission", "pk": 230}, {"fields": {"codename": "delete_useropenid", "name": "Can delete user open id", "content_type": 77}, "model": "auth.permission", "pk": 231}, {"fields": {"codename": "account_verified", "name": "The OpenID has been verified", "content_type": 77}, "model": "auth.permission", "pk": 232}, {"fields": {"codename": "add_client", "name": "Can add client", "content_type": 78}, "model": "auth.permission", "pk": 233}, {"fields": {"codename": "change_client", "name": "Can change client", "content_type": 78}, "model": "auth.permission", "pk": 234}, {"fields": {"codename": "delete_client", "name": "Can delete client", "content_type": 78}, "model": "auth.permission", "pk": 235}, {"fields": {"codename": "add_grant", "name": "Can add grant", "content_type": 79}, "model": "auth.permission", "pk": 236}, {"fields": {"codename": "change_grant", "name": "Can change grant", "content_type": 79}, "model": "auth.permission", "pk": 237}, {"fields": {"codename": "delete_grant", "name": "Can delete grant", "content_type": 79}, "model": "auth.permission", "pk": 238}, {"fields": {"codename": "add_accesstoken", "name": "Can add access token", "content_type": 80}, "model": "auth.permission", "pk": 239}, {"fields": {"codename": "change_accesstoken", "name": "Can change access token", "content_type": 80}, "model": "auth.permission", "pk": 240}, {"fields": {"codename": "delete_accesstoken", "name": "Can delete access token", "content_type": 80}, "model": "auth.permission", "pk": 241}, {"fields": {"codename": "add_refreshtoken", "name": "Can add refresh token", "content_type": 81}, "model": "auth.permission", "pk": 242}, {"fields": {"codename": "change_refreshtoken", "name": "Can change refresh token", "content_type": 81}, "model": "auth.permission", "pk": 243}, {"fields": {"codename": "delete_refreshtoken", "name": "Can delete refresh token", "content_type": 81}, "model": "auth.permission", "pk": 244}, {"fields": {"codename": "add_trustedclient", "name": "Can add trusted client", "content_type": 82}, "model": "auth.permission", "pk": 245}, {"fields": {"codename": "change_trustedclient", "name": "Can change trusted client", "content_type": 82}, "model": "auth.permission", "pk": 246}, {"fields": {"codename": "delete_trustedclient", "name": "Can delete trusted client", "content_type": 82}, "model": "auth.permission", "pk": 247}, {"fields": {"codename": "add_oauth2providerconfig", "name": "Can add Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 248}, {"fields": {"codename": "change_oauth2providerconfig", "name": "Can change Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 249}, {"fields": {"codename": "delete_oauth2providerconfig", "name": "Can delete Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 250}, {"fields": {"codename": "add_samlproviderconfig", "name": "Can add Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 251}, {"fields": {"codename": "change_samlproviderconfig", "name": "Can change Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 252}, {"fields": {"codename": "delete_samlproviderconfig", "name": "Can delete Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 253}, {"fields": {"codename": "add_samlconfiguration", "name": "Can add SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 254}, {"fields": {"codename": "change_samlconfiguration", "name": "Can change SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 255}, {"fields": {"codename": "delete_samlconfiguration", "name": "Can delete SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 256}, {"fields": {"codename": "add_samlproviderdata", "name": "Can add SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 257}, {"fields": {"codename": "change_samlproviderdata", "name": "Can change SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 258}, {"fields": {"codename": "delete_samlproviderdata", "name": "Can delete SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 259}, {"fields": {"codename": "add_ltiproviderconfig", "name": "Can add Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 260}, {"fields": {"codename": "change_ltiproviderconfig", "name": "Can change Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 261}, {"fields": {"codename": "delete_ltiproviderconfig", "name": "Can delete Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 262}, {"fields": {"codename": "add_providerapipermissions", "name": "Can add Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 263}, {"fields": {"codename": "change_providerapipermissions", "name": "Can change Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 264}, {"fields": {"codename": "delete_providerapipermissions", "name": "Can delete Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 265}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 89}, "model": "auth.permission", "pk": 266}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 89}, "model": "auth.permission", "pk": 267}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 89}, "model": "auth.permission", "pk": 268}, {"fields": {"codename": "add_scope", "name": "Can add scope", "content_type": 90}, "model": "auth.permission", "pk": 269}, {"fields": {"codename": "change_scope", "name": "Can change scope", "content_type": 90}, "model": "auth.permission", "pk": 270}, {"fields": {"codename": "delete_scope", "name": "Can delete scope", "content_type": 90}, "model": "auth.permission", "pk": 271}, {"fields": {"codename": "add_resource", "name": "Can add resource", "content_type": 90}, "model": "auth.permission", "pk": 272}, {"fields": {"codename": "change_resource", "name": "Can change resource", "content_type": 90}, "model": "auth.permission", "pk": 273}, {"fields": {"codename": "delete_resource", "name": "Can delete resource", "content_type": 90}, "model": "auth.permission", "pk": 274}, {"fields": {"codename": "add_consumer", "name": "Can add consumer", "content_type": 91}, "model": "auth.permission", "pk": 275}, {"fields": {"codename": "change_consumer", "name": "Can change consumer", "content_type": 91}, "model": "auth.permission", "pk": 276}, {"fields": {"codename": "delete_consumer", "name": "Can delete consumer", "content_type": 91}, "model": "auth.permission", "pk": 277}, {"fields": {"codename": "add_token", "name": "Can add token", "content_type": 92}, "model": "auth.permission", "pk": 278}, {"fields": {"codename": "change_token", "name": "Can change token", "content_type": 92}, "model": "auth.permission", "pk": 279}, {"fields": {"codename": "delete_token", "name": "Can delete token", "content_type": 92}, "model": "auth.permission", "pk": 280}, {"fields": {"codename": "add_article", "name": "Can add article", "content_type": 94}, "model": "auth.permission", "pk": 281}, {"fields": {"codename": "change_article", "name": "Can change article", "content_type": 94}, "model": "auth.permission", "pk": 282}, {"fields": {"codename": "delete_article", "name": "Can delete article", "content_type": 94}, "model": "auth.permission", "pk": 283}, {"fields": {"codename": "moderate", "name": "Can edit all articles and lock/unlock/restore", "content_type": 94}, "model": "auth.permission", "pk": 284}, {"fields": {"codename": "assign", "name": "Can change ownership of any article", "content_type": 94}, "model": "auth.permission", "pk": 285}, {"fields": {"codename": "grant", "name": "Can assign permissions to other users", "content_type": 94}, "model": "auth.permission", "pk": 286}, {"fields": {"codename": "add_articleforobject", "name": "Can add Article for object", "content_type": 95}, "model": "auth.permission", "pk": 287}, {"fields": {"codename": "change_articleforobject", "name": "Can change Article for object", "content_type": 95}, "model": "auth.permission", "pk": 288}, {"fields": {"codename": "delete_articleforobject", "name": "Can delete Article for object", "content_type": 95}, "model": "auth.permission", "pk": 289}, {"fields": {"codename": "add_articlerevision", "name": "Can add article revision", "content_type": 96}, "model": "auth.permission", "pk": 290}, {"fields": {"codename": "change_articlerevision", "name": "Can change article revision", "content_type": 96}, "model": "auth.permission", "pk": 291}, {"fields": {"codename": "delete_articlerevision", "name": "Can delete article revision", "content_type": 96}, "model": "auth.permission", "pk": 292}, {"fields": {"codename": "add_urlpath", "name": "Can add URL path", "content_type": 97}, "model": "auth.permission", "pk": 293}, {"fields": {"codename": "change_urlpath", "name": "Can change URL path", "content_type": 97}, "model": "auth.permission", "pk": 294}, {"fields": {"codename": "delete_urlpath", "name": "Can delete URL path", "content_type": 97}, "model": "auth.permission", "pk": 295}, {"fields": {"codename": "add_articleplugin", "name": "Can add article plugin", "content_type": 98}, "model": "auth.permission", "pk": 296}, {"fields": {"codename": "change_articleplugin", "name": "Can change article plugin", "content_type": 98}, "model": "auth.permission", "pk": 297}, {"fields": {"codename": "delete_articleplugin", "name": "Can delete article plugin", "content_type": 98}, "model": "auth.permission", "pk": 298}, {"fields": {"codename": "add_reusableplugin", "name": "Can add reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 299}, {"fields": {"codename": "change_reusableplugin", "name": "Can change reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 300}, {"fields": {"codename": "delete_reusableplugin", "name": "Can delete reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 301}, {"fields": {"codename": "add_simpleplugin", "name": "Can add simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 302}, {"fields": {"codename": "change_simpleplugin", "name": "Can change simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 303}, {"fields": {"codename": "delete_simpleplugin", "name": "Can delete simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 304}, {"fields": {"codename": "add_revisionplugin", "name": "Can add revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 305}, {"fields": {"codename": "change_revisionplugin", "name": "Can change revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 306}, {"fields": {"codename": "delete_revisionplugin", "name": "Can delete revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 307}, {"fields": {"codename": "add_revisionpluginrevision", "name": "Can add revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 308}, {"fields": {"codename": "change_revisionpluginrevision", "name": "Can change revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 309}, {"fields": {"codename": "delete_revisionpluginrevision", "name": "Can delete revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 310}, {"fields": {"codename": "add_image", "name": "Can add image", "content_type": 103}, "model": "auth.permission", "pk": 311}, {"fields": {"codename": "change_image", "name": "Can change image", "content_type": 103}, "model": "auth.permission", "pk": 312}, {"fields": {"codename": "delete_image", "name": "Can delete image", "content_type": 103}, "model": "auth.permission", "pk": 313}, {"fields": {"codename": "add_imagerevision", "name": "Can add image revision", "content_type": 104}, "model": "auth.permission", "pk": 314}, {"fields": {"codename": "change_imagerevision", "name": "Can change image revision", "content_type": 104}, "model": "auth.permission", "pk": 315}, {"fields": {"codename": "delete_imagerevision", "name": "Can delete image revision", "content_type": 104}, "model": "auth.permission", "pk": 316}, {"fields": {"codename": "add_attachment", "name": "Can add attachment", "content_type": 105}, "model": "auth.permission", "pk": 317}, {"fields": {"codename": "change_attachment", "name": "Can change attachment", "content_type": 105}, "model": "auth.permission", "pk": 318}, {"fields": {"codename": "delete_attachment", "name": "Can delete attachment", "content_type": 105}, "model": "auth.permission", "pk": 319}, {"fields": {"codename": "add_attachmentrevision", "name": "Can add attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 320}, {"fields": {"codename": "change_attachmentrevision", "name": "Can change attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 321}, {"fields": {"codename": "delete_attachmentrevision", "name": "Can delete attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 322}, {"fields": {"codename": "add_notificationtype", "name": "Can add type", "content_type": 107}, "model": "auth.permission", "pk": 323}, {"fields": {"codename": "change_notificationtype", "name": "Can change type", "content_type": 107}, "model": "auth.permission", "pk": 324}, {"fields": {"codename": "delete_notificationtype", "name": "Can delete type", "content_type": 107}, "model": "auth.permission", "pk": 325}, {"fields": {"codename": "add_settings", "name": "Can add settings", "content_type": 108}, "model": "auth.permission", "pk": 326}, {"fields": {"codename": "change_settings", "name": "Can change settings", "content_type": 108}, "model": "auth.permission", "pk": 327}, {"fields": {"codename": "delete_settings", "name": "Can delete settings", "content_type": 108}, "model": "auth.permission", "pk": 328}, {"fields": {"codename": "add_subscription", "name": "Can add subscription", "content_type": 109}, "model": "auth.permission", "pk": 329}, {"fields": {"codename": "change_subscription", "name": "Can change subscription", "content_type": 109}, "model": "auth.permission", "pk": 330}, {"fields": {"codename": "delete_subscription", "name": "Can delete subscription", "content_type": 109}, "model": "auth.permission", "pk": 331}, {"fields": {"codename": "add_notification", "name": "Can add notification", "content_type": 110}, "model": "auth.permission", "pk": 332}, {"fields": {"codename": "change_notification", "name": "Can change notification", "content_type": 110}, "model": "auth.permission", "pk": 333}, {"fields": {"codename": "delete_notification", "name": "Can delete notification", "content_type": 110}, "model": "auth.permission", "pk": 334}, {"fields": {"codename": "add_logentry", "name": "Can add log entry", "content_type": 111}, "model": "auth.permission", "pk": 335}, {"fields": {"codename": "change_logentry", "name": "Can change log entry", "content_type": 111}, "model": "auth.permission", "pk": 336}, {"fields": {"codename": "delete_logentry", "name": "Can delete log entry", "content_type": 111}, "model": "auth.permission", "pk": 337}, {"fields": {"codename": "add_role", "name": "Can add role", "content_type": 112}, "model": "auth.permission", "pk": 338}, {"fields": {"codename": "change_role", "name": "Can change role", "content_type": 112}, "model": "auth.permission", "pk": 339}, {"fields": {"codename": "delete_role", "name": "Can delete role", "content_type": 112}, "model": "auth.permission", "pk": 340}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 113}, "model": "auth.permission", "pk": 341}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 113}, "model": "auth.permission", "pk": 342}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 113}, "model": "auth.permission", "pk": 343}, {"fields": {"codename": "add_note", "name": "Can add note", "content_type": 114}, "model": "auth.permission", "pk": 344}, {"fields": {"codename": "change_note", "name": "Can change note", "content_type": 114}, "model": "auth.permission", "pk": 345}, {"fields": {"codename": "delete_note", "name": "Can delete note", "content_type": 114}, "model": "auth.permission", "pk": 346}, {"fields": {"codename": "add_splashconfig", "name": "Can add splash config", "content_type": 115}, "model": "auth.permission", "pk": 347}, {"fields": {"codename": "change_splashconfig", "name": "Can change splash config", "content_type": 115}, "model": "auth.permission", "pk": 348}, {"fields": {"codename": "delete_splashconfig", "name": "Can delete splash config", "content_type": 115}, "model": "auth.permission", "pk": 349}, {"fields": {"codename": "add_userpreference", "name": "Can add user preference", "content_type": 116}, "model": "auth.permission", "pk": 350}, {"fields": {"codename": "change_userpreference", "name": "Can change user preference", "content_type": 116}, "model": "auth.permission", "pk": 351}, {"fields": {"codename": "delete_userpreference", "name": "Can delete user preference", "content_type": 116}, "model": "auth.permission", "pk": 352}, {"fields": {"codename": "add_usercoursetag", "name": "Can add user course tag", "content_type": 117}, "model": "auth.permission", "pk": 353}, {"fields": {"codename": "change_usercoursetag", "name": "Can change user course tag", "content_type": 117}, "model": "auth.permission", "pk": 354}, {"fields": {"codename": "delete_usercoursetag", "name": "Can delete user course tag", "content_type": 117}, "model": "auth.permission", "pk": 355}, {"fields": {"codename": "add_userorgtag", "name": "Can add user org tag", "content_type": 118}, "model": "auth.permission", "pk": 356}, {"fields": {"codename": "change_userorgtag", "name": "Can change user org tag", "content_type": 118}, "model": "auth.permission", "pk": 357}, {"fields": {"codename": "delete_userorgtag", "name": "Can delete user org tag", "content_type": 118}, "model": "auth.permission", "pk": 358}, {"fields": {"codename": "add_order", "name": "Can add order", "content_type": 119}, "model": "auth.permission", "pk": 359}, {"fields": {"codename": "change_order", "name": "Can change order", "content_type": 119}, "model": "auth.permission", "pk": 360}, {"fields": {"codename": "delete_order", "name": "Can delete order", "content_type": 119}, "model": "auth.permission", "pk": 361}, {"fields": {"codename": "add_orderitem", "name": "Can add order item", "content_type": 120}, "model": "auth.permission", "pk": 362}, {"fields": {"codename": "change_orderitem", "name": "Can change order item", "content_type": 120}, "model": "auth.permission", "pk": 363}, {"fields": {"codename": "delete_orderitem", "name": "Can delete order item", "content_type": 120}, "model": "auth.permission", "pk": 364}, {"fields": {"codename": "add_invoice", "name": "Can add invoice", "content_type": 121}, "model": "auth.permission", "pk": 365}, {"fields": {"codename": "change_invoice", "name": "Can change invoice", "content_type": 121}, "model": "auth.permission", "pk": 366}, {"fields": {"codename": "delete_invoice", "name": "Can delete invoice", "content_type": 121}, "model": "auth.permission", "pk": 367}, {"fields": {"codename": "add_invoicetransaction", "name": "Can add invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 368}, {"fields": {"codename": "change_invoicetransaction", "name": "Can change invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 369}, {"fields": {"codename": "delete_invoicetransaction", "name": "Can delete invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 370}, {"fields": {"codename": "add_invoiceitem", "name": "Can add invoice item", "content_type": 123}, "model": "auth.permission", "pk": 371}, {"fields": {"codename": "change_invoiceitem", "name": "Can change invoice item", "content_type": 123}, "model": "auth.permission", "pk": 372}, {"fields": {"codename": "delete_invoiceitem", "name": "Can delete invoice item", "content_type": 123}, "model": "auth.permission", "pk": 373}, {"fields": {"codename": "add_courseregistrationcodeinvoiceitem", "name": "Can add course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 374}, {"fields": {"codename": "change_courseregistrationcodeinvoiceitem", "name": "Can change course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 375}, {"fields": {"codename": "delete_courseregistrationcodeinvoiceitem", "name": "Can delete course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 376}, {"fields": {"codename": "add_invoicehistory", "name": "Can add invoice history", "content_type": 125}, "model": "auth.permission", "pk": 377}, {"fields": {"codename": "change_invoicehistory", "name": "Can change invoice history", "content_type": 125}, "model": "auth.permission", "pk": 378}, {"fields": {"codename": "delete_invoicehistory", "name": "Can delete invoice history", "content_type": 125}, "model": "auth.permission", "pk": 379}, {"fields": {"codename": "add_courseregistrationcode", "name": "Can add course registration code", "content_type": 126}, "model": "auth.permission", "pk": 380}, {"fields": {"codename": "change_courseregistrationcode", "name": "Can change course registration code", "content_type": 126}, "model": "auth.permission", "pk": 381}, {"fields": {"codename": "delete_courseregistrationcode", "name": "Can delete course registration code", "content_type": 126}, "model": "auth.permission", "pk": 382}, {"fields": {"codename": "add_registrationcoderedemption", "name": "Can add registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 383}, {"fields": {"codename": "change_registrationcoderedemption", "name": "Can change registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 384}, {"fields": {"codename": "delete_registrationcoderedemption", "name": "Can delete registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 385}, {"fields": {"codename": "add_coupon", "name": "Can add coupon", "content_type": 128}, "model": "auth.permission", "pk": 386}, {"fields": {"codename": "change_coupon", "name": "Can change coupon", "content_type": 128}, "model": "auth.permission", "pk": 387}, {"fields": {"codename": "delete_coupon", "name": "Can delete coupon", "content_type": 128}, "model": "auth.permission", "pk": 388}, {"fields": {"codename": "add_couponredemption", "name": "Can add coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 389}, {"fields": {"codename": "change_couponredemption", "name": "Can change coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 390}, {"fields": {"codename": "delete_couponredemption", "name": "Can delete coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 391}, {"fields": {"codename": "add_paidcourseregistration", "name": "Can add paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 392}, {"fields": {"codename": "change_paidcourseregistration", "name": "Can change paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 393}, {"fields": {"codename": "delete_paidcourseregistration", "name": "Can delete paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 394}, {"fields": {"codename": "add_courseregcodeitem", "name": "Can add course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 395}, {"fields": {"codename": "change_courseregcodeitem", "name": "Can change course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 396}, {"fields": {"codename": "delete_courseregcodeitem", "name": "Can delete course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 397}, {"fields": {"codename": "add_courseregcodeitemannotation", "name": "Can add course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 398}, {"fields": {"codename": "change_courseregcodeitemannotation", "name": "Can change course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 399}, {"fields": {"codename": "delete_courseregcodeitemannotation", "name": "Can delete course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 400}, {"fields": {"codename": "add_paidcourseregistrationannotation", "name": "Can add paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 401}, {"fields": {"codename": "change_paidcourseregistrationannotation", "name": "Can change paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 402}, {"fields": {"codename": "delete_paidcourseregistrationannotation", "name": "Can delete paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 403}, {"fields": {"codename": "add_certificateitem", "name": "Can add certificate item", "content_type": 134}, "model": "auth.permission", "pk": 404}, {"fields": {"codename": "change_certificateitem", "name": "Can change certificate item", "content_type": 134}, "model": "auth.permission", "pk": 405}, {"fields": {"codename": "delete_certificateitem", "name": "Can delete certificate item", "content_type": 134}, "model": "auth.permission", "pk": 406}, {"fields": {"codename": "add_donationconfiguration", "name": "Can add donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 407}, {"fields": {"codename": "change_donationconfiguration", "name": "Can change donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 408}, {"fields": {"codename": "delete_donationconfiguration", "name": "Can delete donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 409}, {"fields": {"codename": "add_donation", "name": "Can add donation", "content_type": 136}, "model": "auth.permission", "pk": 410}, {"fields": {"codename": "change_donation", "name": "Can change donation", "content_type": 136}, "model": "auth.permission", "pk": 411}, {"fields": {"codename": "delete_donation", "name": "Can delete donation", "content_type": 136}, "model": "auth.permission", "pk": 412}, {"fields": {"codename": "add_coursemode", "name": "Can add course mode", "content_type": 137}, "model": "auth.permission", "pk": 413}, {"fields": {"codename": "change_coursemode", "name": "Can change course mode", "content_type": 137}, "model": "auth.permission", "pk": 414}, {"fields": {"codename": "delete_coursemode", "name": "Can delete course mode", "content_type": 137}, "model": "auth.permission", "pk": 415}, {"fields": {"codename": "add_coursemodesarchive", "name": "Can add course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 416}, {"fields": {"codename": "change_coursemodesarchive", "name": "Can change course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 417}, {"fields": {"codename": "delete_coursemodesarchive", "name": "Can delete course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 418}, {"fields": {"codename": "add_coursemodeexpirationconfig", "name": "Can add course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 419}, {"fields": {"codename": "change_coursemodeexpirationconfig", "name": "Can change course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 420}, {"fields": {"codename": "delete_coursemodeexpirationconfig", "name": "Can delete course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 421}, {"fields": {"codename": "add_softwaresecurephotoverification", "name": "Can add software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 422}, {"fields": {"codename": "change_softwaresecurephotoverification", "name": "Can change software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 423}, {"fields": {"codename": "delete_softwaresecurephotoverification", "name": "Can delete software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 424}, {"fields": {"codename": "add_historicalverificationdeadline", "name": "Can add historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 425}, {"fields": {"codename": "change_historicalverificationdeadline", "name": "Can change historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 426}, {"fields": {"codename": "delete_historicalverificationdeadline", "name": "Can delete historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 427}, {"fields": {"codename": "add_verificationdeadline", "name": "Can add verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 428}, {"fields": {"codename": "change_verificationdeadline", "name": "Can change verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 429}, {"fields": {"codename": "delete_verificationdeadline", "name": "Can delete verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 430}, {"fields": {"codename": "add_verificationcheckpoint", "name": "Can add verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 431}, {"fields": {"codename": "change_verificationcheckpoint", "name": "Can change verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 432}, {"fields": {"codename": "delete_verificationcheckpoint", "name": "Can delete verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 433}, {"fields": {"codename": "add_verificationstatus", "name": "Can add Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 434}, {"fields": {"codename": "change_verificationstatus", "name": "Can change Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 435}, {"fields": {"codename": "delete_verificationstatus", "name": "Can delete Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 436}, {"fields": {"codename": "add_incoursereverificationconfiguration", "name": "Can add in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 437}, {"fields": {"codename": "change_incoursereverificationconfiguration", "name": "Can change in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 438}, {"fields": {"codename": "delete_incoursereverificationconfiguration", "name": "Can delete in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 439}, {"fields": {"codename": "add_icrvstatusemailsconfiguration", "name": "Can add icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 440}, {"fields": {"codename": "change_icrvstatusemailsconfiguration", "name": "Can change icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 441}, {"fields": {"codename": "delete_icrvstatusemailsconfiguration", "name": "Can delete icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 442}, {"fields": {"codename": "add_skippedreverification", "name": "Can add skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 443}, {"fields": {"codename": "change_skippedreverification", "name": "Can change skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 444}, {"fields": {"codename": "delete_skippedreverification", "name": "Can delete skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 445}, {"fields": {"codename": "add_darklangconfig", "name": "Can add dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 446}, {"fields": {"codename": "change_darklangconfig", "name": "Can change dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 447}, {"fields": {"codename": "delete_darklangconfig", "name": "Can delete dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 448}, {"fields": {"codename": "add_microsite", "name": "Can add microsite", "content_type": 149}, "model": "auth.permission", "pk": 449}, {"fields": {"codename": "change_microsite", "name": "Can change microsite", "content_type": 149}, "model": "auth.permission", "pk": 450}, {"fields": {"codename": "delete_microsite", "name": "Can delete microsite", "content_type": 149}, "model": "auth.permission", "pk": 451}, {"fields": {"codename": "add_micrositehistory", "name": "Can add microsite history", "content_type": 150}, "model": "auth.permission", "pk": 452}, {"fields": {"codename": "change_micrositehistory", "name": "Can change microsite history", "content_type": 150}, "model": "auth.permission", "pk": 453}, {"fields": {"codename": "delete_micrositehistory", "name": "Can delete microsite history", "content_type": 150}, "model": "auth.permission", "pk": 454}, {"fields": {"codename": "add_historicalmicrositeorganizationmapping", "name": "Can add historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 455}, {"fields": {"codename": "change_historicalmicrositeorganizationmapping", "name": "Can change historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 456}, {"fields": {"codename": "delete_historicalmicrositeorganizationmapping", "name": "Can delete historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 457}, {"fields": {"codename": "add_micrositeorganizationmapping", "name": "Can add microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 458}, {"fields": {"codename": "change_micrositeorganizationmapping", "name": "Can change microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 459}, {"fields": {"codename": "delete_micrositeorganizationmapping", "name": "Can delete microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 460}, {"fields": {"codename": "add_historicalmicrositetemplate", "name": "Can add historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 461}, {"fields": {"codename": "change_historicalmicrositetemplate", "name": "Can change historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 462}, {"fields": {"codename": "delete_historicalmicrositetemplate", "name": "Can delete historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 463}, {"fields": {"codename": "add_micrositetemplate", "name": "Can add microsite template", "content_type": 154}, "model": "auth.permission", "pk": 464}, {"fields": {"codename": "change_micrositetemplate", "name": "Can change microsite template", "content_type": 154}, "model": "auth.permission", "pk": 465}, {"fields": {"codename": "delete_micrositetemplate", "name": "Can delete microsite template", "content_type": 154}, "model": "auth.permission", "pk": 466}, {"fields": {"codename": "add_whitelistedrssurl", "name": "Can add whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 467}, {"fields": {"codename": "change_whitelistedrssurl", "name": "Can change whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 468}, {"fields": {"codename": "delete_whitelistedrssurl", "name": "Can delete whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 469}, {"fields": {"codename": "add_embargoedcourse", "name": "Can add embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 470}, {"fields": {"codename": "change_embargoedcourse", "name": "Can change embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 471}, {"fields": {"codename": "delete_embargoedcourse", "name": "Can delete embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 472}, {"fields": {"codename": "add_embargoedstate", "name": "Can add embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 473}, {"fields": {"codename": "change_embargoedstate", "name": "Can change embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 474}, {"fields": {"codename": "delete_embargoedstate", "name": "Can delete embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 475}, {"fields": {"codename": "add_restrictedcourse", "name": "Can add restricted course", "content_type": 158}, "model": "auth.permission", "pk": 476}, {"fields": {"codename": "change_restrictedcourse", "name": "Can change restricted course", "content_type": 158}, "model": "auth.permission", "pk": 477}, {"fields": {"codename": "delete_restrictedcourse", "name": "Can delete restricted course", "content_type": 158}, "model": "auth.permission", "pk": 478}, {"fields": {"codename": "add_country", "name": "Can add country", "content_type": 159}, "model": "auth.permission", "pk": 479}, {"fields": {"codename": "change_country", "name": "Can change country", "content_type": 159}, "model": "auth.permission", "pk": 480}, {"fields": {"codename": "delete_country", "name": "Can delete country", "content_type": 159}, "model": "auth.permission", "pk": 481}, {"fields": {"codename": "add_countryaccessrule", "name": "Can add country access rule", "content_type": 160}, "model": "auth.permission", "pk": 482}, {"fields": {"codename": "change_countryaccessrule", "name": "Can change country access rule", "content_type": 160}, "model": "auth.permission", "pk": 483}, {"fields": {"codename": "delete_countryaccessrule", "name": "Can delete country access rule", "content_type": 160}, "model": "auth.permission", "pk": 484}, {"fields": {"codename": "add_courseaccessrulehistory", "name": "Can add course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 485}, {"fields": {"codename": "change_courseaccessrulehistory", "name": "Can change course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 486}, {"fields": {"codename": "delete_courseaccessrulehistory", "name": "Can delete course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 487}, {"fields": {"codename": "add_ipfilter", "name": "Can add ip filter", "content_type": 162}, "model": "auth.permission", "pk": 488}, {"fields": {"codename": "change_ipfilter", "name": "Can change ip filter", "content_type": 162}, "model": "auth.permission", "pk": 489}, {"fields": {"codename": "delete_ipfilter", "name": "Can delete ip filter", "content_type": 162}, "model": "auth.permission", "pk": 490}, {"fields": {"codename": "add_coursererunstate", "name": "Can add course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 491}, {"fields": {"codename": "change_coursererunstate", "name": "Can change course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 492}, {"fields": {"codename": "delete_coursererunstate", "name": "Can delete course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 493}, {"fields": {"codename": "add_mobileapiconfig", "name": "Can add mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 494}, {"fields": {"codename": "change_mobileapiconfig", "name": "Can change mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 495}, {"fields": {"codename": "delete_mobileapiconfig", "name": "Can delete mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 496}, {"fields": {"codename": "add_usersocialauth", "name": "Can add user social auth", "content_type": 165}, "model": "auth.permission", "pk": 497}, {"fields": {"codename": "change_usersocialauth", "name": "Can change user social auth", "content_type": 165}, "model": "auth.permission", "pk": 498}, {"fields": {"codename": "delete_usersocialauth", "name": "Can delete user social auth", "content_type": 165}, "model": "auth.permission", "pk": 499}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 166}, "model": "auth.permission", "pk": 500}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 166}, "model": "auth.permission", "pk": 501}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 166}, "model": "auth.permission", "pk": 502}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 167}, "model": "auth.permission", "pk": 503}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 167}, "model": "auth.permission", "pk": 504}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 167}, "model": "auth.permission", "pk": 505}, {"fields": {"codename": "add_code", "name": "Can add code", "content_type": 168}, "model": "auth.permission", "pk": 506}, {"fields": {"codename": "change_code", "name": "Can change code", "content_type": 168}, "model": "auth.permission", "pk": 507}, {"fields": {"codename": "delete_code", "name": "Can delete code", "content_type": 168}, "model": "auth.permission", "pk": 508}, {"fields": {"codename": "add_surveyform", "name": "Can add survey form", "content_type": 169}, "model": "auth.permission", "pk": 509}, {"fields": {"codename": "change_surveyform", "name": "Can change survey form", "content_type": 169}, "model": "auth.permission", "pk": 510}, {"fields": {"codename": "delete_surveyform", "name": "Can delete survey form", "content_type": 169}, "model": "auth.permission", "pk": 511}, {"fields": {"codename": "add_surveyanswer", "name": "Can add survey answer", "content_type": 170}, "model": "auth.permission", "pk": 512}, {"fields": {"codename": "change_surveyanswer", "name": "Can change survey answer", "content_type": 170}, "model": "auth.permission", "pk": 513}, {"fields": {"codename": "delete_surveyanswer", "name": "Can delete survey answer", "content_type": 170}, "model": "auth.permission", "pk": 514}, {"fields": {"codename": "add_xblockasidesconfig", "name": "Can add x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 515}, {"fields": {"codename": "change_xblockasidesconfig", "name": "Can change x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 516}, {"fields": {"codename": "delete_xblockasidesconfig", "name": "Can delete x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 517}, {"fields": {"codename": "add_courseoverview", "name": "Can add course overview", "content_type": 172}, "model": "auth.permission", "pk": 518}, {"fields": {"codename": "change_courseoverview", "name": "Can change course overview", "content_type": 172}, "model": "auth.permission", "pk": 519}, {"fields": {"codename": "delete_courseoverview", "name": "Can delete course overview", "content_type": 172}, "model": "auth.permission", "pk": 520}, {"fields": {"codename": "add_courseoverviewtab", "name": "Can add course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 521}, {"fields": {"codename": "change_courseoverviewtab", "name": "Can change course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 522}, {"fields": {"codename": "delete_courseoverviewtab", "name": "Can delete course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 523}, {"fields": {"codename": "add_courseoverviewimageset", "name": "Can add course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 524}, {"fields": {"codename": "change_courseoverviewimageset", "name": "Can change course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 525}, {"fields": {"codename": "delete_courseoverviewimageset", "name": "Can delete course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 526}, {"fields": {"codename": "add_courseoverviewimageconfig", "name": "Can add course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 527}, {"fields": {"codename": "change_courseoverviewimageconfig", "name": "Can change course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 528}, {"fields": {"codename": "delete_courseoverviewimageconfig", "name": "Can delete course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 529}, {"fields": {"codename": "add_coursestructure", "name": "Can add course structure", "content_type": 176}, "model": "auth.permission", "pk": 530}, {"fields": {"codename": "change_coursestructure", "name": "Can change course structure", "content_type": 176}, "model": "auth.permission", "pk": 531}, {"fields": {"codename": "delete_coursestructure", "name": "Can delete course structure", "content_type": 176}, "model": "auth.permission", "pk": 532}, {"fields": {"codename": "add_corsmodel", "name": "Can add cors model", "content_type": 177}, "model": "auth.permission", "pk": 533}, {"fields": {"codename": "change_corsmodel", "name": "Can change cors model", "content_type": 177}, "model": "auth.permission", "pk": 534}, {"fields": {"codename": "delete_corsmodel", "name": "Can delete cors model", "content_type": 177}, "model": "auth.permission", "pk": 535}, {"fields": {"codename": "add_xdomainproxyconfiguration", "name": "Can add x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 536}, {"fields": {"codename": "change_xdomainproxyconfiguration", "name": "Can change x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 537}, {"fields": {"codename": "delete_xdomainproxyconfiguration", "name": "Can delete x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 538}, {"fields": {"codename": "add_creditprovider", "name": "Can add credit provider", "content_type": 179}, "model": "auth.permission", "pk": 539}, {"fields": {"codename": "change_creditprovider", "name": "Can change credit provider", "content_type": 179}, "model": "auth.permission", "pk": 540}, {"fields": {"codename": "delete_creditprovider", "name": "Can delete credit provider", "content_type": 179}, "model": "auth.permission", "pk": 541}, {"fields": {"codename": "add_creditcourse", "name": "Can add credit course", "content_type": 180}, "model": "auth.permission", "pk": 542}, {"fields": {"codename": "change_creditcourse", "name": "Can change credit course", "content_type": 180}, "model": "auth.permission", "pk": 543}, {"fields": {"codename": "delete_creditcourse", "name": "Can delete credit course", "content_type": 180}, "model": "auth.permission", "pk": 544}, {"fields": {"codename": "add_creditrequirement", "name": "Can add credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 545}, {"fields": {"codename": "change_creditrequirement", "name": "Can change credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 546}, {"fields": {"codename": "delete_creditrequirement", "name": "Can delete credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 547}, {"fields": {"codename": "add_historicalcreditrequirementstatus", "name": "Can add historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 548}, {"fields": {"codename": "change_historicalcreditrequirementstatus", "name": "Can change historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 549}, {"fields": {"codename": "delete_historicalcreditrequirementstatus", "name": "Can delete historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 550}, {"fields": {"codename": "add_creditrequirementstatus", "name": "Can add credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 551}, {"fields": {"codename": "change_creditrequirementstatus", "name": "Can change credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 552}, {"fields": {"codename": "delete_creditrequirementstatus", "name": "Can delete credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 553}, {"fields": {"codename": "add_crediteligibility", "name": "Can add credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 554}, {"fields": {"codename": "change_crediteligibility", "name": "Can change credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 555}, {"fields": {"codename": "delete_crediteligibility", "name": "Can delete credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 556}, {"fields": {"codename": "add_historicalcreditrequest", "name": "Can add historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 557}, {"fields": {"codename": "change_historicalcreditrequest", "name": "Can change historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 558}, {"fields": {"codename": "delete_historicalcreditrequest", "name": "Can delete historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 559}, {"fields": {"codename": "add_creditrequest", "name": "Can add credit request", "content_type": 186}, "model": "auth.permission", "pk": 560}, {"fields": {"codename": "change_creditrequest", "name": "Can change credit request", "content_type": 186}, "model": "auth.permission", "pk": 561}, {"fields": {"codename": "delete_creditrequest", "name": "Can delete credit request", "content_type": 186}, "model": "auth.permission", "pk": 562}, {"fields": {"codename": "add_courseteam", "name": "Can add course team", "content_type": 187}, "model": "auth.permission", "pk": 563}, {"fields": {"codename": "change_courseteam", "name": "Can change course team", "content_type": 187}, "model": "auth.permission", "pk": 564}, {"fields": {"codename": "delete_courseteam", "name": "Can delete course team", "content_type": 187}, "model": "auth.permission", "pk": 565}, {"fields": {"codename": "add_courseteammembership", "name": "Can add course team membership", "content_type": 188}, "model": "auth.permission", "pk": 566}, {"fields": {"codename": "change_courseteammembership", "name": "Can change course team membership", "content_type": 188}, "model": "auth.permission", "pk": 567}, {"fields": {"codename": "delete_courseteammembership", "name": "Can delete course team membership", "content_type": 188}, "model": "auth.permission", "pk": 568}, {"fields": {"codename": "add_xblockdisableconfig", "name": "Can add x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 569}, {"fields": {"codename": "change_xblockdisableconfig", "name": "Can change x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 570}, {"fields": {"codename": "delete_xblockdisableconfig", "name": "Can delete x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 571}, {"fields": {"codename": "add_bookmark", "name": "Can add bookmark", "content_type": 190}, "model": "auth.permission", "pk": 572}, {"fields": {"codename": "change_bookmark", "name": "Can change bookmark", "content_type": 190}, "model": "auth.permission", "pk": 573}, {"fields": {"codename": "delete_bookmark", "name": "Can delete bookmark", "content_type": 190}, "model": "auth.permission", "pk": 574}, {"fields": {"codename": "add_xblockcache", "name": "Can add x block cache", "content_type": 191}, "model": "auth.permission", "pk": 575}, {"fields": {"codename": "change_xblockcache", "name": "Can change x block cache", "content_type": 191}, "model": "auth.permission", "pk": 576}, {"fields": {"codename": "delete_xblockcache", "name": "Can delete x block cache", "content_type": 191}, "model": "auth.permission", "pk": 577}, {"fields": {"codename": "add_programsapiconfig", "name": "Can add programs api config", "content_type": 192}, "model": "auth.permission", "pk": 578}, {"fields": {"codename": "change_programsapiconfig", "name": "Can change programs api config", "content_type": 192}, "model": "auth.permission", "pk": 579}, {"fields": {"codename": "delete_programsapiconfig", "name": "Can delete programs api config", "content_type": 192}, "model": "auth.permission", "pk": 580}, {"fields": {"codename": "add_selfpacedconfiguration", "name": "Can add self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 581}, {"fields": {"codename": "change_selfpacedconfiguration", "name": "Can change self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 582}, {"fields": {"codename": "delete_selfpacedconfiguration", "name": "Can delete self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 583}, {"fields": {"codename": "add_kvstore", "name": "Can add kv store", "content_type": 194}, "model": "auth.permission", "pk": 584}, {"fields": {"codename": "change_kvstore", "name": "Can change kv store", "content_type": 194}, "model": "auth.permission", "pk": 585}, {"fields": {"codename": "delete_kvstore", "name": "Can delete kv store", "content_type": 194}, "model": "auth.permission", "pk": 586}, {"fields": {"codename": "add_credentialsapiconfig", "name": "Can add credentials api config", "content_type": 195}, "model": "auth.permission", "pk": 587}, {"fields": {"codename": "change_credentialsapiconfig", "name": "Can change credentials api config", "content_type": 195}, "model": "auth.permission", "pk": 588}, {"fields": {"codename": "delete_credentialsapiconfig", "name": "Can delete credentials api config", "content_type": 195}, "model": "auth.permission", "pk": 589}, {"fields": {"codename": "add_answer", "name": "Can add answer", "content_type": 196}, "model": "auth.permission", "pk": 590}, {"fields": {"codename": "change_answer", "name": "Can change answer", "content_type": 196}, "model": "auth.permission", "pk": 591}, {"fields": {"codename": "delete_answer", "name": "Can delete answer", "content_type": 196}, "model": "auth.permission", "pk": 592}, {"fields": {"codename": "add_studentitem", "name": "Can add student item", "content_type": 197}, "model": "auth.permission", "pk": 593}, {"fields": {"codename": "change_studentitem", "name": "Can change student item", "content_type": 197}, "model": "auth.permission", "pk": 594}, {"fields": {"codename": "delete_studentitem", "name": "Can delete student item", "content_type": 197}, "model": "auth.permission", "pk": 595}, {"fields": {"codename": "add_submission", "name": "Can add submission", "content_type": 198}, "model": "auth.permission", "pk": 596}, {"fields": {"codename": "change_submission", "name": "Can change submission", "content_type": 198}, "model": "auth.permission", "pk": 597}, {"fields": {"codename": "delete_submission", "name": "Can delete submission", "content_type": 198}, "model": "auth.permission", "pk": 598}, {"fields": {"codename": "add_score", "name": "Can add score", "content_type": 199}, "model": "auth.permission", "pk": 599}, {"fields": {"codename": "change_score", "name": "Can change score", "content_type": 199}, "model": "auth.permission", "pk": 600}, {"fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 199}, "model": "auth.permission", "pk": 601}, {"fields": {"codename": "add_scoresummary", "name": "Can add score summary", "content_type": 200}, "model": "auth.permission", "pk": 602}, {"fields": {"codename": "change_scoresummary", "name": "Can change score summary", "content_type": 200}, "model": "auth.permission", "pk": 603}, {"fields": {"codename": "delete_scoresummary", "name": "Can delete score summary", "content_type": 200}, "model": "auth.permission", "pk": 604}, {"fields": {"codename": "add_scoreannotation", "name": "Can add score annotation", "content_type": 201}, "model": "auth.permission", "pk": 605}, {"fields": {"codename": "change_scoreannotation", "name": "Can change score annotation", "content_type": 201}, "model": "auth.permission", "pk": 606}, {"fields": {"codename": "delete_scoreannotation", "name": "Can delete score annotation", "content_type": 201}, "model": "auth.permission", "pk": 607}, {"fields": {"codename": "add_rubric", "name": "Can add rubric", "content_type": 202}, "model": "auth.permission", "pk": 608}, {"fields": {"codename": "change_rubric", "name": "Can change rubric", "content_type": 202}, "model": "auth.permission", "pk": 609}, {"fields": {"codename": "delete_rubric", "name": "Can delete rubric", "content_type": 202}, "model": "auth.permission", "pk": 610}, {"fields": {"codename": "add_criterion", "name": "Can add criterion", "content_type": 203}, "model": "auth.permission", "pk": 611}, {"fields": {"codename": "change_criterion", "name": "Can change criterion", "content_type": 203}, "model": "auth.permission", "pk": 612}, {"fields": {"codename": "delete_criterion", "name": "Can delete criterion", "content_type": 203}, "model": "auth.permission", "pk": 613}, {"fields": {"codename": "add_criterionoption", "name": "Can add criterion option", "content_type": 204}, "model": "auth.permission", "pk": 614}, {"fields": {"codename": "change_criterionoption", "name": "Can change criterion option", "content_type": 204}, "model": "auth.permission", "pk": 615}, {"fields": {"codename": "delete_criterionoption", "name": "Can delete criterion option", "content_type": 204}, "model": "auth.permission", "pk": 616}, {"fields": {"codename": "add_assessment", "name": "Can add assessment", "content_type": 205}, "model": "auth.permission", "pk": 617}, {"fields": {"codename": "change_assessment", "name": "Can change assessment", "content_type": 205}, "model": "auth.permission", "pk": 618}, {"fields": {"codename": "delete_assessment", "name": "Can delete assessment", "content_type": 205}, "model": "auth.permission", "pk": 619}, {"fields": {"codename": "add_assessmentpart", "name": "Can add assessment part", "content_type": 206}, "model": "auth.permission", "pk": 620}, {"fields": {"codename": "change_assessmentpart", "name": "Can change assessment part", "content_type": 206}, "model": "auth.permission", "pk": 621}, {"fields": {"codename": "delete_assessmentpart", "name": "Can delete assessment part", "content_type": 206}, "model": "auth.permission", "pk": 622}, {"fields": {"codename": "add_assessmentfeedbackoption", "name": "Can add assessment feedback option", "content_type": 207}, "model": "auth.permission", "pk": 623}, {"fields": {"codename": "change_assessmentfeedbackoption", "name": "Can change assessment feedback option", "content_type": 207}, "model": "auth.permission", "pk": 624}, {"fields": {"codename": "delete_assessmentfeedbackoption", "name": "Can delete assessment feedback option", "content_type": 207}, "model": "auth.permission", "pk": 625}, {"fields": {"codename": "add_assessmentfeedback", "name": "Can add assessment feedback", "content_type": 208}, "model": "auth.permission", "pk": 626}, {"fields": {"codename": "change_assessmentfeedback", "name": "Can change assessment feedback", "content_type": 208}, "model": "auth.permission", "pk": 627}, {"fields": {"codename": "delete_assessmentfeedback", "name": "Can delete assessment feedback", "content_type": 208}, "model": "auth.permission", "pk": 628}, {"fields": {"codename": "add_peerworkflow", "name": "Can add peer workflow", "content_type": 209}, "model": "auth.permission", "pk": 629}, {"fields": {"codename": "change_peerworkflow", "name": "Can change peer workflow", "content_type": 209}, "model": "auth.permission", "pk": 630}, {"fields": {"codename": "delete_peerworkflow", "name": "Can delete peer workflow", "content_type": 209}, "model": "auth.permission", "pk": 631}, {"fields": {"codename": "add_peerworkflowitem", "name": "Can add peer workflow item", "content_type": 210}, "model": "auth.permission", "pk": 632}, {"fields": {"codename": "change_peerworkflowitem", "name": "Can change peer workflow item", "content_type": 210}, "model": "auth.permission", "pk": 633}, {"fields": {"codename": "delete_peerworkflowitem", "name": "Can delete peer workflow item", "content_type": 210}, "model": "auth.permission", "pk": 634}, {"fields": {"codename": "add_trainingexample", "name": "Can add training example", "content_type": 211}, "model": "auth.permission", "pk": 635}, {"fields": {"codename": "change_trainingexample", "name": "Can change training example", "content_type": 211}, "model": "auth.permission", "pk": 636}, {"fields": {"codename": "delete_trainingexample", "name": "Can delete training example", "content_type": 211}, "model": "auth.permission", "pk": 637}, {"fields": {"codename": "add_studenttrainingworkflow", "name": "Can add student training workflow", "content_type": 212}, "model": "auth.permission", "pk": 638}, {"fields": {"codename": "change_studenttrainingworkflow", "name": "Can change student training workflow", "content_type": 212}, "model": "auth.permission", "pk": 639}, {"fields": {"codename": "delete_studenttrainingworkflow", "name": "Can delete student training workflow", "content_type": 212}, "model": "auth.permission", "pk": 640}, {"fields": {"codename": "add_studenttrainingworkflowitem", "name": "Can add student training workflow item", "content_type": 213}, "model": "auth.permission", "pk": 641}, {"fields": {"codename": "change_studenttrainingworkflowitem", "name": "Can change student training workflow item", "content_type": 213}, "model": "auth.permission", "pk": 642}, {"fields": {"codename": "delete_studenttrainingworkflowitem", "name": "Can delete student training workflow item", "content_type": 213}, "model": "auth.permission", "pk": 643}, {"fields": {"codename": "add_aiclassifierset", "name": "Can add ai classifier set", "content_type": 214}, "model": "auth.permission", "pk": 644}, {"fields": {"codename": "change_aiclassifierset", "name": "Can change ai classifier set", "content_type": 214}, "model": "auth.permission", "pk": 645}, {"fields": {"codename": "delete_aiclassifierset", "name": "Can delete ai classifier set", "content_type": 214}, "model": "auth.permission", "pk": 646}, {"fields": {"codename": "add_aiclassifier", "name": "Can add ai classifier", "content_type": 215}, "model": "auth.permission", "pk": 647}, {"fields": {"codename": "change_aiclassifier", "name": "Can change ai classifier", "content_type": 215}, "model": "auth.permission", "pk": 648}, {"fields": {"codename": "delete_aiclassifier", "name": "Can delete ai classifier", "content_type": 215}, "model": "auth.permission", "pk": 649}, {"fields": {"codename": "add_aitrainingworkflow", "name": "Can add ai training workflow", "content_type": 216}, "model": "auth.permission", "pk": 650}, {"fields": {"codename": "change_aitrainingworkflow", "name": "Can change ai training workflow", "content_type": 216}, "model": "auth.permission", "pk": 651}, {"fields": {"codename": "delete_aitrainingworkflow", "name": "Can delete ai training workflow", "content_type": 216}, "model": "auth.permission", "pk": 652}, {"fields": {"codename": "add_aigradingworkflow", "name": "Can add ai grading workflow", "content_type": 217}, "model": "auth.permission", "pk": 653}, {"fields": {"codename": "change_aigradingworkflow", "name": "Can change ai grading workflow", "content_type": 217}, "model": "auth.permission", "pk": 654}, {"fields": {"codename": "delete_aigradingworkflow", "name": "Can delete ai grading workflow", "content_type": 217}, "model": "auth.permission", "pk": 655}, {"fields": {"codename": "add_staffworkflow", "name": "Can add staff workflow", "content_type": 218}, "model": "auth.permission", "pk": 656}, {"fields": {"codename": "change_staffworkflow", "name": "Can change staff workflow", "content_type": 218}, "model": "auth.permission", "pk": 657}, {"fields": {"codename": "delete_staffworkflow", "name": "Can delete staff workflow", "content_type": 218}, "model": "auth.permission", "pk": 658}, {"fields": {"codename": "add_assessmentworkflow", "name": "Can add assessment workflow", "content_type": 219}, "model": "auth.permission", "pk": 659}, {"fields": {"codename": "change_assessmentworkflow", "name": "Can change assessment workflow", "content_type": 219}, "model": "auth.permission", "pk": 660}, {"fields": {"codename": "delete_assessmentworkflow", "name": "Can delete assessment workflow", "content_type": 219}, "model": "auth.permission", "pk": 661}, {"fields": {"codename": "add_assessmentworkflowstep", "name": "Can add assessment workflow step", "content_type": 220}, "model": "auth.permission", "pk": 662}, {"fields": {"codename": "change_assessmentworkflowstep", "name": "Can change assessment workflow step", "content_type": 220}, "model": "auth.permission", "pk": 663}, {"fields": {"codename": "delete_assessmentworkflowstep", "name": "Can delete assessment workflow step", "content_type": 220}, "model": "auth.permission", "pk": 664}, {"fields": {"codename": "add_assessmentworkflowcancellation", "name": "Can add assessment workflow cancellation", "content_type": 221}, "model": "auth.permission", "pk": 665}, {"fields": {"codename": "change_assessmentworkflowcancellation", "name": "Can change assessment workflow cancellation", "content_type": 221}, "model": "auth.permission", "pk": 666}, {"fields": {"codename": "delete_assessmentworkflowcancellation", "name": "Can delete assessment workflow cancellation", "content_type": 221}, "model": "auth.permission", "pk": 667}, {"fields": {"codename": "add_profile", "name": "Can add profile", "content_type": 222}, "model": "auth.permission", "pk": 668}, {"fields": {"codename": "change_profile", "name": "Can change profile", "content_type": 222}, "model": "auth.permission", "pk": 669}, {"fields": {"codename": "delete_profile", "name": "Can delete profile", "content_type": 222}, "model": "auth.permission", "pk": 670}, {"fields": {"codename": "add_video", "name": "Can add video", "content_type": 223}, "model": "auth.permission", "pk": 671}, {"fields": {"codename": "change_video", "name": "Can change video", "content_type": 223}, "model": "auth.permission", "pk": 672}, {"fields": {"codename": "delete_video", "name": "Can delete video", "content_type": 223}, "model": "auth.permission", "pk": 673}, {"fields": {"codename": "add_coursevideo", "name": "Can add course video", "content_type": 224}, "model": "auth.permission", "pk": 674}, {"fields": {"codename": "change_coursevideo", "name": "Can change course video", "content_type": 224}, "model": "auth.permission", "pk": 675}, {"fields": {"codename": "delete_coursevideo", "name": "Can delete course video", "content_type": 224}, "model": "auth.permission", "pk": 676}, {"fields": {"codename": "add_encodedvideo", "name": "Can add encoded video", "content_type": 225}, "model": "auth.permission", "pk": 677}, {"fields": {"codename": "change_encodedvideo", "name": "Can change encoded video", "content_type": 225}, "model": "auth.permission", "pk": 678}, {"fields": {"codename": "delete_encodedvideo", "name": "Can delete encoded video", "content_type": 225}, "model": "auth.permission", "pk": 679}, {"fields": {"codename": "add_subtitle", "name": "Can add subtitle", "content_type": 226}, "model": "auth.permission", "pk": 680}, {"fields": {"codename": "change_subtitle", "name": "Can change subtitle", "content_type": 226}, "model": "auth.permission", "pk": 681}, {"fields": {"codename": "delete_subtitle", "name": "Can delete subtitle", "content_type": 226}, "model": "auth.permission", "pk": 682}, {"fields": {"codename": "add_milestone", "name": "Can add milestone", "content_type": 227}, "model": "auth.permission", "pk": 683}, {"fields": {"codename": "change_milestone", "name": "Can change milestone", "content_type": 227}, "model": "auth.permission", "pk": 684}, {"fields": {"codename": "delete_milestone", "name": "Can delete milestone", "content_type": 227}, "model": "auth.permission", "pk": 685}, {"fields": {"codename": "add_milestonerelationshiptype", "name": "Can add milestone relationship type", "content_type": 228}, "model": "auth.permission", "pk": 686}, {"fields": {"codename": "change_milestonerelationshiptype", "name": "Can change milestone relationship type", "content_type": 228}, "model": "auth.permission", "pk": 687}, {"fields": {"codename": "delete_milestonerelationshiptype", "name": "Can delete milestone relationship type", "content_type": 228}, "model": "auth.permission", "pk": 688}, {"fields": {"codename": "add_coursemilestone", "name": "Can add course milestone", "content_type": 229}, "model": "auth.permission", "pk": 689}, {"fields": {"codename": "change_coursemilestone", "name": "Can change course milestone", "content_type": 229}, "model": "auth.permission", "pk": 690}, {"fields": {"codename": "delete_coursemilestone", "name": "Can delete course milestone", "content_type": 229}, "model": "auth.permission", "pk": 691}, {"fields": {"codename": "add_coursecontentmilestone", "name": "Can add course content milestone", "content_type": 230}, "model": "auth.permission", "pk": 692}, {"fields": {"codename": "change_coursecontentmilestone", "name": "Can change course content milestone", "content_type": 230}, "model": "auth.permission", "pk": 693}, {"fields": {"codename": "delete_coursecontentmilestone", "name": "Can delete course content milestone", "content_type": 230}, "model": "auth.permission", "pk": 694}, {"fields": {"codename": "add_usermilestone", "name": "Can add user milestone", "content_type": 231}, "model": "auth.permission", "pk": 695}, {"fields": {"codename": "change_usermilestone", "name": "Can change user milestone", "content_type": 231}, "model": "auth.permission", "pk": 696}, {"fields": {"codename": "delete_usermilestone", "name": "Can delete user milestone", "content_type": 231}, "model": "auth.permission", "pk": 697}, {"fields": {"codename": "add_proctoredexam", "name": "Can add proctored exam", "content_type": 232}, "model": "auth.permission", "pk": 698}, {"fields": {"codename": "change_proctoredexam", "name": "Can change proctored exam", "content_type": 232}, "model": "auth.permission", "pk": 699}, {"fields": {"codename": "delete_proctoredexam", "name": "Can delete proctored exam", "content_type": 232}, "model": "auth.permission", "pk": 700}, {"fields": {"codename": "add_proctoredexamreviewpolicy", "name": "Can add Proctored exam review policy", "content_type": 233}, "model": "auth.permission", "pk": 701}, {"fields": {"codename": "change_proctoredexamreviewpolicy", "name": "Can change Proctored exam review policy", "content_type": 233}, "model": "auth.permission", "pk": 702}, {"fields": {"codename": "delete_proctoredexamreviewpolicy", "name": "Can delete Proctored exam review policy", "content_type": 233}, "model": "auth.permission", "pk": 703}, {"fields": {"codename": "add_proctoredexamreviewpolicyhistory", "name": "Can add proctored exam review policy history", "content_type": 234}, "model": "auth.permission", "pk": 704}, {"fields": {"codename": "change_proctoredexamreviewpolicyhistory", "name": "Can change proctored exam review policy history", "content_type": 234}, "model": "auth.permission", "pk": 705}, {"fields": {"codename": "delete_proctoredexamreviewpolicyhistory", "name": "Can delete proctored exam review policy history", "content_type": 234}, "model": "auth.permission", "pk": 706}, {"fields": {"codename": "add_proctoredexamstudentattempt", "name": "Can add proctored exam attempt", "content_type": 235}, "model": "auth.permission", "pk": 707}, {"fields": {"codename": "change_proctoredexamstudentattempt", "name": "Can change proctored exam attempt", "content_type": 235}, "model": "auth.permission", "pk": 708}, {"fields": {"codename": "delete_proctoredexamstudentattempt", "name": "Can delete proctored exam attempt", "content_type": 235}, "model": "auth.permission", "pk": 709}, {"fields": {"codename": "add_proctoredexamstudentattempthistory", "name": "Can add proctored exam attempt history", "content_type": 236}, "model": "auth.permission", "pk": 710}, {"fields": {"codename": "change_proctoredexamstudentattempthistory", "name": "Can change proctored exam attempt history", "content_type": 236}, "model": "auth.permission", "pk": 711}, {"fields": {"codename": "delete_proctoredexamstudentattempthistory", "name": "Can delete proctored exam attempt history", "content_type": 236}, "model": "auth.permission", "pk": 712}, {"fields": {"codename": "add_proctoredexamstudentallowance", "name": "Can add proctored allowance", "content_type": 237}, "model": "auth.permission", "pk": 713}, {"fields": {"codename": "change_proctoredexamstudentallowance", "name": "Can change proctored allowance", "content_type": 237}, "model": "auth.permission", "pk": 714}, {"fields": {"codename": "delete_proctoredexamstudentallowance", "name": "Can delete proctored allowance", "content_type": 237}, "model": "auth.permission", "pk": 715}, {"fields": {"codename": "add_proctoredexamstudentallowancehistory", "name": "Can add proctored allowance history", "content_type": 238}, "model": "auth.permission", "pk": 716}, {"fields": {"codename": "change_proctoredexamstudentallowancehistory", "name": "Can change proctored allowance history", "content_type": 238}, "model": "auth.permission", "pk": 717}, {"fields": {"codename": "delete_proctoredexamstudentallowancehistory", "name": "Can delete proctored allowance history", "content_type": 238}, "model": "auth.permission", "pk": 718}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereview", "name": "Can add Proctored exam software secure review", "content_type": 239}, "model": "auth.permission", "pk": 719}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereview", "name": "Can change Proctored exam software secure review", "content_type": 239}, "model": "auth.permission", "pk": 720}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereview", "name": "Can delete Proctored exam software secure review", "content_type": 239}, "model": "auth.permission", "pk": 721}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereviewhistory", "name": "Can add Proctored exam review archive", "content_type": 240}, "model": "auth.permission", "pk": 722}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereviewhistory", "name": "Can change Proctored exam review archive", "content_type": 240}, "model": "auth.permission", "pk": 723}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereviewhistory", "name": "Can delete Proctored exam review archive", "content_type": 240}, "model": "auth.permission", "pk": 724}, {"fields": {"codename": "add_proctoredexamsoftwaresecurecomment", "name": "Can add proctored exam software secure comment", "content_type": 241}, "model": "auth.permission", "pk": 725}, {"fields": {"codename": "change_proctoredexamsoftwaresecurecomment", "name": "Can change proctored exam software secure comment", "content_type": 241}, "model": "auth.permission", "pk": 726}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurecomment", "name": "Can delete proctored exam software secure comment", "content_type": 241}, "model": "auth.permission", "pk": 727}, {"fields": {"codename": "add_organization", "name": "Can add organization", "content_type": 242}, "model": "auth.permission", "pk": 728}, {"fields": {"codename": "change_organization", "name": "Can change organization", "content_type": 242}, "model": "auth.permission", "pk": 729}, {"fields": {"codename": "delete_organization", "name": "Can delete organization", "content_type": 242}, "model": "auth.permission", "pk": 730}, {"fields": {"codename": "add_organizationcourse", "name": "Can add Link Course", "content_type": 243}, "model": "auth.permission", "pk": 731}, {"fields": {"codename": "change_organizationcourse", "name": "Can change Link Course", "content_type": 243}, "model": "auth.permission", "pk": 732}, {"fields": {"codename": "delete_organizationcourse", "name": "Can delete Link Course", "content_type": 243}, "model": "auth.permission", "pk": 733}, {"fields": {"codename": "add_videouploadconfig", "name": "Can add video upload config", "content_type": 244}, "model": "auth.permission", "pk": 734}, {"fields": {"codename": "change_videouploadconfig", "name": "Can change video upload config", "content_type": 244}, "model": "auth.permission", "pk": 735}, {"fields": {"codename": "delete_videouploadconfig", "name": "Can delete video upload config", "content_type": 244}, "model": "auth.permission", "pk": 736}, {"fields": {"codename": "add_pushnotificationconfig", "name": "Can add push notification config", "content_type": 245}, "model": "auth.permission", "pk": 737}, {"fields": {"codename": "change_pushnotificationconfig", "name": "Can change push notification config", "content_type": 245}, "model": "auth.permission", "pk": 738}, {"fields": {"codename": "delete_pushnotificationconfig", "name": "Can delete push notification config", "content_type": 245}, "model": "auth.permission", "pk": 739}, {"fields": {"codename": "add_coursecreator", "name": "Can add course creator", "content_type": 246}, "model": "auth.permission", "pk": 740}, {"fields": {"codename": "change_coursecreator", "name": "Can change course creator", "content_type": 246}, "model": "auth.permission", "pk": 741}, {"fields": {"codename": "delete_coursecreator", "name": "Can delete course creator", "content_type": 246}, "model": "auth.permission", "pk": 742}, {"fields": {"codename": "add_studioconfig", "name": "Can add studio config", "content_type": 247}, "model": "auth.permission", "pk": 743}, {"fields": {"codename": "change_studioconfig", "name": "Can change studio config", "content_type": 247}, "model": "auth.permission", "pk": 744}, {"fields": {"codename": "delete_studioconfig", "name": "Can delete studio config", "content_type": 247}, "model": "auth.permission", "pk": 745}, {"fields": {"username": "ecommerce_worker", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": null, "groups": [], "user_permissions": [], "password": "!Bz0IiD8f4rtGAXbkt0fXqWWITFuRNaZZzqYQnUI0", "email": "ecommerce_worker@fake.email", "date_joined": "2016-01-22T20:04:10.525Z"}, "model": "auth.user", "pk": 1}, {"fields": {"username": "credentials_service_user", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": true, "last_login": null, "groups": [], "user_permissions": [], "password": "!U0fWlB5kZ85Dzw37oIwkHTsSCJkJ0bvMijQM4Vyg", "email": "", "date_joined": "2016-01-22T20:04:17.478Z"}, "model": "auth.user", "pk": 2}, {"fields": {"change_date": "2016-01-22T20:05:45.554Z", "changed_by": null, "enabled": true}, "model": "util.ratelimitconfiguration", "pk": 1}, {"fields": {"change_date": "2016-01-22T20:04:09.858Z", "changed_by": null, "configuration": "{\"default\": {\"accomplishment_class_append\": \"accomplishment-certificate\", \"platform_name\": \"Your Platform Name Here\", \"logo_src\": \"/static/certificates/images/logo.png\", \"logo_url\": \"http://www.example.com\", \"company_verified_certificate_url\": \"http://www.example.com/verified-certificate\", \"company_privacy_url\": \"http://www.example.com/privacy-policy\", \"company_tos_url\": \"http://www.example.com/terms-service\", \"company_about_url\": \"http://www.example.com/about-us\"}, \"verified\": {\"certificate_type\": \"Verified\", \"certificate_title\": \"Verified Certificate of Achievement\"}, \"honor\": {\"certificate_type\": \"Honor Code\", \"certificate_title\": \"Certificate of Achievement\"}}", "enabled": false}, "model": "certificates.certificatehtmlviewconfiguration", "pk": 1}, {"fields": {"change_date": "2016-01-22T20:04:19.877Z", "changed_by": null, "enabled": true, "released_languages": ""}, "model": "dark_lang.darklangconfig", "pk": 1}] \ No newline at end of file diff --git a/common/test/db_cache/bok_choy_data_default.json b/common/test/db_cache/bok_choy_data_default.json new file mode 100644 index 0000000000..0663d2134f --- /dev/null +++ b/common/test/db_cache/bok_choy_data_default.json @@ -0,0 +1 @@ +[{"fields": {"model": "permission", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 1}, {"fields": {"model": "group", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 2}, {"fields": {"model": "user", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 3}, {"fields": {"model": "contenttype", "app_label": "contenttypes"}, "model": "contenttypes.contenttype", "pk": 4}, {"fields": {"model": "session", "app_label": "sessions"}, "model": "contenttypes.contenttype", "pk": 5}, {"fields": {"model": "site", "app_label": "sites"}, "model": "contenttypes.contenttype", "pk": 6}, {"fields": {"model": "taskmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 7}, {"fields": {"model": "tasksetmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 8}, {"fields": {"model": "intervalschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 9}, {"fields": {"model": "crontabschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 10}, {"fields": {"model": "periodictasks", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 11}, {"fields": {"model": "periodictask", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 12}, {"fields": {"model": "workerstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 13}, {"fields": {"model": "taskstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 14}, {"fields": {"model": "globalstatusmessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 15}, {"fields": {"model": "coursemessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 16}, {"fields": {"model": "assetbaseurlconfig", "app_label": "static_replace"}, "model": "contenttypes.contenttype", "pk": 17}, {"fields": {"model": "studentmodule", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 18}, {"fields": {"model": "studentmodulehistory", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 19}, {"fields": {"model": "xmoduleuserstatesummaryfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 20}, {"fields": {"model": "xmodulestudentprefsfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 21}, {"fields": {"model": "xmodulestudentinfofield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 22}, {"fields": {"model": "offlinecomputedgrade", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 23}, {"fields": {"model": "offlinecomputedgradelog", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 24}, {"fields": {"model": "studentfieldoverride", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 25}, {"fields": {"model": "anonymoususerid", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 26}, {"fields": {"model": "userstanding", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 27}, {"fields": {"model": "userprofile", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 28}, {"fields": {"model": "usersignupsource", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 29}, {"fields": {"model": "usertestgroup", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 30}, {"fields": {"model": "registration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 31}, {"fields": {"model": "pendingnamechange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 32}, {"fields": {"model": "pendingemailchange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 33}, {"fields": {"model": "passwordhistory", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 34}, {"fields": {"model": "loginfailures", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 35}, {"fields": {"model": "historicalcourseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 36}, {"fields": {"model": "courseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 37}, {"fields": {"model": "manualenrollmentaudit", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 38}, {"fields": {"model": "courseenrollmentallowed", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 39}, {"fields": {"model": "courseaccessrole", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 40}, {"fields": {"model": "dashboardconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 41}, {"fields": {"model": "linkedinaddtoprofileconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 42}, {"fields": {"model": "entranceexamconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 43}, {"fields": {"model": "languageproficiency", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 44}, {"fields": {"model": "courseenrollmentattribute", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 45}, {"fields": {"model": "enrollmentrefundconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 46}, {"fields": {"model": "trackinglog", "app_label": "track"}, "model": "contenttypes.contenttype", "pk": 47}, {"fields": {"model": "ratelimitconfiguration", "app_label": "util"}, "model": "contenttypes.contenttype", "pk": 48}, {"fields": {"model": "certificatewhitelist", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 49}, {"fields": {"model": "generatedcertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 50}, {"fields": {"model": "certificategenerationhistory", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 51}, {"fields": {"model": "certificateinvalidation", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 52}, {"fields": {"model": "examplecertificateset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 53}, {"fields": {"model": "examplecertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 54}, {"fields": {"model": "certificategenerationcoursesetting", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 55}, {"fields": {"model": "certificategenerationconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 56}, {"fields": {"model": "certificatehtmlviewconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 57}, {"fields": {"model": "badgeassertion", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 58}, {"fields": {"model": "badgeimageconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 59}, {"fields": {"model": "certificatetemplate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 60}, {"fields": {"model": "certificatetemplateasset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 61}, {"fields": {"model": "instructortask", "app_label": "instructor_task"}, "model": "contenttypes.contenttype", "pk": 62}, {"fields": {"model": "courseusergroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 63}, {"fields": {"model": "cohortmembership", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 64}, {"fields": {"model": "courseusergrouppartitiongroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 65}, {"fields": {"model": "coursecohortssettings", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 66}, {"fields": {"model": "coursecohort", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 67}, {"fields": {"model": "courseemail", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 68}, {"fields": {"model": "optout", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 69}, {"fields": {"model": "courseemailtemplate", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 70}, {"fields": {"model": "courseauthorization", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 71}, {"fields": {"model": "brandinginfoconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 72}, {"fields": {"model": "brandingapiconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 73}, {"fields": {"model": "externalauthmap", "app_label": "external_auth"}, "model": "contenttypes.contenttype", "pk": 74}, {"fields": {"model": "nonce", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 75}, {"fields": {"model": "association", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 76}, {"fields": {"model": "useropenid", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 77}, {"fields": {"model": "client", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 78}, {"fields": {"model": "grant", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 79}, {"fields": {"model": "accesstoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 80}, {"fields": {"model": "refreshtoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 81}, {"fields": {"model": "trustedclient", "app_label": "oauth2_provider"}, "model": "contenttypes.contenttype", "pk": 82}, {"fields": {"model": "oauth2providerconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 83}, {"fields": {"model": "samlproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 84}, {"fields": {"model": "samlconfiguration", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 85}, {"fields": {"model": "samlproviderdata", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 86}, {"fields": {"model": "ltiproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 87}, {"fields": {"model": "providerapipermissions", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 88}, {"fields": {"model": "nonce", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 89}, {"fields": {"model": "scope", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 90}, {"fields": {"model": "consumer", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 91}, {"fields": {"model": "token", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 92}, {"fields": {"model": "resource", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 93}, {"fields": {"model": "article", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 94}, {"fields": {"model": "articleforobject", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 95}, {"fields": {"model": "articlerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 96}, {"fields": {"model": "urlpath", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 97}, {"fields": {"model": "articleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 98}, {"fields": {"model": "reusableplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 99}, {"fields": {"model": "simpleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 100}, {"fields": {"model": "revisionplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 101}, {"fields": {"model": "revisionpluginrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 102}, {"fields": {"model": "image", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 103}, {"fields": {"model": "imagerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 104}, {"fields": {"model": "attachment", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 105}, {"fields": {"model": "attachmentrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 106}, {"fields": {"model": "notificationtype", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 107}, {"fields": {"model": "settings", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 108}, {"fields": {"model": "subscription", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 109}, {"fields": {"model": "notification", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 110}, {"fields": {"model": "logentry", "app_label": "admin"}, "model": "contenttypes.contenttype", "pk": 111}, {"fields": {"model": "role", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 112}, {"fields": {"model": "permission", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 113}, {"fields": {"model": "note", "app_label": "notes"}, "model": "contenttypes.contenttype", "pk": 114}, {"fields": {"model": "splashconfig", "app_label": "splash"}, "model": "contenttypes.contenttype", "pk": 115}, {"fields": {"model": "userpreference", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 116}, {"fields": {"model": "usercoursetag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 117}, {"fields": {"model": "userorgtag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 118}, {"fields": {"model": "order", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 119}, {"fields": {"model": "orderitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 120}, {"fields": {"model": "invoice", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 121}, {"fields": {"model": "invoicetransaction", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 122}, {"fields": {"model": "invoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 123}, {"fields": {"model": "courseregistrationcodeinvoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 124}, {"fields": {"model": "invoicehistory", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 125}, {"fields": {"model": "courseregistrationcode", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 126}, {"fields": {"model": "registrationcoderedemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 127}, {"fields": {"model": "coupon", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 128}, {"fields": {"model": "couponredemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 129}, {"fields": {"model": "paidcourseregistration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 130}, {"fields": {"model": "courseregcodeitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 131}, {"fields": {"model": "courseregcodeitemannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 132}, {"fields": {"model": "paidcourseregistrationannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 133}, {"fields": {"model": "certificateitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 134}, {"fields": {"model": "donationconfiguration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 135}, {"fields": {"model": "donation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 136}, {"fields": {"model": "coursemode", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 137}, {"fields": {"model": "coursemodesarchive", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 138}, {"fields": {"model": "coursemodeexpirationconfig", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 139}, {"fields": {"model": "softwaresecurephotoverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 140}, {"fields": {"model": "historicalverificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 141}, {"fields": {"model": "verificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 142}, {"fields": {"model": "verificationcheckpoint", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 143}, {"fields": {"model": "verificationstatus", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 144}, {"fields": {"model": "incoursereverificationconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 145}, {"fields": {"model": "icrvstatusemailsconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 146}, {"fields": {"model": "skippedreverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 147}, {"fields": {"model": "darklangconfig", "app_label": "dark_lang"}, "model": "contenttypes.contenttype", "pk": 148}, {"fields": {"model": "microsite", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 149}, {"fields": {"model": "micrositehistory", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 150}, {"fields": {"model": "historicalmicrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 151}, {"fields": {"model": "micrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 152}, {"fields": {"model": "historicalmicrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 153}, {"fields": {"model": "micrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 154}, {"fields": {"model": "whitelistedrssurl", "app_label": "rss_proxy"}, "model": "contenttypes.contenttype", "pk": 155}, {"fields": {"model": "embargoedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 156}, {"fields": {"model": "embargoedstate", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 157}, {"fields": {"model": "restrictedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 158}, {"fields": {"model": "country", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 159}, {"fields": {"model": "countryaccessrule", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 160}, {"fields": {"model": "courseaccessrulehistory", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 161}, {"fields": {"model": "ipfilter", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 162}, {"fields": {"model": "coursererunstate", "app_label": "course_action_state"}, "model": "contenttypes.contenttype", "pk": 163}, {"fields": {"model": "mobileapiconfig", "app_label": "mobile_api"}, "model": "contenttypes.contenttype", "pk": 164}, {"fields": {"model": "usersocialauth", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 165}, {"fields": {"model": "nonce", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 166}, {"fields": {"model": "association", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 167}, {"fields": {"model": "code", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 168}, {"fields": {"model": "surveyform", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 169}, {"fields": {"model": "surveyanswer", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 170}, {"fields": {"model": "xblockasidesconfig", "app_label": "lms_xblock"}, "model": "contenttypes.contenttype", "pk": 171}, {"fields": {"model": "courseoverview", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 172}, {"fields": {"model": "courseoverviewtab", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 173}, {"fields": {"model": "courseoverviewimageset", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 174}, {"fields": {"model": "courseoverviewimageconfig", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 175}, {"fields": {"model": "coursestructure", "app_label": "course_structures"}, "model": "contenttypes.contenttype", "pk": 176}, {"fields": {"model": "corsmodel", "app_label": "corsheaders"}, "model": "contenttypes.contenttype", "pk": 177}, {"fields": {"model": "xdomainproxyconfiguration", "app_label": "cors_csrf"}, "model": "contenttypes.contenttype", "pk": 178}, {"fields": {"model": "creditprovider", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 179}, {"fields": {"model": "creditcourse", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 180}, {"fields": {"model": "creditrequirement", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 181}, {"fields": {"model": "historicalcreditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 182}, {"fields": {"model": "creditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 183}, {"fields": {"model": "crediteligibility", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 184}, {"fields": {"model": "historicalcreditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 185}, {"fields": {"model": "creditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 186}, {"fields": {"model": "courseteam", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 187}, {"fields": {"model": "courseteammembership", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 188}, {"fields": {"model": "xblockdisableconfig", "app_label": "xblock_django"}, "model": "contenttypes.contenttype", "pk": 189}, {"fields": {"model": "bookmark", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 190}, {"fields": {"model": "xblockcache", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 191}, {"fields": {"model": "programsapiconfig", "app_label": "programs"}, "model": "contenttypes.contenttype", "pk": 192}, {"fields": {"model": "selfpacedconfiguration", "app_label": "self_paced"}, "model": "contenttypes.contenttype", "pk": 193}, {"fields": {"model": "kvstore", "app_label": "thumbnail"}, "model": "contenttypes.contenttype", "pk": 194}, {"fields": {"model": "studentitem", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 195}, {"fields": {"model": "submission", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 196}, {"fields": {"model": "score", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 197}, {"fields": {"model": "scoresummary", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 198}, {"fields": {"model": "scoreannotation", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 199}, {"fields": {"model": "rubric", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 200}, {"fields": {"model": "criterion", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 201}, {"fields": {"model": "criterionoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 202}, {"fields": {"model": "assessment", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 203}, {"fields": {"model": "assessmentpart", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 204}, {"fields": {"model": "assessmentfeedbackoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 205}, {"fields": {"model": "assessmentfeedback", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 206}, {"fields": {"model": "peerworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 207}, {"fields": {"model": "peerworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 208}, {"fields": {"model": "trainingexample", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 209}, {"fields": {"model": "studenttrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 210}, {"fields": {"model": "studenttrainingworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 211}, {"fields": {"model": "aiclassifierset", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 212}, {"fields": {"model": "aiclassifier", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 213}, {"fields": {"model": "aitrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 214}, {"fields": {"model": "aigradingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 215}, {"fields": {"model": "staffworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 216}, {"fields": {"model": "assessmentworkflow", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 217}, {"fields": {"model": "assessmentworkflowstep", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 218}, {"fields": {"model": "assessmentworkflowcancellation", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 219}, {"fields": {"model": "profile", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 220}, {"fields": {"model": "video", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 221}, {"fields": {"model": "coursevideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 222}, {"fields": {"model": "encodedvideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 223}, {"fields": {"model": "subtitle", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 224}, {"fields": {"model": "milestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 225}, {"fields": {"model": "milestonerelationshiptype", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 226}, {"fields": {"model": "coursemilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 227}, {"fields": {"model": "coursecontentmilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 228}, {"fields": {"model": "usermilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 229}, {"fields": {"model": "proctoredexam", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 230}, {"fields": {"model": "proctoredexamreviewpolicy", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 231}, {"fields": {"model": "proctoredexamreviewpolicyhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 232}, {"fields": {"model": "proctoredexamstudentattempt", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 233}, {"fields": {"model": "proctoredexamstudentattempthistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 234}, {"fields": {"model": "proctoredexamstudentallowance", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 235}, {"fields": {"model": "proctoredexamstudentallowancehistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 236}, {"fields": {"model": "proctoredexamsoftwaresecurereview", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 237}, {"fields": {"model": "proctoredexamsoftwaresecurereviewhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 238}, {"fields": {"model": "proctoredexamsoftwaresecurecomment", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 239}, {"fields": {"model": "organization", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 240}, {"fields": {"model": "organizationcourse", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 241}, {"fields": {"model": "videouploadconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 242}, {"fields": {"model": "pushnotificationconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 243}, {"fields": {"model": "coursecreator", "app_label": "course_creators"}, "model": "contenttypes.contenttype", "pk": 244}, {"fields": {"model": "studioconfig", "app_label": "xblock_config"}, "model": "contenttypes.contenttype", "pk": 245}, {"fields": {"domain": "example.com", "name": "example.com"}, "model": "sites.site", "pk": 1}, {"fields": {"default": false, "mode": "honor", "icon": "badges/honor.png"}, "model": "certificates.badgeimageconfiguration", "pk": 1}, {"fields": {"default": false, "mode": "verified", "icon": "badges/verified.png"}, "model": "certificates.badgeimageconfiguration", "pk": 2}, {"fields": {"default": false, "mode": "professional", "icon": "badges/professional.png"}, "model": "certificates.badgeimageconfiguration", "pk": 3}, {"fields": {"plain_template": "{course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": null}, "model": "bulk_email.courseemailtemplate", "pk": 1}, {"fields": {"plain_template": "THIS IS A BRANDED TEXT TEMPLATE. {course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " THIS IS A BRANDED HTML TEMPLATE Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": "branded.template"}, "model": "bulk_email.courseemailtemplate", "pk": 2}, {"fields": {"country": "AF"}, "model": "embargo.country", "pk": 1}, {"fields": {"country": "AX"}, "model": "embargo.country", "pk": 2}, {"fields": {"country": "AL"}, "model": "embargo.country", "pk": 3}, {"fields": {"country": "DZ"}, "model": "embargo.country", "pk": 4}, {"fields": {"country": "AS"}, "model": "embargo.country", "pk": 5}, {"fields": {"country": "AD"}, "model": "embargo.country", "pk": 6}, {"fields": {"country": "AO"}, "model": "embargo.country", "pk": 7}, {"fields": {"country": "AI"}, "model": "embargo.country", "pk": 8}, {"fields": {"country": "AQ"}, "model": "embargo.country", "pk": 9}, {"fields": {"country": "AG"}, "model": "embargo.country", "pk": 10}, {"fields": {"country": "AR"}, "model": "embargo.country", "pk": 11}, {"fields": {"country": "AM"}, "model": "embargo.country", "pk": 12}, {"fields": {"country": "AW"}, "model": "embargo.country", "pk": 13}, {"fields": {"country": "AU"}, "model": "embargo.country", "pk": 14}, {"fields": {"country": "AT"}, "model": "embargo.country", "pk": 15}, {"fields": {"country": "AZ"}, "model": "embargo.country", "pk": 16}, {"fields": {"country": "BS"}, "model": "embargo.country", "pk": 17}, {"fields": {"country": "BH"}, "model": "embargo.country", "pk": 18}, {"fields": {"country": "BD"}, "model": "embargo.country", "pk": 19}, {"fields": {"country": "BB"}, "model": "embargo.country", "pk": 20}, {"fields": {"country": "BY"}, "model": "embargo.country", "pk": 21}, {"fields": {"country": "BE"}, "model": "embargo.country", "pk": 22}, {"fields": {"country": "BZ"}, "model": "embargo.country", "pk": 23}, {"fields": {"country": "BJ"}, "model": "embargo.country", "pk": 24}, {"fields": {"country": "BM"}, "model": "embargo.country", "pk": 25}, {"fields": {"country": "BT"}, "model": "embargo.country", "pk": 26}, {"fields": {"country": "BO"}, "model": "embargo.country", "pk": 27}, {"fields": {"country": "BQ"}, "model": "embargo.country", "pk": 28}, {"fields": {"country": "BA"}, "model": "embargo.country", "pk": 29}, {"fields": {"country": "BW"}, "model": "embargo.country", "pk": 30}, {"fields": {"country": "BV"}, "model": "embargo.country", "pk": 31}, {"fields": {"country": "BR"}, "model": "embargo.country", "pk": 32}, {"fields": {"country": "IO"}, "model": "embargo.country", "pk": 33}, {"fields": {"country": "BN"}, "model": "embargo.country", "pk": 34}, {"fields": {"country": "BG"}, "model": "embargo.country", "pk": 35}, {"fields": {"country": "BF"}, "model": "embargo.country", "pk": 36}, {"fields": {"country": "BI"}, "model": "embargo.country", "pk": 37}, {"fields": {"country": "CV"}, "model": "embargo.country", "pk": 38}, {"fields": {"country": "KH"}, "model": "embargo.country", "pk": 39}, {"fields": {"country": "CM"}, "model": "embargo.country", "pk": 40}, {"fields": {"country": "CA"}, "model": "embargo.country", "pk": 41}, {"fields": {"country": "KY"}, "model": "embargo.country", "pk": 42}, {"fields": {"country": "CF"}, "model": "embargo.country", "pk": 43}, {"fields": {"country": "TD"}, "model": "embargo.country", "pk": 44}, {"fields": {"country": "CL"}, "model": "embargo.country", "pk": 45}, {"fields": {"country": "CN"}, "model": "embargo.country", "pk": 46}, {"fields": {"country": "CX"}, "model": "embargo.country", "pk": 47}, {"fields": {"country": "CC"}, "model": "embargo.country", "pk": 48}, {"fields": {"country": "CO"}, "model": "embargo.country", "pk": 49}, {"fields": {"country": "KM"}, "model": "embargo.country", "pk": 50}, {"fields": {"country": "CG"}, "model": "embargo.country", "pk": 51}, {"fields": {"country": "CD"}, "model": "embargo.country", "pk": 52}, {"fields": {"country": "CK"}, "model": "embargo.country", "pk": 53}, {"fields": {"country": "CR"}, "model": "embargo.country", "pk": 54}, {"fields": {"country": "CI"}, "model": "embargo.country", "pk": 55}, {"fields": {"country": "HR"}, "model": "embargo.country", "pk": 56}, {"fields": {"country": "CU"}, "model": "embargo.country", "pk": 57}, {"fields": {"country": "CW"}, "model": "embargo.country", "pk": 58}, {"fields": {"country": "CY"}, "model": "embargo.country", "pk": 59}, {"fields": {"country": "CZ"}, "model": "embargo.country", "pk": 60}, {"fields": {"country": "DK"}, "model": "embargo.country", "pk": 61}, {"fields": {"country": "DJ"}, "model": "embargo.country", "pk": 62}, {"fields": {"country": "DM"}, "model": "embargo.country", "pk": 63}, {"fields": {"country": "DO"}, "model": "embargo.country", "pk": 64}, {"fields": {"country": "EC"}, "model": "embargo.country", "pk": 65}, {"fields": {"country": "EG"}, "model": "embargo.country", "pk": 66}, {"fields": {"country": "SV"}, "model": "embargo.country", "pk": 67}, {"fields": {"country": "GQ"}, "model": "embargo.country", "pk": 68}, {"fields": {"country": "ER"}, "model": "embargo.country", "pk": 69}, {"fields": {"country": "EE"}, "model": "embargo.country", "pk": 70}, {"fields": {"country": "ET"}, "model": "embargo.country", "pk": 71}, {"fields": {"country": "FK"}, "model": "embargo.country", "pk": 72}, {"fields": {"country": "FO"}, "model": "embargo.country", "pk": 73}, {"fields": {"country": "FJ"}, "model": "embargo.country", "pk": 74}, {"fields": {"country": "FI"}, "model": "embargo.country", "pk": 75}, {"fields": {"country": "FR"}, "model": "embargo.country", "pk": 76}, {"fields": {"country": "GF"}, "model": "embargo.country", "pk": 77}, {"fields": {"country": "PF"}, "model": "embargo.country", "pk": 78}, {"fields": {"country": "TF"}, "model": "embargo.country", "pk": 79}, {"fields": {"country": "GA"}, "model": "embargo.country", "pk": 80}, {"fields": {"country": "GM"}, "model": "embargo.country", "pk": 81}, {"fields": {"country": "GE"}, "model": "embargo.country", "pk": 82}, {"fields": {"country": "DE"}, "model": "embargo.country", "pk": 83}, {"fields": {"country": "GH"}, "model": "embargo.country", "pk": 84}, {"fields": {"country": "GI"}, "model": "embargo.country", "pk": 85}, {"fields": {"country": "GR"}, "model": "embargo.country", "pk": 86}, {"fields": {"country": "GL"}, "model": "embargo.country", "pk": 87}, {"fields": {"country": "GD"}, "model": "embargo.country", "pk": 88}, {"fields": {"country": "GP"}, "model": "embargo.country", "pk": 89}, {"fields": {"country": "GU"}, "model": "embargo.country", "pk": 90}, {"fields": {"country": "GT"}, "model": "embargo.country", "pk": 91}, {"fields": {"country": "GG"}, "model": "embargo.country", "pk": 92}, {"fields": {"country": "GN"}, "model": "embargo.country", "pk": 93}, {"fields": {"country": "GW"}, "model": "embargo.country", "pk": 94}, {"fields": {"country": "GY"}, "model": "embargo.country", "pk": 95}, {"fields": {"country": "HT"}, "model": "embargo.country", "pk": 96}, {"fields": {"country": "HM"}, "model": "embargo.country", "pk": 97}, {"fields": {"country": "VA"}, "model": "embargo.country", "pk": 98}, {"fields": {"country": "HN"}, "model": "embargo.country", "pk": 99}, {"fields": {"country": "HK"}, "model": "embargo.country", "pk": 100}, {"fields": {"country": "HU"}, "model": "embargo.country", "pk": 101}, {"fields": {"country": "IS"}, "model": "embargo.country", "pk": 102}, {"fields": {"country": "IN"}, "model": "embargo.country", "pk": 103}, {"fields": {"country": "ID"}, "model": "embargo.country", "pk": 104}, {"fields": {"country": "IR"}, "model": "embargo.country", "pk": 105}, {"fields": {"country": "IQ"}, "model": "embargo.country", "pk": 106}, {"fields": {"country": "IE"}, "model": "embargo.country", "pk": 107}, {"fields": {"country": "IM"}, "model": "embargo.country", "pk": 108}, {"fields": {"country": "IL"}, "model": "embargo.country", "pk": 109}, {"fields": {"country": "IT"}, "model": "embargo.country", "pk": 110}, {"fields": {"country": "JM"}, "model": "embargo.country", "pk": 111}, {"fields": {"country": "JP"}, "model": "embargo.country", "pk": 112}, {"fields": {"country": "JE"}, "model": "embargo.country", "pk": 113}, {"fields": {"country": "JO"}, "model": "embargo.country", "pk": 114}, {"fields": {"country": "KZ"}, "model": "embargo.country", "pk": 115}, {"fields": {"country": "KE"}, "model": "embargo.country", "pk": 116}, {"fields": {"country": "KI"}, "model": "embargo.country", "pk": 117}, {"fields": {"country": "KW"}, "model": "embargo.country", "pk": 118}, {"fields": {"country": "KG"}, "model": "embargo.country", "pk": 119}, {"fields": {"country": "LA"}, "model": "embargo.country", "pk": 120}, {"fields": {"country": "LV"}, "model": "embargo.country", "pk": 121}, {"fields": {"country": "LB"}, "model": "embargo.country", "pk": 122}, {"fields": {"country": "LS"}, "model": "embargo.country", "pk": 123}, {"fields": {"country": "LR"}, "model": "embargo.country", "pk": 124}, {"fields": {"country": "LY"}, "model": "embargo.country", "pk": 125}, {"fields": {"country": "LI"}, "model": "embargo.country", "pk": 126}, {"fields": {"country": "LT"}, "model": "embargo.country", "pk": 127}, {"fields": {"country": "LU"}, "model": "embargo.country", "pk": 128}, {"fields": {"country": "MO"}, "model": "embargo.country", "pk": 129}, {"fields": {"country": "MK"}, "model": "embargo.country", "pk": 130}, {"fields": {"country": "MG"}, "model": "embargo.country", "pk": 131}, {"fields": {"country": "MW"}, "model": "embargo.country", "pk": 132}, {"fields": {"country": "MY"}, "model": "embargo.country", "pk": 133}, {"fields": {"country": "MV"}, "model": "embargo.country", "pk": 134}, {"fields": {"country": "ML"}, "model": "embargo.country", "pk": 135}, {"fields": {"country": "MT"}, "model": "embargo.country", "pk": 136}, {"fields": {"country": "MH"}, "model": "embargo.country", "pk": 137}, {"fields": {"country": "MQ"}, "model": "embargo.country", "pk": 138}, {"fields": {"country": "MR"}, "model": "embargo.country", "pk": 139}, {"fields": {"country": "MU"}, "model": "embargo.country", "pk": 140}, {"fields": {"country": "YT"}, "model": "embargo.country", "pk": 141}, {"fields": {"country": "MX"}, "model": "embargo.country", "pk": 142}, {"fields": {"country": "FM"}, "model": "embargo.country", "pk": 143}, {"fields": {"country": "MD"}, "model": "embargo.country", "pk": 144}, {"fields": {"country": "MC"}, "model": "embargo.country", "pk": 145}, {"fields": {"country": "MN"}, "model": "embargo.country", "pk": 146}, {"fields": {"country": "ME"}, "model": "embargo.country", "pk": 147}, {"fields": {"country": "MS"}, "model": "embargo.country", "pk": 148}, {"fields": {"country": "MA"}, "model": "embargo.country", "pk": 149}, {"fields": {"country": "MZ"}, "model": "embargo.country", "pk": 150}, {"fields": {"country": "MM"}, "model": "embargo.country", "pk": 151}, {"fields": {"country": "NA"}, "model": "embargo.country", "pk": 152}, {"fields": {"country": "NR"}, "model": "embargo.country", "pk": 153}, {"fields": {"country": "NP"}, "model": "embargo.country", "pk": 154}, {"fields": {"country": "NL"}, "model": "embargo.country", "pk": 155}, {"fields": {"country": "NC"}, "model": "embargo.country", "pk": 156}, {"fields": {"country": "NZ"}, "model": "embargo.country", "pk": 157}, {"fields": {"country": "NI"}, "model": "embargo.country", "pk": 158}, {"fields": {"country": "NE"}, "model": "embargo.country", "pk": 159}, {"fields": {"country": "NG"}, "model": "embargo.country", "pk": 160}, {"fields": {"country": "NU"}, "model": "embargo.country", "pk": 161}, {"fields": {"country": "NF"}, "model": "embargo.country", "pk": 162}, {"fields": {"country": "KP"}, "model": "embargo.country", "pk": 163}, {"fields": {"country": "MP"}, "model": "embargo.country", "pk": 164}, {"fields": {"country": "NO"}, "model": "embargo.country", "pk": 165}, {"fields": {"country": "OM"}, "model": "embargo.country", "pk": 166}, {"fields": {"country": "PK"}, "model": "embargo.country", "pk": 167}, {"fields": {"country": "PW"}, "model": "embargo.country", "pk": 168}, {"fields": {"country": "PS"}, "model": "embargo.country", "pk": 169}, {"fields": {"country": "PA"}, "model": "embargo.country", "pk": 170}, {"fields": {"country": "PG"}, "model": "embargo.country", "pk": 171}, {"fields": {"country": "PY"}, "model": "embargo.country", "pk": 172}, {"fields": {"country": "PE"}, "model": "embargo.country", "pk": 173}, {"fields": {"country": "PH"}, "model": "embargo.country", "pk": 174}, {"fields": {"country": "PN"}, "model": "embargo.country", "pk": 175}, {"fields": {"country": "PL"}, "model": "embargo.country", "pk": 176}, {"fields": {"country": "PT"}, "model": "embargo.country", "pk": 177}, {"fields": {"country": "PR"}, "model": "embargo.country", "pk": 178}, {"fields": {"country": "QA"}, "model": "embargo.country", "pk": 179}, {"fields": {"country": "RE"}, "model": "embargo.country", "pk": 180}, {"fields": {"country": "RO"}, "model": "embargo.country", "pk": 181}, {"fields": {"country": "RU"}, "model": "embargo.country", "pk": 182}, {"fields": {"country": "RW"}, "model": "embargo.country", "pk": 183}, {"fields": {"country": "BL"}, "model": "embargo.country", "pk": 184}, {"fields": {"country": "SH"}, "model": "embargo.country", "pk": 185}, {"fields": {"country": "KN"}, "model": "embargo.country", "pk": 186}, {"fields": {"country": "LC"}, "model": "embargo.country", "pk": 187}, {"fields": {"country": "MF"}, "model": "embargo.country", "pk": 188}, {"fields": {"country": "PM"}, "model": "embargo.country", "pk": 189}, {"fields": {"country": "VC"}, "model": "embargo.country", "pk": 190}, {"fields": {"country": "WS"}, "model": "embargo.country", "pk": 191}, {"fields": {"country": "SM"}, "model": "embargo.country", "pk": 192}, {"fields": {"country": "ST"}, "model": "embargo.country", "pk": 193}, {"fields": {"country": "SA"}, "model": "embargo.country", "pk": 194}, {"fields": {"country": "SN"}, "model": "embargo.country", "pk": 195}, {"fields": {"country": "RS"}, "model": "embargo.country", "pk": 196}, {"fields": {"country": "SC"}, "model": "embargo.country", "pk": 197}, {"fields": {"country": "SL"}, "model": "embargo.country", "pk": 198}, {"fields": {"country": "SG"}, "model": "embargo.country", "pk": 199}, {"fields": {"country": "SX"}, "model": "embargo.country", "pk": 200}, {"fields": {"country": "SK"}, "model": "embargo.country", "pk": 201}, {"fields": {"country": "SI"}, "model": "embargo.country", "pk": 202}, {"fields": {"country": "SB"}, "model": "embargo.country", "pk": 203}, {"fields": {"country": "SO"}, "model": "embargo.country", "pk": 204}, {"fields": {"country": "ZA"}, "model": "embargo.country", "pk": 205}, {"fields": {"country": "GS"}, "model": "embargo.country", "pk": 206}, {"fields": {"country": "KR"}, "model": "embargo.country", "pk": 207}, {"fields": {"country": "SS"}, "model": "embargo.country", "pk": 208}, {"fields": {"country": "ES"}, "model": "embargo.country", "pk": 209}, {"fields": {"country": "LK"}, "model": "embargo.country", "pk": 210}, {"fields": {"country": "SD"}, "model": "embargo.country", "pk": 211}, {"fields": {"country": "SR"}, "model": "embargo.country", "pk": 212}, {"fields": {"country": "SJ"}, "model": "embargo.country", "pk": 213}, {"fields": {"country": "SZ"}, "model": "embargo.country", "pk": 214}, {"fields": {"country": "SE"}, "model": "embargo.country", "pk": 215}, {"fields": {"country": "CH"}, "model": "embargo.country", "pk": 216}, {"fields": {"country": "SY"}, "model": "embargo.country", "pk": 217}, {"fields": {"country": "TW"}, "model": "embargo.country", "pk": 218}, {"fields": {"country": "TJ"}, "model": "embargo.country", "pk": 219}, {"fields": {"country": "TZ"}, "model": "embargo.country", "pk": 220}, {"fields": {"country": "TH"}, "model": "embargo.country", "pk": 221}, {"fields": {"country": "TL"}, "model": "embargo.country", "pk": 222}, {"fields": {"country": "TG"}, "model": "embargo.country", "pk": 223}, {"fields": {"country": "TK"}, "model": "embargo.country", "pk": 224}, {"fields": {"country": "TO"}, "model": "embargo.country", "pk": 225}, {"fields": {"country": "TT"}, "model": "embargo.country", "pk": 226}, {"fields": {"country": "TN"}, "model": "embargo.country", "pk": 227}, {"fields": {"country": "TR"}, "model": "embargo.country", "pk": 228}, {"fields": {"country": "TM"}, "model": "embargo.country", "pk": 229}, {"fields": {"country": "TC"}, "model": "embargo.country", "pk": 230}, {"fields": {"country": "TV"}, "model": "embargo.country", "pk": 231}, {"fields": {"country": "UG"}, "model": "embargo.country", "pk": 232}, {"fields": {"country": "UA"}, "model": "embargo.country", "pk": 233}, {"fields": {"country": "AE"}, "model": "embargo.country", "pk": 234}, {"fields": {"country": "GB"}, "model": "embargo.country", "pk": 235}, {"fields": {"country": "UM"}, "model": "embargo.country", "pk": 236}, {"fields": {"country": "US"}, "model": "embargo.country", "pk": 237}, {"fields": {"country": "UY"}, "model": "embargo.country", "pk": 238}, {"fields": {"country": "UZ"}, "model": "embargo.country", "pk": 239}, {"fields": {"country": "VU"}, "model": "embargo.country", "pk": 240}, {"fields": {"country": "VE"}, "model": "embargo.country", "pk": 241}, {"fields": {"country": "VN"}, "model": "embargo.country", "pk": 242}, {"fields": {"country": "VG"}, "model": "embargo.country", "pk": 243}, {"fields": {"country": "VI"}, "model": "embargo.country", "pk": 244}, {"fields": {"country": "WF"}, "model": "embargo.country", "pk": 245}, {"fields": {"country": "EH"}, "model": "embargo.country", "pk": 246}, {"fields": {"country": "YE"}, "model": "embargo.country", "pk": 247}, {"fields": {"country": "ZM"}, "model": "embargo.country", "pk": 248}, {"fields": {"country": "ZW"}, "model": "embargo.country", "pk": 249}, {"fields": {"profile_name": "desktop_mp4"}, "model": "edxval.profile", "pk": 1}, {"fields": {"profile_name": "desktop_webm"}, "model": "edxval.profile", "pk": 2}, {"fields": {"profile_name": "mobile_high"}, "model": "edxval.profile", "pk": 3}, {"fields": {"profile_name": "mobile_low"}, "model": "edxval.profile", "pk": 4}, {"fields": {"profile_name": "youtube"}, "model": "edxval.profile", "pk": 5}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"fulfills\"", "modified": "2016-01-21T18:53:35.745Z", "name": "fulfills", "created": "2016-01-21T18:53:35.744Z"}, "model": "milestones.milestonerelationshiptype", "pk": 1}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"requires\"", "modified": "2016-01-21T18:53:35.747Z", "name": "requires", "created": "2016-01-21T18:53:35.747Z"}, "model": "milestones.milestonerelationshiptype", "pk": 2}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 1}, "model": "auth.permission", "pk": 1}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 1}, "model": "auth.permission", "pk": 2}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 1}, "model": "auth.permission", "pk": 3}, {"fields": {"codename": "add_group", "name": "Can add group", "content_type": 2}, "model": "auth.permission", "pk": 4}, {"fields": {"codename": "change_group", "name": "Can change group", "content_type": 2}, "model": "auth.permission", "pk": 5}, {"fields": {"codename": "delete_group", "name": "Can delete group", "content_type": 2}, "model": "auth.permission", "pk": 6}, {"fields": {"codename": "add_user", "name": "Can add user", "content_type": 3}, "model": "auth.permission", "pk": 7}, {"fields": {"codename": "change_user", "name": "Can change user", "content_type": 3}, "model": "auth.permission", "pk": 8}, {"fields": {"codename": "delete_user", "name": "Can delete user", "content_type": 3}, "model": "auth.permission", "pk": 9}, {"fields": {"codename": "add_contenttype", "name": "Can add content type", "content_type": 4}, "model": "auth.permission", "pk": 10}, {"fields": {"codename": "change_contenttype", "name": "Can change content type", "content_type": 4}, "model": "auth.permission", "pk": 11}, {"fields": {"codename": "delete_contenttype", "name": "Can delete content type", "content_type": 4}, "model": "auth.permission", "pk": 12}, {"fields": {"codename": "add_session", "name": "Can add session", "content_type": 5}, "model": "auth.permission", "pk": 13}, {"fields": {"codename": "change_session", "name": "Can change session", "content_type": 5}, "model": "auth.permission", "pk": 14}, {"fields": {"codename": "delete_session", "name": "Can delete session", "content_type": 5}, "model": "auth.permission", "pk": 15}, {"fields": {"codename": "add_site", "name": "Can add site", "content_type": 6}, "model": "auth.permission", "pk": 16}, {"fields": {"codename": "change_site", "name": "Can change site", "content_type": 6}, "model": "auth.permission", "pk": 17}, {"fields": {"codename": "delete_site", "name": "Can delete site", "content_type": 6}, "model": "auth.permission", "pk": 18}, {"fields": {"codename": "add_taskmeta", "name": "Can add task state", "content_type": 7}, "model": "auth.permission", "pk": 19}, {"fields": {"codename": "change_taskmeta", "name": "Can change task state", "content_type": 7}, "model": "auth.permission", "pk": 20}, {"fields": {"codename": "delete_taskmeta", "name": "Can delete task state", "content_type": 7}, "model": "auth.permission", "pk": 21}, {"fields": {"codename": "add_tasksetmeta", "name": "Can add saved group result", "content_type": 8}, "model": "auth.permission", "pk": 22}, {"fields": {"codename": "change_tasksetmeta", "name": "Can change saved group result", "content_type": 8}, "model": "auth.permission", "pk": 23}, {"fields": {"codename": "delete_tasksetmeta", "name": "Can delete saved group result", "content_type": 8}, "model": "auth.permission", "pk": 24}, {"fields": {"codename": "add_intervalschedule", "name": "Can add interval", "content_type": 9}, "model": "auth.permission", "pk": 25}, {"fields": {"codename": "change_intervalschedule", "name": "Can change interval", "content_type": 9}, "model": "auth.permission", "pk": 26}, {"fields": {"codename": "delete_intervalschedule", "name": "Can delete interval", "content_type": 9}, "model": "auth.permission", "pk": 27}, {"fields": {"codename": "add_crontabschedule", "name": "Can add crontab", "content_type": 10}, "model": "auth.permission", "pk": 28}, {"fields": {"codename": "change_crontabschedule", "name": "Can change crontab", "content_type": 10}, "model": "auth.permission", "pk": 29}, {"fields": {"codename": "delete_crontabschedule", "name": "Can delete crontab", "content_type": 10}, "model": "auth.permission", "pk": 30}, {"fields": {"codename": "add_periodictasks", "name": "Can add periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 31}, {"fields": {"codename": "change_periodictasks", "name": "Can change periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 32}, {"fields": {"codename": "delete_periodictasks", "name": "Can delete periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 33}, {"fields": {"codename": "add_periodictask", "name": "Can add periodic task", "content_type": 12}, "model": "auth.permission", "pk": 34}, {"fields": {"codename": "change_periodictask", "name": "Can change periodic task", "content_type": 12}, "model": "auth.permission", "pk": 35}, {"fields": {"codename": "delete_periodictask", "name": "Can delete periodic task", "content_type": 12}, "model": "auth.permission", "pk": 36}, {"fields": {"codename": "add_workerstate", "name": "Can add worker", "content_type": 13}, "model": "auth.permission", "pk": 37}, {"fields": {"codename": "change_workerstate", "name": "Can change worker", "content_type": 13}, "model": "auth.permission", "pk": 38}, {"fields": {"codename": "delete_workerstate", "name": "Can delete worker", "content_type": 13}, "model": "auth.permission", "pk": 39}, {"fields": {"codename": "add_taskstate", "name": "Can add task", "content_type": 14}, "model": "auth.permission", "pk": 40}, {"fields": {"codename": "change_taskstate", "name": "Can change task", "content_type": 14}, "model": "auth.permission", "pk": 41}, {"fields": {"codename": "delete_taskstate", "name": "Can delete task", "content_type": 14}, "model": "auth.permission", "pk": 42}, {"fields": {"codename": "add_globalstatusmessage", "name": "Can add global status message", "content_type": 15}, "model": "auth.permission", "pk": 43}, {"fields": {"codename": "change_globalstatusmessage", "name": "Can change global status message", "content_type": 15}, "model": "auth.permission", "pk": 44}, {"fields": {"codename": "delete_globalstatusmessage", "name": "Can delete global status message", "content_type": 15}, "model": "auth.permission", "pk": 45}, {"fields": {"codename": "add_coursemessage", "name": "Can add course message", "content_type": 16}, "model": "auth.permission", "pk": 46}, {"fields": {"codename": "change_coursemessage", "name": "Can change course message", "content_type": 16}, "model": "auth.permission", "pk": 47}, {"fields": {"codename": "delete_coursemessage", "name": "Can delete course message", "content_type": 16}, "model": "auth.permission", "pk": 48}, {"fields": {"codename": "add_assetbaseurlconfig", "name": "Can add asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 49}, {"fields": {"codename": "change_assetbaseurlconfig", "name": "Can change asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 50}, {"fields": {"codename": "delete_assetbaseurlconfig", "name": "Can delete asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 51}, {"fields": {"codename": "add_studentmodule", "name": "Can add student module", "content_type": 18}, "model": "auth.permission", "pk": 52}, {"fields": {"codename": "change_studentmodule", "name": "Can change student module", "content_type": 18}, "model": "auth.permission", "pk": 53}, {"fields": {"codename": "delete_studentmodule", "name": "Can delete student module", "content_type": 18}, "model": "auth.permission", "pk": 54}, {"fields": {"codename": "add_studentmodulehistory", "name": "Can add student module history", "content_type": 19}, "model": "auth.permission", "pk": 55}, {"fields": {"codename": "change_studentmodulehistory", "name": "Can change student module history", "content_type": 19}, "model": "auth.permission", "pk": 56}, {"fields": {"codename": "delete_studentmodulehistory", "name": "Can delete student module history", "content_type": 19}, "model": "auth.permission", "pk": 57}, {"fields": {"codename": "add_xmoduleuserstatesummaryfield", "name": "Can add x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 58}, {"fields": {"codename": "change_xmoduleuserstatesummaryfield", "name": "Can change x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 59}, {"fields": {"codename": "delete_xmoduleuserstatesummaryfield", "name": "Can delete x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 60}, {"fields": {"codename": "add_xmodulestudentprefsfield", "name": "Can add x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 61}, {"fields": {"codename": "change_xmodulestudentprefsfield", "name": "Can change x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 62}, {"fields": {"codename": "delete_xmodulestudentprefsfield", "name": "Can delete x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 63}, {"fields": {"codename": "add_xmodulestudentinfofield", "name": "Can add x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 64}, {"fields": {"codename": "change_xmodulestudentinfofield", "name": "Can change x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 65}, {"fields": {"codename": "delete_xmodulestudentinfofield", "name": "Can delete x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 66}, {"fields": {"codename": "add_offlinecomputedgrade", "name": "Can add offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 67}, {"fields": {"codename": "change_offlinecomputedgrade", "name": "Can change offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 68}, {"fields": {"codename": "delete_offlinecomputedgrade", "name": "Can delete offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 69}, {"fields": {"codename": "add_offlinecomputedgradelog", "name": "Can add offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 70}, {"fields": {"codename": "change_offlinecomputedgradelog", "name": "Can change offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 71}, {"fields": {"codename": "delete_offlinecomputedgradelog", "name": "Can delete offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 72}, {"fields": {"codename": "add_studentfieldoverride", "name": "Can add student field override", "content_type": 25}, "model": "auth.permission", "pk": 73}, {"fields": {"codename": "change_studentfieldoverride", "name": "Can change student field override", "content_type": 25}, "model": "auth.permission", "pk": 74}, {"fields": {"codename": "delete_studentfieldoverride", "name": "Can delete student field override", "content_type": 25}, "model": "auth.permission", "pk": 75}, {"fields": {"codename": "add_anonymoususerid", "name": "Can add anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 76}, {"fields": {"codename": "change_anonymoususerid", "name": "Can change anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 77}, {"fields": {"codename": "delete_anonymoususerid", "name": "Can delete anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 78}, {"fields": {"codename": "add_userstanding", "name": "Can add user standing", "content_type": 27}, "model": "auth.permission", "pk": 79}, {"fields": {"codename": "change_userstanding", "name": "Can change user standing", "content_type": 27}, "model": "auth.permission", "pk": 80}, {"fields": {"codename": "delete_userstanding", "name": "Can delete user standing", "content_type": 27}, "model": "auth.permission", "pk": 81}, {"fields": {"codename": "add_userprofile", "name": "Can add user profile", "content_type": 28}, "model": "auth.permission", "pk": 82}, {"fields": {"codename": "change_userprofile", "name": "Can change user profile", "content_type": 28}, "model": "auth.permission", "pk": 83}, {"fields": {"codename": "delete_userprofile", "name": "Can delete user profile", "content_type": 28}, "model": "auth.permission", "pk": 84}, {"fields": {"codename": "add_usersignupsource", "name": "Can add user signup source", "content_type": 29}, "model": "auth.permission", "pk": 85}, {"fields": {"codename": "change_usersignupsource", "name": "Can change user signup source", "content_type": 29}, "model": "auth.permission", "pk": 86}, {"fields": {"codename": "delete_usersignupsource", "name": "Can delete user signup source", "content_type": 29}, "model": "auth.permission", "pk": 87}, {"fields": {"codename": "add_usertestgroup", "name": "Can add user test group", "content_type": 30}, "model": "auth.permission", "pk": 88}, {"fields": {"codename": "change_usertestgroup", "name": "Can change user test group", "content_type": 30}, "model": "auth.permission", "pk": 89}, {"fields": {"codename": "delete_usertestgroup", "name": "Can delete user test group", "content_type": 30}, "model": "auth.permission", "pk": 90}, {"fields": {"codename": "add_registration", "name": "Can add registration", "content_type": 31}, "model": "auth.permission", "pk": 91}, {"fields": {"codename": "change_registration", "name": "Can change registration", "content_type": 31}, "model": "auth.permission", "pk": 92}, {"fields": {"codename": "delete_registration", "name": "Can delete registration", "content_type": 31}, "model": "auth.permission", "pk": 93}, {"fields": {"codename": "add_pendingnamechange", "name": "Can add pending name change", "content_type": 32}, "model": "auth.permission", "pk": 94}, {"fields": {"codename": "change_pendingnamechange", "name": "Can change pending name change", "content_type": 32}, "model": "auth.permission", "pk": 95}, {"fields": {"codename": "delete_pendingnamechange", "name": "Can delete pending name change", "content_type": 32}, "model": "auth.permission", "pk": 96}, {"fields": {"codename": "add_pendingemailchange", "name": "Can add pending email change", "content_type": 33}, "model": "auth.permission", "pk": 97}, {"fields": {"codename": "change_pendingemailchange", "name": "Can change pending email change", "content_type": 33}, "model": "auth.permission", "pk": 98}, {"fields": {"codename": "delete_pendingemailchange", "name": "Can delete pending email change", "content_type": 33}, "model": "auth.permission", "pk": 99}, {"fields": {"codename": "add_passwordhistory", "name": "Can add password history", "content_type": 34}, "model": "auth.permission", "pk": 100}, {"fields": {"codename": "change_passwordhistory", "name": "Can change password history", "content_type": 34}, "model": "auth.permission", "pk": 101}, {"fields": {"codename": "delete_passwordhistory", "name": "Can delete password history", "content_type": 34}, "model": "auth.permission", "pk": 102}, {"fields": {"codename": "add_loginfailures", "name": "Can add login failures", "content_type": 35}, "model": "auth.permission", "pk": 103}, {"fields": {"codename": "change_loginfailures", "name": "Can change login failures", "content_type": 35}, "model": "auth.permission", "pk": 104}, {"fields": {"codename": "delete_loginfailures", "name": "Can delete login failures", "content_type": 35}, "model": "auth.permission", "pk": 105}, {"fields": {"codename": "add_historicalcourseenrollment", "name": "Can add historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 106}, {"fields": {"codename": "change_historicalcourseenrollment", "name": "Can change historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 107}, {"fields": {"codename": "delete_historicalcourseenrollment", "name": "Can delete historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 108}, {"fields": {"codename": "add_courseenrollment", "name": "Can add course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 109}, {"fields": {"codename": "change_courseenrollment", "name": "Can change course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 110}, {"fields": {"codename": "delete_courseenrollment", "name": "Can delete course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 111}, {"fields": {"codename": "add_manualenrollmentaudit", "name": "Can add manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 112}, {"fields": {"codename": "change_manualenrollmentaudit", "name": "Can change manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 113}, {"fields": {"codename": "delete_manualenrollmentaudit", "name": "Can delete manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 114}, {"fields": {"codename": "add_courseenrollmentallowed", "name": "Can add course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 115}, {"fields": {"codename": "change_courseenrollmentallowed", "name": "Can change course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 116}, {"fields": {"codename": "delete_courseenrollmentallowed", "name": "Can delete course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 117}, {"fields": {"codename": "add_courseaccessrole", "name": "Can add course access role", "content_type": 40}, "model": "auth.permission", "pk": 118}, {"fields": {"codename": "change_courseaccessrole", "name": "Can change course access role", "content_type": 40}, "model": "auth.permission", "pk": 119}, {"fields": {"codename": "delete_courseaccessrole", "name": "Can delete course access role", "content_type": 40}, "model": "auth.permission", "pk": 120}, {"fields": {"codename": "add_dashboardconfiguration", "name": "Can add dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 121}, {"fields": {"codename": "change_dashboardconfiguration", "name": "Can change dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 122}, {"fields": {"codename": "delete_dashboardconfiguration", "name": "Can delete dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 123}, {"fields": {"codename": "add_linkedinaddtoprofileconfiguration", "name": "Can add linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 124}, {"fields": {"codename": "change_linkedinaddtoprofileconfiguration", "name": "Can change linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 125}, {"fields": {"codename": "delete_linkedinaddtoprofileconfiguration", "name": "Can delete linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 126}, {"fields": {"codename": "add_entranceexamconfiguration", "name": "Can add entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 127}, {"fields": {"codename": "change_entranceexamconfiguration", "name": "Can change entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 128}, {"fields": {"codename": "delete_entranceexamconfiguration", "name": "Can delete entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 129}, {"fields": {"codename": "add_languageproficiency", "name": "Can add language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 130}, {"fields": {"codename": "change_languageproficiency", "name": "Can change language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 131}, {"fields": {"codename": "delete_languageproficiency", "name": "Can delete language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 132}, {"fields": {"codename": "add_courseenrollmentattribute", "name": "Can add course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 133}, {"fields": {"codename": "change_courseenrollmentattribute", "name": "Can change course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 134}, {"fields": {"codename": "delete_courseenrollmentattribute", "name": "Can delete course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 135}, {"fields": {"codename": "add_enrollmentrefundconfiguration", "name": "Can add enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 136}, {"fields": {"codename": "change_enrollmentrefundconfiguration", "name": "Can change enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 137}, {"fields": {"codename": "delete_enrollmentrefundconfiguration", "name": "Can delete enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 138}, {"fields": {"codename": "add_trackinglog", "name": "Can add tracking log", "content_type": 47}, "model": "auth.permission", "pk": 139}, {"fields": {"codename": "change_trackinglog", "name": "Can change tracking log", "content_type": 47}, "model": "auth.permission", "pk": 140}, {"fields": {"codename": "delete_trackinglog", "name": "Can delete tracking log", "content_type": 47}, "model": "auth.permission", "pk": 141}, {"fields": {"codename": "add_ratelimitconfiguration", "name": "Can add rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 142}, {"fields": {"codename": "change_ratelimitconfiguration", "name": "Can change rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 143}, {"fields": {"codename": "delete_ratelimitconfiguration", "name": "Can delete rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 144}, {"fields": {"codename": "add_certificatewhitelist", "name": "Can add certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 145}, {"fields": {"codename": "change_certificatewhitelist", "name": "Can change certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 146}, {"fields": {"codename": "delete_certificatewhitelist", "name": "Can delete certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 147}, {"fields": {"codename": "add_generatedcertificate", "name": "Can add generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 148}, {"fields": {"codename": "change_generatedcertificate", "name": "Can change generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 149}, {"fields": {"codename": "delete_generatedcertificate", "name": "Can delete generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 150}, {"fields": {"codename": "add_certificategenerationhistory", "name": "Can add certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 151}, {"fields": {"codename": "change_certificategenerationhistory", "name": "Can change certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 152}, {"fields": {"codename": "delete_certificategenerationhistory", "name": "Can delete certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 153}, {"fields": {"codename": "add_certificateinvalidation", "name": "Can add certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 154}, {"fields": {"codename": "change_certificateinvalidation", "name": "Can change certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 155}, {"fields": {"codename": "delete_certificateinvalidation", "name": "Can delete certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 156}, {"fields": {"codename": "add_examplecertificateset", "name": "Can add example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 157}, {"fields": {"codename": "change_examplecertificateset", "name": "Can change example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 158}, {"fields": {"codename": "delete_examplecertificateset", "name": "Can delete example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 159}, {"fields": {"codename": "add_examplecertificate", "name": "Can add example certificate", "content_type": 54}, "model": "auth.permission", "pk": 160}, {"fields": {"codename": "change_examplecertificate", "name": "Can change example certificate", "content_type": 54}, "model": "auth.permission", "pk": 161}, {"fields": {"codename": "delete_examplecertificate", "name": "Can delete example certificate", "content_type": 54}, "model": "auth.permission", "pk": 162}, {"fields": {"codename": "add_certificategenerationcoursesetting", "name": "Can add certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 163}, {"fields": {"codename": "change_certificategenerationcoursesetting", "name": "Can change certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 164}, {"fields": {"codename": "delete_certificategenerationcoursesetting", "name": "Can delete certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 165}, {"fields": {"codename": "add_certificategenerationconfiguration", "name": "Can add certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 166}, {"fields": {"codename": "change_certificategenerationconfiguration", "name": "Can change certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 167}, {"fields": {"codename": "delete_certificategenerationconfiguration", "name": "Can delete certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 168}, {"fields": {"codename": "add_certificatehtmlviewconfiguration", "name": "Can add certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 169}, {"fields": {"codename": "change_certificatehtmlviewconfiguration", "name": "Can change certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 170}, {"fields": {"codename": "delete_certificatehtmlviewconfiguration", "name": "Can delete certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 171}, {"fields": {"codename": "add_badgeassertion", "name": "Can add badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 172}, {"fields": {"codename": "change_badgeassertion", "name": "Can change badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 173}, {"fields": {"codename": "delete_badgeassertion", "name": "Can delete badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 174}, {"fields": {"codename": "add_badgeimageconfiguration", "name": "Can add badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 175}, {"fields": {"codename": "change_badgeimageconfiguration", "name": "Can change badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 176}, {"fields": {"codename": "delete_badgeimageconfiguration", "name": "Can delete badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 177}, {"fields": {"codename": "add_certificatetemplate", "name": "Can add certificate template", "content_type": 60}, "model": "auth.permission", "pk": 178}, {"fields": {"codename": "change_certificatetemplate", "name": "Can change certificate template", "content_type": 60}, "model": "auth.permission", "pk": 179}, {"fields": {"codename": "delete_certificatetemplate", "name": "Can delete certificate template", "content_type": 60}, "model": "auth.permission", "pk": 180}, {"fields": {"codename": "add_certificatetemplateasset", "name": "Can add certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 181}, {"fields": {"codename": "change_certificatetemplateasset", "name": "Can change certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 182}, {"fields": {"codename": "delete_certificatetemplateasset", "name": "Can delete certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 183}, {"fields": {"codename": "add_instructortask", "name": "Can add instructor task", "content_type": 62}, "model": "auth.permission", "pk": 184}, {"fields": {"codename": "change_instructortask", "name": "Can change instructor task", "content_type": 62}, "model": "auth.permission", "pk": 185}, {"fields": {"codename": "delete_instructortask", "name": "Can delete instructor task", "content_type": 62}, "model": "auth.permission", "pk": 186}, {"fields": {"codename": "add_courseusergroup", "name": "Can add course user group", "content_type": 63}, "model": "auth.permission", "pk": 187}, {"fields": {"codename": "change_courseusergroup", "name": "Can change course user group", "content_type": 63}, "model": "auth.permission", "pk": 188}, {"fields": {"codename": "delete_courseusergroup", "name": "Can delete course user group", "content_type": 63}, "model": "auth.permission", "pk": 189}, {"fields": {"codename": "add_cohortmembership", "name": "Can add cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 190}, {"fields": {"codename": "change_cohortmembership", "name": "Can change cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 191}, {"fields": {"codename": "delete_cohortmembership", "name": "Can delete cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 192}, {"fields": {"codename": "add_courseusergrouppartitiongroup", "name": "Can add course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 193}, {"fields": {"codename": "change_courseusergrouppartitiongroup", "name": "Can change course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 194}, {"fields": {"codename": "delete_courseusergrouppartitiongroup", "name": "Can delete course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 195}, {"fields": {"codename": "add_coursecohortssettings", "name": "Can add course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 196}, {"fields": {"codename": "change_coursecohortssettings", "name": "Can change course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 197}, {"fields": {"codename": "delete_coursecohortssettings", "name": "Can delete course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 198}, {"fields": {"codename": "add_coursecohort", "name": "Can add course cohort", "content_type": 67}, "model": "auth.permission", "pk": 199}, {"fields": {"codename": "change_coursecohort", "name": "Can change course cohort", "content_type": 67}, "model": "auth.permission", "pk": 200}, {"fields": {"codename": "delete_coursecohort", "name": "Can delete course cohort", "content_type": 67}, "model": "auth.permission", "pk": 201}, {"fields": {"codename": "add_courseemail", "name": "Can add course email", "content_type": 68}, "model": "auth.permission", "pk": 202}, {"fields": {"codename": "change_courseemail", "name": "Can change course email", "content_type": 68}, "model": "auth.permission", "pk": 203}, {"fields": {"codename": "delete_courseemail", "name": "Can delete course email", "content_type": 68}, "model": "auth.permission", "pk": 204}, {"fields": {"codename": "add_optout", "name": "Can add optout", "content_type": 69}, "model": "auth.permission", "pk": 205}, {"fields": {"codename": "change_optout", "name": "Can change optout", "content_type": 69}, "model": "auth.permission", "pk": 206}, {"fields": {"codename": "delete_optout", "name": "Can delete optout", "content_type": 69}, "model": "auth.permission", "pk": 207}, {"fields": {"codename": "add_courseemailtemplate", "name": "Can add course email template", "content_type": 70}, "model": "auth.permission", "pk": 208}, {"fields": {"codename": "change_courseemailtemplate", "name": "Can change course email template", "content_type": 70}, "model": "auth.permission", "pk": 209}, {"fields": {"codename": "delete_courseemailtemplate", "name": "Can delete course email template", "content_type": 70}, "model": "auth.permission", "pk": 210}, {"fields": {"codename": "add_courseauthorization", "name": "Can add course authorization", "content_type": 71}, "model": "auth.permission", "pk": 211}, {"fields": {"codename": "change_courseauthorization", "name": "Can change course authorization", "content_type": 71}, "model": "auth.permission", "pk": 212}, {"fields": {"codename": "delete_courseauthorization", "name": "Can delete course authorization", "content_type": 71}, "model": "auth.permission", "pk": 213}, {"fields": {"codename": "add_brandinginfoconfig", "name": "Can add branding info config", "content_type": 72}, "model": "auth.permission", "pk": 214}, {"fields": {"codename": "change_brandinginfoconfig", "name": "Can change branding info config", "content_type": 72}, "model": "auth.permission", "pk": 215}, {"fields": {"codename": "delete_brandinginfoconfig", "name": "Can delete branding info config", "content_type": 72}, "model": "auth.permission", "pk": 216}, {"fields": {"codename": "add_brandingapiconfig", "name": "Can add branding api config", "content_type": 73}, "model": "auth.permission", "pk": 217}, {"fields": {"codename": "change_brandingapiconfig", "name": "Can change branding api config", "content_type": 73}, "model": "auth.permission", "pk": 218}, {"fields": {"codename": "delete_brandingapiconfig", "name": "Can delete branding api config", "content_type": 73}, "model": "auth.permission", "pk": 219}, {"fields": {"codename": "add_externalauthmap", "name": "Can add external auth map", "content_type": 74}, "model": "auth.permission", "pk": 220}, {"fields": {"codename": "change_externalauthmap", "name": "Can change external auth map", "content_type": 74}, "model": "auth.permission", "pk": 221}, {"fields": {"codename": "delete_externalauthmap", "name": "Can delete external auth map", "content_type": 74}, "model": "auth.permission", "pk": 222}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 75}, "model": "auth.permission", "pk": 223}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 75}, "model": "auth.permission", "pk": 224}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 75}, "model": "auth.permission", "pk": 225}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 76}, "model": "auth.permission", "pk": 226}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 76}, "model": "auth.permission", "pk": 227}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 76}, "model": "auth.permission", "pk": 228}, {"fields": {"codename": "add_useropenid", "name": "Can add user open id", "content_type": 77}, "model": "auth.permission", "pk": 229}, {"fields": {"codename": "change_useropenid", "name": "Can change user open id", "content_type": 77}, "model": "auth.permission", "pk": 230}, {"fields": {"codename": "delete_useropenid", "name": "Can delete user open id", "content_type": 77}, "model": "auth.permission", "pk": 231}, {"fields": {"codename": "account_verified", "name": "The OpenID has been verified", "content_type": 77}, "model": "auth.permission", "pk": 232}, {"fields": {"codename": "add_client", "name": "Can add client", "content_type": 78}, "model": "auth.permission", "pk": 233}, {"fields": {"codename": "change_client", "name": "Can change client", "content_type": 78}, "model": "auth.permission", "pk": 234}, {"fields": {"codename": "delete_client", "name": "Can delete client", "content_type": 78}, "model": "auth.permission", "pk": 235}, {"fields": {"codename": "add_grant", "name": "Can add grant", "content_type": 79}, "model": "auth.permission", "pk": 236}, {"fields": {"codename": "change_grant", "name": "Can change grant", "content_type": 79}, "model": "auth.permission", "pk": 237}, {"fields": {"codename": "delete_grant", "name": "Can delete grant", "content_type": 79}, "model": "auth.permission", "pk": 238}, {"fields": {"codename": "add_accesstoken", "name": "Can add access token", "content_type": 80}, "model": "auth.permission", "pk": 239}, {"fields": {"codename": "change_accesstoken", "name": "Can change access token", "content_type": 80}, "model": "auth.permission", "pk": 240}, {"fields": {"codename": "delete_accesstoken", "name": "Can delete access token", "content_type": 80}, "model": "auth.permission", "pk": 241}, {"fields": {"codename": "add_refreshtoken", "name": "Can add refresh token", "content_type": 81}, "model": "auth.permission", "pk": 242}, {"fields": {"codename": "change_refreshtoken", "name": "Can change refresh token", "content_type": 81}, "model": "auth.permission", "pk": 243}, {"fields": {"codename": "delete_refreshtoken", "name": "Can delete refresh token", "content_type": 81}, "model": "auth.permission", "pk": 244}, {"fields": {"codename": "add_trustedclient", "name": "Can add trusted client", "content_type": 82}, "model": "auth.permission", "pk": 245}, {"fields": {"codename": "change_trustedclient", "name": "Can change trusted client", "content_type": 82}, "model": "auth.permission", "pk": 246}, {"fields": {"codename": "delete_trustedclient", "name": "Can delete trusted client", "content_type": 82}, "model": "auth.permission", "pk": 247}, {"fields": {"codename": "add_oauth2providerconfig", "name": "Can add Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 248}, {"fields": {"codename": "change_oauth2providerconfig", "name": "Can change Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 249}, {"fields": {"codename": "delete_oauth2providerconfig", "name": "Can delete Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 250}, {"fields": {"codename": "add_samlproviderconfig", "name": "Can add Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 251}, {"fields": {"codename": "change_samlproviderconfig", "name": "Can change Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 252}, {"fields": {"codename": "delete_samlproviderconfig", "name": "Can delete Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 253}, {"fields": {"codename": "add_samlconfiguration", "name": "Can add SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 254}, {"fields": {"codename": "change_samlconfiguration", "name": "Can change SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 255}, {"fields": {"codename": "delete_samlconfiguration", "name": "Can delete SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 256}, {"fields": {"codename": "add_samlproviderdata", "name": "Can add SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 257}, {"fields": {"codename": "change_samlproviderdata", "name": "Can change SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 258}, {"fields": {"codename": "delete_samlproviderdata", "name": "Can delete SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 259}, {"fields": {"codename": "add_ltiproviderconfig", "name": "Can add Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 260}, {"fields": {"codename": "change_ltiproviderconfig", "name": "Can change Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 261}, {"fields": {"codename": "delete_ltiproviderconfig", "name": "Can delete Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 262}, {"fields": {"codename": "add_providerapipermissions", "name": "Can add Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 263}, {"fields": {"codename": "change_providerapipermissions", "name": "Can change Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 264}, {"fields": {"codename": "delete_providerapipermissions", "name": "Can delete Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 265}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 89}, "model": "auth.permission", "pk": 266}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 89}, "model": "auth.permission", "pk": 267}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 89}, "model": "auth.permission", "pk": 268}, {"fields": {"codename": "add_scope", "name": "Can add scope", "content_type": 90}, "model": "auth.permission", "pk": 269}, {"fields": {"codename": "change_scope", "name": "Can change scope", "content_type": 90}, "model": "auth.permission", "pk": 270}, {"fields": {"codename": "delete_scope", "name": "Can delete scope", "content_type": 90}, "model": "auth.permission", "pk": 271}, {"fields": {"codename": "add_resource", "name": "Can add resource", "content_type": 90}, "model": "auth.permission", "pk": 272}, {"fields": {"codename": "change_resource", "name": "Can change resource", "content_type": 90}, "model": "auth.permission", "pk": 273}, {"fields": {"codename": "delete_resource", "name": "Can delete resource", "content_type": 90}, "model": "auth.permission", "pk": 274}, {"fields": {"codename": "add_consumer", "name": "Can add consumer", "content_type": 91}, "model": "auth.permission", "pk": 275}, {"fields": {"codename": "change_consumer", "name": "Can change consumer", "content_type": 91}, "model": "auth.permission", "pk": 276}, {"fields": {"codename": "delete_consumer", "name": "Can delete consumer", "content_type": 91}, "model": "auth.permission", "pk": 277}, {"fields": {"codename": "add_token", "name": "Can add token", "content_type": 92}, "model": "auth.permission", "pk": 278}, {"fields": {"codename": "change_token", "name": "Can change token", "content_type": 92}, "model": "auth.permission", "pk": 279}, {"fields": {"codename": "delete_token", "name": "Can delete token", "content_type": 92}, "model": "auth.permission", "pk": 280}, {"fields": {"codename": "add_article", "name": "Can add article", "content_type": 94}, "model": "auth.permission", "pk": 281}, {"fields": {"codename": "change_article", "name": "Can change article", "content_type": 94}, "model": "auth.permission", "pk": 282}, {"fields": {"codename": "delete_article", "name": "Can delete article", "content_type": 94}, "model": "auth.permission", "pk": 283}, {"fields": {"codename": "moderate", "name": "Can edit all articles and lock/unlock/restore", "content_type": 94}, "model": "auth.permission", "pk": 284}, {"fields": {"codename": "assign", "name": "Can change ownership of any article", "content_type": 94}, "model": "auth.permission", "pk": 285}, {"fields": {"codename": "grant", "name": "Can assign permissions to other users", "content_type": 94}, "model": "auth.permission", "pk": 286}, {"fields": {"codename": "add_articleforobject", "name": "Can add Article for object", "content_type": 95}, "model": "auth.permission", "pk": 287}, {"fields": {"codename": "change_articleforobject", "name": "Can change Article for object", "content_type": 95}, "model": "auth.permission", "pk": 288}, {"fields": {"codename": "delete_articleforobject", "name": "Can delete Article for object", "content_type": 95}, "model": "auth.permission", "pk": 289}, {"fields": {"codename": "add_articlerevision", "name": "Can add article revision", "content_type": 96}, "model": "auth.permission", "pk": 290}, {"fields": {"codename": "change_articlerevision", "name": "Can change article revision", "content_type": 96}, "model": "auth.permission", "pk": 291}, {"fields": {"codename": "delete_articlerevision", "name": "Can delete article revision", "content_type": 96}, "model": "auth.permission", "pk": 292}, {"fields": {"codename": "add_urlpath", "name": "Can add URL path", "content_type": 97}, "model": "auth.permission", "pk": 293}, {"fields": {"codename": "change_urlpath", "name": "Can change URL path", "content_type": 97}, "model": "auth.permission", "pk": 294}, {"fields": {"codename": "delete_urlpath", "name": "Can delete URL path", "content_type": 97}, "model": "auth.permission", "pk": 295}, {"fields": {"codename": "add_articleplugin", "name": "Can add article plugin", "content_type": 98}, "model": "auth.permission", "pk": 296}, {"fields": {"codename": "change_articleplugin", "name": "Can change article plugin", "content_type": 98}, "model": "auth.permission", "pk": 297}, {"fields": {"codename": "delete_articleplugin", "name": "Can delete article plugin", "content_type": 98}, "model": "auth.permission", "pk": 298}, {"fields": {"codename": "add_reusableplugin", "name": "Can add reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 299}, {"fields": {"codename": "change_reusableplugin", "name": "Can change reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 300}, {"fields": {"codename": "delete_reusableplugin", "name": "Can delete reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 301}, {"fields": {"codename": "add_simpleplugin", "name": "Can add simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 302}, {"fields": {"codename": "change_simpleplugin", "name": "Can change simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 303}, {"fields": {"codename": "delete_simpleplugin", "name": "Can delete simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 304}, {"fields": {"codename": "add_revisionplugin", "name": "Can add revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 305}, {"fields": {"codename": "change_revisionplugin", "name": "Can change revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 306}, {"fields": {"codename": "delete_revisionplugin", "name": "Can delete revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 307}, {"fields": {"codename": "add_revisionpluginrevision", "name": "Can add revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 308}, {"fields": {"codename": "change_revisionpluginrevision", "name": "Can change revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 309}, {"fields": {"codename": "delete_revisionpluginrevision", "name": "Can delete revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 310}, {"fields": {"codename": "add_image", "name": "Can add image", "content_type": 103}, "model": "auth.permission", "pk": 311}, {"fields": {"codename": "change_image", "name": "Can change image", "content_type": 103}, "model": "auth.permission", "pk": 312}, {"fields": {"codename": "delete_image", "name": "Can delete image", "content_type": 103}, "model": "auth.permission", "pk": 313}, {"fields": {"codename": "add_imagerevision", "name": "Can add image revision", "content_type": 104}, "model": "auth.permission", "pk": 314}, {"fields": {"codename": "change_imagerevision", "name": "Can change image revision", "content_type": 104}, "model": "auth.permission", "pk": 315}, {"fields": {"codename": "delete_imagerevision", "name": "Can delete image revision", "content_type": 104}, "model": "auth.permission", "pk": 316}, {"fields": {"codename": "add_attachment", "name": "Can add attachment", "content_type": 105}, "model": "auth.permission", "pk": 317}, {"fields": {"codename": "change_attachment", "name": "Can change attachment", "content_type": 105}, "model": "auth.permission", "pk": 318}, {"fields": {"codename": "delete_attachment", "name": "Can delete attachment", "content_type": 105}, "model": "auth.permission", "pk": 319}, {"fields": {"codename": "add_attachmentrevision", "name": "Can add attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 320}, {"fields": {"codename": "change_attachmentrevision", "name": "Can change attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 321}, {"fields": {"codename": "delete_attachmentrevision", "name": "Can delete attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 322}, {"fields": {"codename": "add_notificationtype", "name": "Can add type", "content_type": 107}, "model": "auth.permission", "pk": 323}, {"fields": {"codename": "change_notificationtype", "name": "Can change type", "content_type": 107}, "model": "auth.permission", "pk": 324}, {"fields": {"codename": "delete_notificationtype", "name": "Can delete type", "content_type": 107}, "model": "auth.permission", "pk": 325}, {"fields": {"codename": "add_settings", "name": "Can add settings", "content_type": 108}, "model": "auth.permission", "pk": 326}, {"fields": {"codename": "change_settings", "name": "Can change settings", "content_type": 108}, "model": "auth.permission", "pk": 327}, {"fields": {"codename": "delete_settings", "name": "Can delete settings", "content_type": 108}, "model": "auth.permission", "pk": 328}, {"fields": {"codename": "add_subscription", "name": "Can add subscription", "content_type": 109}, "model": "auth.permission", "pk": 329}, {"fields": {"codename": "change_subscription", "name": "Can change subscription", "content_type": 109}, "model": "auth.permission", "pk": 330}, {"fields": {"codename": "delete_subscription", "name": "Can delete subscription", "content_type": 109}, "model": "auth.permission", "pk": 331}, {"fields": {"codename": "add_notification", "name": "Can add notification", "content_type": 110}, "model": "auth.permission", "pk": 332}, {"fields": {"codename": "change_notification", "name": "Can change notification", "content_type": 110}, "model": "auth.permission", "pk": 333}, {"fields": {"codename": "delete_notification", "name": "Can delete notification", "content_type": 110}, "model": "auth.permission", "pk": 334}, {"fields": {"codename": "add_logentry", "name": "Can add log entry", "content_type": 111}, "model": "auth.permission", "pk": 335}, {"fields": {"codename": "change_logentry", "name": "Can change log entry", "content_type": 111}, "model": "auth.permission", "pk": 336}, {"fields": {"codename": "delete_logentry", "name": "Can delete log entry", "content_type": 111}, "model": "auth.permission", "pk": 337}, {"fields": {"codename": "add_role", "name": "Can add role", "content_type": 112}, "model": "auth.permission", "pk": 338}, {"fields": {"codename": "change_role", "name": "Can change role", "content_type": 112}, "model": "auth.permission", "pk": 339}, {"fields": {"codename": "delete_role", "name": "Can delete role", "content_type": 112}, "model": "auth.permission", "pk": 340}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 113}, "model": "auth.permission", "pk": 341}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 113}, "model": "auth.permission", "pk": 342}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 113}, "model": "auth.permission", "pk": 343}, {"fields": {"codename": "add_note", "name": "Can add note", "content_type": 114}, "model": "auth.permission", "pk": 344}, {"fields": {"codename": "change_note", "name": "Can change note", "content_type": 114}, "model": "auth.permission", "pk": 345}, {"fields": {"codename": "delete_note", "name": "Can delete note", "content_type": 114}, "model": "auth.permission", "pk": 346}, {"fields": {"codename": "add_splashconfig", "name": "Can add splash config", "content_type": 115}, "model": "auth.permission", "pk": 347}, {"fields": {"codename": "change_splashconfig", "name": "Can change splash config", "content_type": 115}, "model": "auth.permission", "pk": 348}, {"fields": {"codename": "delete_splashconfig", "name": "Can delete splash config", "content_type": 115}, "model": "auth.permission", "pk": 349}, {"fields": {"codename": "add_userpreference", "name": "Can add user preference", "content_type": 116}, "model": "auth.permission", "pk": 350}, {"fields": {"codename": "change_userpreference", "name": "Can change user preference", "content_type": 116}, "model": "auth.permission", "pk": 351}, {"fields": {"codename": "delete_userpreference", "name": "Can delete user preference", "content_type": 116}, "model": "auth.permission", "pk": 352}, {"fields": {"codename": "add_usercoursetag", "name": "Can add user course tag", "content_type": 117}, "model": "auth.permission", "pk": 353}, {"fields": {"codename": "change_usercoursetag", "name": "Can change user course tag", "content_type": 117}, "model": "auth.permission", "pk": 354}, {"fields": {"codename": "delete_usercoursetag", "name": "Can delete user course tag", "content_type": 117}, "model": "auth.permission", "pk": 355}, {"fields": {"codename": "add_userorgtag", "name": "Can add user org tag", "content_type": 118}, "model": "auth.permission", "pk": 356}, {"fields": {"codename": "change_userorgtag", "name": "Can change user org tag", "content_type": 118}, "model": "auth.permission", "pk": 357}, {"fields": {"codename": "delete_userorgtag", "name": "Can delete user org tag", "content_type": 118}, "model": "auth.permission", "pk": 358}, {"fields": {"codename": "add_order", "name": "Can add order", "content_type": 119}, "model": "auth.permission", "pk": 359}, {"fields": {"codename": "change_order", "name": "Can change order", "content_type": 119}, "model": "auth.permission", "pk": 360}, {"fields": {"codename": "delete_order", "name": "Can delete order", "content_type": 119}, "model": "auth.permission", "pk": 361}, {"fields": {"codename": "add_orderitem", "name": "Can add order item", "content_type": 120}, "model": "auth.permission", "pk": 362}, {"fields": {"codename": "change_orderitem", "name": "Can change order item", "content_type": 120}, "model": "auth.permission", "pk": 363}, {"fields": {"codename": "delete_orderitem", "name": "Can delete order item", "content_type": 120}, "model": "auth.permission", "pk": 364}, {"fields": {"codename": "add_invoice", "name": "Can add invoice", "content_type": 121}, "model": "auth.permission", "pk": 365}, {"fields": {"codename": "change_invoice", "name": "Can change invoice", "content_type": 121}, "model": "auth.permission", "pk": 366}, {"fields": {"codename": "delete_invoice", "name": "Can delete invoice", "content_type": 121}, "model": "auth.permission", "pk": 367}, {"fields": {"codename": "add_invoicetransaction", "name": "Can add invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 368}, {"fields": {"codename": "change_invoicetransaction", "name": "Can change invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 369}, {"fields": {"codename": "delete_invoicetransaction", "name": "Can delete invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 370}, {"fields": {"codename": "add_invoiceitem", "name": "Can add invoice item", "content_type": 123}, "model": "auth.permission", "pk": 371}, {"fields": {"codename": "change_invoiceitem", "name": "Can change invoice item", "content_type": 123}, "model": "auth.permission", "pk": 372}, {"fields": {"codename": "delete_invoiceitem", "name": "Can delete invoice item", "content_type": 123}, "model": "auth.permission", "pk": 373}, {"fields": {"codename": "add_courseregistrationcodeinvoiceitem", "name": "Can add course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 374}, {"fields": {"codename": "change_courseregistrationcodeinvoiceitem", "name": "Can change course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 375}, {"fields": {"codename": "delete_courseregistrationcodeinvoiceitem", "name": "Can delete course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 376}, {"fields": {"codename": "add_invoicehistory", "name": "Can add invoice history", "content_type": 125}, "model": "auth.permission", "pk": 377}, {"fields": {"codename": "change_invoicehistory", "name": "Can change invoice history", "content_type": 125}, "model": "auth.permission", "pk": 378}, {"fields": {"codename": "delete_invoicehistory", "name": "Can delete invoice history", "content_type": 125}, "model": "auth.permission", "pk": 379}, {"fields": {"codename": "add_courseregistrationcode", "name": "Can add course registration code", "content_type": 126}, "model": "auth.permission", "pk": 380}, {"fields": {"codename": "change_courseregistrationcode", "name": "Can change course registration code", "content_type": 126}, "model": "auth.permission", "pk": 381}, {"fields": {"codename": "delete_courseregistrationcode", "name": "Can delete course registration code", "content_type": 126}, "model": "auth.permission", "pk": 382}, {"fields": {"codename": "add_registrationcoderedemption", "name": "Can add registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 383}, {"fields": {"codename": "change_registrationcoderedemption", "name": "Can change registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 384}, {"fields": {"codename": "delete_registrationcoderedemption", "name": "Can delete registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 385}, {"fields": {"codename": "add_coupon", "name": "Can add coupon", "content_type": 128}, "model": "auth.permission", "pk": 386}, {"fields": {"codename": "change_coupon", "name": "Can change coupon", "content_type": 128}, "model": "auth.permission", "pk": 387}, {"fields": {"codename": "delete_coupon", "name": "Can delete coupon", "content_type": 128}, "model": "auth.permission", "pk": 388}, {"fields": {"codename": "add_couponredemption", "name": "Can add coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 389}, {"fields": {"codename": "change_couponredemption", "name": "Can change coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 390}, {"fields": {"codename": "delete_couponredemption", "name": "Can delete coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 391}, {"fields": {"codename": "add_paidcourseregistration", "name": "Can add paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 392}, {"fields": {"codename": "change_paidcourseregistration", "name": "Can change paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 393}, {"fields": {"codename": "delete_paidcourseregistration", "name": "Can delete paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 394}, {"fields": {"codename": "add_courseregcodeitem", "name": "Can add course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 395}, {"fields": {"codename": "change_courseregcodeitem", "name": "Can change course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 396}, {"fields": {"codename": "delete_courseregcodeitem", "name": "Can delete course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 397}, {"fields": {"codename": "add_courseregcodeitemannotation", "name": "Can add course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 398}, {"fields": {"codename": "change_courseregcodeitemannotation", "name": "Can change course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 399}, {"fields": {"codename": "delete_courseregcodeitemannotation", "name": "Can delete course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 400}, {"fields": {"codename": "add_paidcourseregistrationannotation", "name": "Can add paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 401}, {"fields": {"codename": "change_paidcourseregistrationannotation", "name": "Can change paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 402}, {"fields": {"codename": "delete_paidcourseregistrationannotation", "name": "Can delete paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 403}, {"fields": {"codename": "add_certificateitem", "name": "Can add certificate item", "content_type": 134}, "model": "auth.permission", "pk": 404}, {"fields": {"codename": "change_certificateitem", "name": "Can change certificate item", "content_type": 134}, "model": "auth.permission", "pk": 405}, {"fields": {"codename": "delete_certificateitem", "name": "Can delete certificate item", "content_type": 134}, "model": "auth.permission", "pk": 406}, {"fields": {"codename": "add_donationconfiguration", "name": "Can add donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 407}, {"fields": {"codename": "change_donationconfiguration", "name": "Can change donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 408}, {"fields": {"codename": "delete_donationconfiguration", "name": "Can delete donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 409}, {"fields": {"codename": "add_donation", "name": "Can add donation", "content_type": 136}, "model": "auth.permission", "pk": 410}, {"fields": {"codename": "change_donation", "name": "Can change donation", "content_type": 136}, "model": "auth.permission", "pk": 411}, {"fields": {"codename": "delete_donation", "name": "Can delete donation", "content_type": 136}, "model": "auth.permission", "pk": 412}, {"fields": {"codename": "add_coursemode", "name": "Can add course mode", "content_type": 137}, "model": "auth.permission", "pk": 413}, {"fields": {"codename": "change_coursemode", "name": "Can change course mode", "content_type": 137}, "model": "auth.permission", "pk": 414}, {"fields": {"codename": "delete_coursemode", "name": "Can delete course mode", "content_type": 137}, "model": "auth.permission", "pk": 415}, {"fields": {"codename": "add_coursemodesarchive", "name": "Can add course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 416}, {"fields": {"codename": "change_coursemodesarchive", "name": "Can change course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 417}, {"fields": {"codename": "delete_coursemodesarchive", "name": "Can delete course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 418}, {"fields": {"codename": "add_coursemodeexpirationconfig", "name": "Can add course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 419}, {"fields": {"codename": "change_coursemodeexpirationconfig", "name": "Can change course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 420}, {"fields": {"codename": "delete_coursemodeexpirationconfig", "name": "Can delete course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 421}, {"fields": {"codename": "add_softwaresecurephotoverification", "name": "Can add software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 422}, {"fields": {"codename": "change_softwaresecurephotoverification", "name": "Can change software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 423}, {"fields": {"codename": "delete_softwaresecurephotoverification", "name": "Can delete software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 424}, {"fields": {"codename": "add_historicalverificationdeadline", "name": "Can add historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 425}, {"fields": {"codename": "change_historicalverificationdeadline", "name": "Can change historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 426}, {"fields": {"codename": "delete_historicalverificationdeadline", "name": "Can delete historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 427}, {"fields": {"codename": "add_verificationdeadline", "name": "Can add verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 428}, {"fields": {"codename": "change_verificationdeadline", "name": "Can change verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 429}, {"fields": {"codename": "delete_verificationdeadline", "name": "Can delete verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 430}, {"fields": {"codename": "add_verificationcheckpoint", "name": "Can add verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 431}, {"fields": {"codename": "change_verificationcheckpoint", "name": "Can change verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 432}, {"fields": {"codename": "delete_verificationcheckpoint", "name": "Can delete verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 433}, {"fields": {"codename": "add_verificationstatus", "name": "Can add Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 434}, {"fields": {"codename": "change_verificationstatus", "name": "Can change Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 435}, {"fields": {"codename": "delete_verificationstatus", "name": "Can delete Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 436}, {"fields": {"codename": "add_incoursereverificationconfiguration", "name": "Can add in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 437}, {"fields": {"codename": "change_incoursereverificationconfiguration", "name": "Can change in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 438}, {"fields": {"codename": "delete_incoursereverificationconfiguration", "name": "Can delete in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 439}, {"fields": {"codename": "add_icrvstatusemailsconfiguration", "name": "Can add icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 440}, {"fields": {"codename": "change_icrvstatusemailsconfiguration", "name": "Can change icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 441}, {"fields": {"codename": "delete_icrvstatusemailsconfiguration", "name": "Can delete icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 442}, {"fields": {"codename": "add_skippedreverification", "name": "Can add skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 443}, {"fields": {"codename": "change_skippedreverification", "name": "Can change skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 444}, {"fields": {"codename": "delete_skippedreverification", "name": "Can delete skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 445}, {"fields": {"codename": "add_darklangconfig", "name": "Can add dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 446}, {"fields": {"codename": "change_darklangconfig", "name": "Can change dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 447}, {"fields": {"codename": "delete_darklangconfig", "name": "Can delete dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 448}, {"fields": {"codename": "add_microsite", "name": "Can add microsite", "content_type": 149}, "model": "auth.permission", "pk": 449}, {"fields": {"codename": "change_microsite", "name": "Can change microsite", "content_type": 149}, "model": "auth.permission", "pk": 450}, {"fields": {"codename": "delete_microsite", "name": "Can delete microsite", "content_type": 149}, "model": "auth.permission", "pk": 451}, {"fields": {"codename": "add_micrositehistory", "name": "Can add microsite history", "content_type": 150}, "model": "auth.permission", "pk": 452}, {"fields": {"codename": "change_micrositehistory", "name": "Can change microsite history", "content_type": 150}, "model": "auth.permission", "pk": 453}, {"fields": {"codename": "delete_micrositehistory", "name": "Can delete microsite history", "content_type": 150}, "model": "auth.permission", "pk": 454}, {"fields": {"codename": "add_historicalmicrositeorganizationmapping", "name": "Can add historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 455}, {"fields": {"codename": "change_historicalmicrositeorganizationmapping", "name": "Can change historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 456}, {"fields": {"codename": "delete_historicalmicrositeorganizationmapping", "name": "Can delete historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 457}, {"fields": {"codename": "add_micrositeorganizationmapping", "name": "Can add microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 458}, {"fields": {"codename": "change_micrositeorganizationmapping", "name": "Can change microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 459}, {"fields": {"codename": "delete_micrositeorganizationmapping", "name": "Can delete microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 460}, {"fields": {"codename": "add_historicalmicrositetemplate", "name": "Can add historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 461}, {"fields": {"codename": "change_historicalmicrositetemplate", "name": "Can change historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 462}, {"fields": {"codename": "delete_historicalmicrositetemplate", "name": "Can delete historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 463}, {"fields": {"codename": "add_micrositetemplate", "name": "Can add microsite template", "content_type": 154}, "model": "auth.permission", "pk": 464}, {"fields": {"codename": "change_micrositetemplate", "name": "Can change microsite template", "content_type": 154}, "model": "auth.permission", "pk": 465}, {"fields": {"codename": "delete_micrositetemplate", "name": "Can delete microsite template", "content_type": 154}, "model": "auth.permission", "pk": 466}, {"fields": {"codename": "add_whitelistedrssurl", "name": "Can add whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 467}, {"fields": {"codename": "change_whitelistedrssurl", "name": "Can change whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 468}, {"fields": {"codename": "delete_whitelistedrssurl", "name": "Can delete whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 469}, {"fields": {"codename": "add_embargoedcourse", "name": "Can add embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 470}, {"fields": {"codename": "change_embargoedcourse", "name": "Can change embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 471}, {"fields": {"codename": "delete_embargoedcourse", "name": "Can delete embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 472}, {"fields": {"codename": "add_embargoedstate", "name": "Can add embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 473}, {"fields": {"codename": "change_embargoedstate", "name": "Can change embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 474}, {"fields": {"codename": "delete_embargoedstate", "name": "Can delete embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 475}, {"fields": {"codename": "add_restrictedcourse", "name": "Can add restricted course", "content_type": 158}, "model": "auth.permission", "pk": 476}, {"fields": {"codename": "change_restrictedcourse", "name": "Can change restricted course", "content_type": 158}, "model": "auth.permission", "pk": 477}, {"fields": {"codename": "delete_restrictedcourse", "name": "Can delete restricted course", "content_type": 158}, "model": "auth.permission", "pk": 478}, {"fields": {"codename": "add_country", "name": "Can add country", "content_type": 159}, "model": "auth.permission", "pk": 479}, {"fields": {"codename": "change_country", "name": "Can change country", "content_type": 159}, "model": "auth.permission", "pk": 480}, {"fields": {"codename": "delete_country", "name": "Can delete country", "content_type": 159}, "model": "auth.permission", "pk": 481}, {"fields": {"codename": "add_countryaccessrule", "name": "Can add country access rule", "content_type": 160}, "model": "auth.permission", "pk": 482}, {"fields": {"codename": "change_countryaccessrule", "name": "Can change country access rule", "content_type": 160}, "model": "auth.permission", "pk": 483}, {"fields": {"codename": "delete_countryaccessrule", "name": "Can delete country access rule", "content_type": 160}, "model": "auth.permission", "pk": 484}, {"fields": {"codename": "add_courseaccessrulehistory", "name": "Can add course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 485}, {"fields": {"codename": "change_courseaccessrulehistory", "name": "Can change course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 486}, {"fields": {"codename": "delete_courseaccessrulehistory", "name": "Can delete course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 487}, {"fields": {"codename": "add_ipfilter", "name": "Can add ip filter", "content_type": 162}, "model": "auth.permission", "pk": 488}, {"fields": {"codename": "change_ipfilter", "name": "Can change ip filter", "content_type": 162}, "model": "auth.permission", "pk": 489}, {"fields": {"codename": "delete_ipfilter", "name": "Can delete ip filter", "content_type": 162}, "model": "auth.permission", "pk": 490}, {"fields": {"codename": "add_coursererunstate", "name": "Can add course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 491}, {"fields": {"codename": "change_coursererunstate", "name": "Can change course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 492}, {"fields": {"codename": "delete_coursererunstate", "name": "Can delete course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 493}, {"fields": {"codename": "add_mobileapiconfig", "name": "Can add mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 494}, {"fields": {"codename": "change_mobileapiconfig", "name": "Can change mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 495}, {"fields": {"codename": "delete_mobileapiconfig", "name": "Can delete mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 496}, {"fields": {"codename": "add_usersocialauth", "name": "Can add user social auth", "content_type": 165}, "model": "auth.permission", "pk": 497}, {"fields": {"codename": "change_usersocialauth", "name": "Can change user social auth", "content_type": 165}, "model": "auth.permission", "pk": 498}, {"fields": {"codename": "delete_usersocialauth", "name": "Can delete user social auth", "content_type": 165}, "model": "auth.permission", "pk": 499}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 166}, "model": "auth.permission", "pk": 500}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 166}, "model": "auth.permission", "pk": 501}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 166}, "model": "auth.permission", "pk": 502}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 167}, "model": "auth.permission", "pk": 503}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 167}, "model": "auth.permission", "pk": 504}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 167}, "model": "auth.permission", "pk": 505}, {"fields": {"codename": "add_code", "name": "Can add code", "content_type": 168}, "model": "auth.permission", "pk": 506}, {"fields": {"codename": "change_code", "name": "Can change code", "content_type": 168}, "model": "auth.permission", "pk": 507}, {"fields": {"codename": "delete_code", "name": "Can delete code", "content_type": 168}, "model": "auth.permission", "pk": 508}, {"fields": {"codename": "add_surveyform", "name": "Can add survey form", "content_type": 169}, "model": "auth.permission", "pk": 509}, {"fields": {"codename": "change_surveyform", "name": "Can change survey form", "content_type": 169}, "model": "auth.permission", "pk": 510}, {"fields": {"codename": "delete_surveyform", "name": "Can delete survey form", "content_type": 169}, "model": "auth.permission", "pk": 511}, {"fields": {"codename": "add_surveyanswer", "name": "Can add survey answer", "content_type": 170}, "model": "auth.permission", "pk": 512}, {"fields": {"codename": "change_surveyanswer", "name": "Can change survey answer", "content_type": 170}, "model": "auth.permission", "pk": 513}, {"fields": {"codename": "delete_surveyanswer", "name": "Can delete survey answer", "content_type": 170}, "model": "auth.permission", "pk": 514}, {"fields": {"codename": "add_xblockasidesconfig", "name": "Can add x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 515}, {"fields": {"codename": "change_xblockasidesconfig", "name": "Can change x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 516}, {"fields": {"codename": "delete_xblockasidesconfig", "name": "Can delete x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 517}, {"fields": {"codename": "add_courseoverview", "name": "Can add course overview", "content_type": 172}, "model": "auth.permission", "pk": 518}, {"fields": {"codename": "change_courseoverview", "name": "Can change course overview", "content_type": 172}, "model": "auth.permission", "pk": 519}, {"fields": {"codename": "delete_courseoverview", "name": "Can delete course overview", "content_type": 172}, "model": "auth.permission", "pk": 520}, {"fields": {"codename": "add_courseoverviewtab", "name": "Can add course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 521}, {"fields": {"codename": "change_courseoverviewtab", "name": "Can change course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 522}, {"fields": {"codename": "delete_courseoverviewtab", "name": "Can delete course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 523}, {"fields": {"codename": "add_courseoverviewimageset", "name": "Can add course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 524}, {"fields": {"codename": "change_courseoverviewimageset", "name": "Can change course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 525}, {"fields": {"codename": "delete_courseoverviewimageset", "name": "Can delete course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 526}, {"fields": {"codename": "add_courseoverviewimageconfig", "name": "Can add course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 527}, {"fields": {"codename": "change_courseoverviewimageconfig", "name": "Can change course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 528}, {"fields": {"codename": "delete_courseoverviewimageconfig", "name": "Can delete course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 529}, {"fields": {"codename": "add_coursestructure", "name": "Can add course structure", "content_type": 176}, "model": "auth.permission", "pk": 530}, {"fields": {"codename": "change_coursestructure", "name": "Can change course structure", "content_type": 176}, "model": "auth.permission", "pk": 531}, {"fields": {"codename": "delete_coursestructure", "name": "Can delete course structure", "content_type": 176}, "model": "auth.permission", "pk": 532}, {"fields": {"codename": "add_corsmodel", "name": "Can add cors model", "content_type": 177}, "model": "auth.permission", "pk": 533}, {"fields": {"codename": "change_corsmodel", "name": "Can change cors model", "content_type": 177}, "model": "auth.permission", "pk": 534}, {"fields": {"codename": "delete_corsmodel", "name": "Can delete cors model", "content_type": 177}, "model": "auth.permission", "pk": 535}, {"fields": {"codename": "add_xdomainproxyconfiguration", "name": "Can add x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 536}, {"fields": {"codename": "change_xdomainproxyconfiguration", "name": "Can change x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 537}, {"fields": {"codename": "delete_xdomainproxyconfiguration", "name": "Can delete x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 538}, {"fields": {"codename": "add_creditprovider", "name": "Can add credit provider", "content_type": 179}, "model": "auth.permission", "pk": 539}, {"fields": {"codename": "change_creditprovider", "name": "Can change credit provider", "content_type": 179}, "model": "auth.permission", "pk": 540}, {"fields": {"codename": "delete_creditprovider", "name": "Can delete credit provider", "content_type": 179}, "model": "auth.permission", "pk": 541}, {"fields": {"codename": "add_creditcourse", "name": "Can add credit course", "content_type": 180}, "model": "auth.permission", "pk": 542}, {"fields": {"codename": "change_creditcourse", "name": "Can change credit course", "content_type": 180}, "model": "auth.permission", "pk": 543}, {"fields": {"codename": "delete_creditcourse", "name": "Can delete credit course", "content_type": 180}, "model": "auth.permission", "pk": 544}, {"fields": {"codename": "add_creditrequirement", "name": "Can add credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 545}, {"fields": {"codename": "change_creditrequirement", "name": "Can change credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 546}, {"fields": {"codename": "delete_creditrequirement", "name": "Can delete credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 547}, {"fields": {"codename": "add_historicalcreditrequirementstatus", "name": "Can add historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 548}, {"fields": {"codename": "change_historicalcreditrequirementstatus", "name": "Can change historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 549}, {"fields": {"codename": "delete_historicalcreditrequirementstatus", "name": "Can delete historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 550}, {"fields": {"codename": "add_creditrequirementstatus", "name": "Can add credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 551}, {"fields": {"codename": "change_creditrequirementstatus", "name": "Can change credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 552}, {"fields": {"codename": "delete_creditrequirementstatus", "name": "Can delete credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 553}, {"fields": {"codename": "add_crediteligibility", "name": "Can add credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 554}, {"fields": {"codename": "change_crediteligibility", "name": "Can change credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 555}, {"fields": {"codename": "delete_crediteligibility", "name": "Can delete credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 556}, {"fields": {"codename": "add_historicalcreditrequest", "name": "Can add historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 557}, {"fields": {"codename": "change_historicalcreditrequest", "name": "Can change historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 558}, {"fields": {"codename": "delete_historicalcreditrequest", "name": "Can delete historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 559}, {"fields": {"codename": "add_creditrequest", "name": "Can add credit request", "content_type": 186}, "model": "auth.permission", "pk": 560}, {"fields": {"codename": "change_creditrequest", "name": "Can change credit request", "content_type": 186}, "model": "auth.permission", "pk": 561}, {"fields": {"codename": "delete_creditrequest", "name": "Can delete credit request", "content_type": 186}, "model": "auth.permission", "pk": 562}, {"fields": {"codename": "add_courseteam", "name": "Can add course team", "content_type": 187}, "model": "auth.permission", "pk": 563}, {"fields": {"codename": "change_courseteam", "name": "Can change course team", "content_type": 187}, "model": "auth.permission", "pk": 564}, {"fields": {"codename": "delete_courseteam", "name": "Can delete course team", "content_type": 187}, "model": "auth.permission", "pk": 565}, {"fields": {"codename": "add_courseteammembership", "name": "Can add course team membership", "content_type": 188}, "model": "auth.permission", "pk": 566}, {"fields": {"codename": "change_courseteammembership", "name": "Can change course team membership", "content_type": 188}, "model": "auth.permission", "pk": 567}, {"fields": {"codename": "delete_courseteammembership", "name": "Can delete course team membership", "content_type": 188}, "model": "auth.permission", "pk": 568}, {"fields": {"codename": "add_xblockdisableconfig", "name": "Can add x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 569}, {"fields": {"codename": "change_xblockdisableconfig", "name": "Can change x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 570}, {"fields": {"codename": "delete_xblockdisableconfig", "name": "Can delete x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 571}, {"fields": {"codename": "add_bookmark", "name": "Can add bookmark", "content_type": 190}, "model": "auth.permission", "pk": 572}, {"fields": {"codename": "change_bookmark", "name": "Can change bookmark", "content_type": 190}, "model": "auth.permission", "pk": 573}, {"fields": {"codename": "delete_bookmark", "name": "Can delete bookmark", "content_type": 190}, "model": "auth.permission", "pk": 574}, {"fields": {"codename": "add_xblockcache", "name": "Can add x block cache", "content_type": 191}, "model": "auth.permission", "pk": 575}, {"fields": {"codename": "change_xblockcache", "name": "Can change x block cache", "content_type": 191}, "model": "auth.permission", "pk": 576}, {"fields": {"codename": "delete_xblockcache", "name": "Can delete x block cache", "content_type": 191}, "model": "auth.permission", "pk": 577}, {"fields": {"codename": "add_programsapiconfig", "name": "Can add programs api config", "content_type": 192}, "model": "auth.permission", "pk": 578}, {"fields": {"codename": "change_programsapiconfig", "name": "Can change programs api config", "content_type": 192}, "model": "auth.permission", "pk": 579}, {"fields": {"codename": "delete_programsapiconfig", "name": "Can delete programs api config", "content_type": 192}, "model": "auth.permission", "pk": 580}, {"fields": {"codename": "add_selfpacedconfiguration", "name": "Can add self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 581}, {"fields": {"codename": "change_selfpacedconfiguration", "name": "Can change self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 582}, {"fields": {"codename": "delete_selfpacedconfiguration", "name": "Can delete self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 583}, {"fields": {"codename": "add_kvstore", "name": "Can add kv store", "content_type": 194}, "model": "auth.permission", "pk": 584}, {"fields": {"codename": "change_kvstore", "name": "Can change kv store", "content_type": 194}, "model": "auth.permission", "pk": 585}, {"fields": {"codename": "delete_kvstore", "name": "Can delete kv store", "content_type": 194}, "model": "auth.permission", "pk": 586}, {"fields": {"codename": "add_studentitem", "name": "Can add student item", "content_type": 195}, "model": "auth.permission", "pk": 587}, {"fields": {"codename": "change_studentitem", "name": "Can change student item", "content_type": 195}, "model": "auth.permission", "pk": 588}, {"fields": {"codename": "delete_studentitem", "name": "Can delete student item", "content_type": 195}, "model": "auth.permission", "pk": 589}, {"fields": {"codename": "add_submission", "name": "Can add submission", "content_type": 196}, "model": "auth.permission", "pk": 590}, {"fields": {"codename": "change_submission", "name": "Can change submission", "content_type": 196}, "model": "auth.permission", "pk": 591}, {"fields": {"codename": "delete_submission", "name": "Can delete submission", "content_type": 196}, "model": "auth.permission", "pk": 592}, {"fields": {"codename": "add_score", "name": "Can add score", "content_type": 197}, "model": "auth.permission", "pk": 593}, {"fields": {"codename": "change_score", "name": "Can change score", "content_type": 197}, "model": "auth.permission", "pk": 594}, {"fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 197}, "model": "auth.permission", "pk": 595}, {"fields": {"codename": "add_scoresummary", "name": "Can add score summary", "content_type": 198}, "model": "auth.permission", "pk": 596}, {"fields": {"codename": "change_scoresummary", "name": "Can change score summary", "content_type": 198}, "model": "auth.permission", "pk": 597}, {"fields": {"codename": "delete_scoresummary", "name": "Can delete score summary", "content_type": 198}, "model": "auth.permission", "pk": 598}, {"fields": {"codename": "add_scoreannotation", "name": "Can add score annotation", "content_type": 199}, "model": "auth.permission", "pk": 599}, {"fields": {"codename": "change_scoreannotation", "name": "Can change score annotation", "content_type": 199}, "model": "auth.permission", "pk": 600}, {"fields": {"codename": "delete_scoreannotation", "name": "Can delete score annotation", "content_type": 199}, "model": "auth.permission", "pk": 601}, {"fields": {"codename": "add_rubric", "name": "Can add rubric", "content_type": 200}, "model": "auth.permission", "pk": 602}, {"fields": {"codename": "change_rubric", "name": "Can change rubric", "content_type": 200}, "model": "auth.permission", "pk": 603}, {"fields": {"codename": "delete_rubric", "name": "Can delete rubric", "content_type": 200}, "model": "auth.permission", "pk": 604}, {"fields": {"codename": "add_criterion", "name": "Can add criterion", "content_type": 201}, "model": "auth.permission", "pk": 605}, {"fields": {"codename": "change_criterion", "name": "Can change criterion", "content_type": 201}, "model": "auth.permission", "pk": 606}, {"fields": {"codename": "delete_criterion", "name": "Can delete criterion", "content_type": 201}, "model": "auth.permission", "pk": 607}, {"fields": {"codename": "add_criterionoption", "name": "Can add criterion option", "content_type": 202}, "model": "auth.permission", "pk": 608}, {"fields": {"codename": "change_criterionoption", "name": "Can change criterion option", "content_type": 202}, "model": "auth.permission", "pk": 609}, {"fields": {"codename": "delete_criterionoption", "name": "Can delete criterion option", "content_type": 202}, "model": "auth.permission", "pk": 610}, {"fields": {"codename": "add_assessment", "name": "Can add assessment", "content_type": 203}, "model": "auth.permission", "pk": 611}, {"fields": {"codename": "change_assessment", "name": "Can change assessment", "content_type": 203}, "model": "auth.permission", "pk": 612}, {"fields": {"codename": "delete_assessment", "name": "Can delete assessment", "content_type": 203}, "model": "auth.permission", "pk": 613}, {"fields": {"codename": "add_assessmentpart", "name": "Can add assessment part", "content_type": 204}, "model": "auth.permission", "pk": 614}, {"fields": {"codename": "change_assessmentpart", "name": "Can change assessment part", "content_type": 204}, "model": "auth.permission", "pk": 615}, {"fields": {"codename": "delete_assessmentpart", "name": "Can delete assessment part", "content_type": 204}, "model": "auth.permission", "pk": 616}, {"fields": {"codename": "add_assessmentfeedbackoption", "name": "Can add assessment feedback option", "content_type": 205}, "model": "auth.permission", "pk": 617}, {"fields": {"codename": "change_assessmentfeedbackoption", "name": "Can change assessment feedback option", "content_type": 205}, "model": "auth.permission", "pk": 618}, {"fields": {"codename": "delete_assessmentfeedbackoption", "name": "Can delete assessment feedback option", "content_type": 205}, "model": "auth.permission", "pk": 619}, {"fields": {"codename": "add_assessmentfeedback", "name": "Can add assessment feedback", "content_type": 206}, "model": "auth.permission", "pk": 620}, {"fields": {"codename": "change_assessmentfeedback", "name": "Can change assessment feedback", "content_type": 206}, "model": "auth.permission", "pk": 621}, {"fields": {"codename": "delete_assessmentfeedback", "name": "Can delete assessment feedback", "content_type": 206}, "model": "auth.permission", "pk": 622}, {"fields": {"codename": "add_peerworkflow", "name": "Can add peer workflow", "content_type": 207}, "model": "auth.permission", "pk": 623}, {"fields": {"codename": "change_peerworkflow", "name": "Can change peer workflow", "content_type": 207}, "model": "auth.permission", "pk": 624}, {"fields": {"codename": "delete_peerworkflow", "name": "Can delete peer workflow", "content_type": 207}, "model": "auth.permission", "pk": 625}, {"fields": {"codename": "add_peerworkflowitem", "name": "Can add peer workflow item", "content_type": 208}, "model": "auth.permission", "pk": 626}, {"fields": {"codename": "change_peerworkflowitem", "name": "Can change peer workflow item", "content_type": 208}, "model": "auth.permission", "pk": 627}, {"fields": {"codename": "delete_peerworkflowitem", "name": "Can delete peer workflow item", "content_type": 208}, "model": "auth.permission", "pk": 628}, {"fields": {"codename": "add_trainingexample", "name": "Can add training example", "content_type": 209}, "model": "auth.permission", "pk": 629}, {"fields": {"codename": "change_trainingexample", "name": "Can change training example", "content_type": 209}, "model": "auth.permission", "pk": 630}, {"fields": {"codename": "delete_trainingexample", "name": "Can delete training example", "content_type": 209}, "model": "auth.permission", "pk": 631}, {"fields": {"codename": "add_studenttrainingworkflow", "name": "Can add student training workflow", "content_type": 210}, "model": "auth.permission", "pk": 632}, {"fields": {"codename": "change_studenttrainingworkflow", "name": "Can change student training workflow", "content_type": 210}, "model": "auth.permission", "pk": 633}, {"fields": {"codename": "delete_studenttrainingworkflow", "name": "Can delete student training workflow", "content_type": 210}, "model": "auth.permission", "pk": 634}, {"fields": {"codename": "add_studenttrainingworkflowitem", "name": "Can add student training workflow item", "content_type": 211}, "model": "auth.permission", "pk": 635}, {"fields": {"codename": "change_studenttrainingworkflowitem", "name": "Can change student training workflow item", "content_type": 211}, "model": "auth.permission", "pk": 636}, {"fields": {"codename": "delete_studenttrainingworkflowitem", "name": "Can delete student training workflow item", "content_type": 211}, "model": "auth.permission", "pk": 637}, {"fields": {"codename": "add_aiclassifierset", "name": "Can add ai classifier set", "content_type": 212}, "model": "auth.permission", "pk": 638}, {"fields": {"codename": "change_aiclassifierset", "name": "Can change ai classifier set", "content_type": 212}, "model": "auth.permission", "pk": 639}, {"fields": {"codename": "delete_aiclassifierset", "name": "Can delete ai classifier set", "content_type": 212}, "model": "auth.permission", "pk": 640}, {"fields": {"codename": "add_aiclassifier", "name": "Can add ai classifier", "content_type": 213}, "model": "auth.permission", "pk": 641}, {"fields": {"codename": "change_aiclassifier", "name": "Can change ai classifier", "content_type": 213}, "model": "auth.permission", "pk": 642}, {"fields": {"codename": "delete_aiclassifier", "name": "Can delete ai classifier", "content_type": 213}, "model": "auth.permission", "pk": 643}, {"fields": {"codename": "add_aitrainingworkflow", "name": "Can add ai training workflow", "content_type": 214}, "model": "auth.permission", "pk": 644}, {"fields": {"codename": "change_aitrainingworkflow", "name": "Can change ai training workflow", "content_type": 214}, "model": "auth.permission", "pk": 645}, {"fields": {"codename": "delete_aitrainingworkflow", "name": "Can delete ai training workflow", "content_type": 214}, "model": "auth.permission", "pk": 646}, {"fields": {"codename": "add_aigradingworkflow", "name": "Can add ai grading workflow", "content_type": 215}, "model": "auth.permission", "pk": 647}, {"fields": {"codename": "change_aigradingworkflow", "name": "Can change ai grading workflow", "content_type": 215}, "model": "auth.permission", "pk": 648}, {"fields": {"codename": "delete_aigradingworkflow", "name": "Can delete ai grading workflow", "content_type": 215}, "model": "auth.permission", "pk": 649}, {"fields": {"codename": "add_staffworkflow", "name": "Can add staff workflow", "content_type": 216}, "model": "auth.permission", "pk": 650}, {"fields": {"codename": "change_staffworkflow", "name": "Can change staff workflow", "content_type": 216}, "model": "auth.permission", "pk": 651}, {"fields": {"codename": "delete_staffworkflow", "name": "Can delete staff workflow", "content_type": 216}, "model": "auth.permission", "pk": 652}, {"fields": {"codename": "add_assessmentworkflow", "name": "Can add assessment workflow", "content_type": 217}, "model": "auth.permission", "pk": 653}, {"fields": {"codename": "change_assessmentworkflow", "name": "Can change assessment workflow", "content_type": 217}, "model": "auth.permission", "pk": 654}, {"fields": {"codename": "delete_assessmentworkflow", "name": "Can delete assessment workflow", "content_type": 217}, "model": "auth.permission", "pk": 655}, {"fields": {"codename": "add_assessmentworkflowstep", "name": "Can add assessment workflow step", "content_type": 218}, "model": "auth.permission", "pk": 656}, {"fields": {"codename": "change_assessmentworkflowstep", "name": "Can change assessment workflow step", "content_type": 218}, "model": "auth.permission", "pk": 657}, {"fields": {"codename": "delete_assessmentworkflowstep", "name": "Can delete assessment workflow step", "content_type": 218}, "model": "auth.permission", "pk": 658}, {"fields": {"codename": "add_assessmentworkflowcancellation", "name": "Can add assessment workflow cancellation", "content_type": 219}, "model": "auth.permission", "pk": 659}, {"fields": {"codename": "change_assessmentworkflowcancellation", "name": "Can change assessment workflow cancellation", "content_type": 219}, "model": "auth.permission", "pk": 660}, {"fields": {"codename": "delete_assessmentworkflowcancellation", "name": "Can delete assessment workflow cancellation", "content_type": 219}, "model": "auth.permission", "pk": 661}, {"fields": {"codename": "add_profile", "name": "Can add profile", "content_type": 220}, "model": "auth.permission", "pk": 662}, {"fields": {"codename": "change_profile", "name": "Can change profile", "content_type": 220}, "model": "auth.permission", "pk": 663}, {"fields": {"codename": "delete_profile", "name": "Can delete profile", "content_type": 220}, "model": "auth.permission", "pk": 664}, {"fields": {"codename": "add_video", "name": "Can add video", "content_type": 221}, "model": "auth.permission", "pk": 665}, {"fields": {"codename": "change_video", "name": "Can change video", "content_type": 221}, "model": "auth.permission", "pk": 666}, {"fields": {"codename": "delete_video", "name": "Can delete video", "content_type": 221}, "model": "auth.permission", "pk": 667}, {"fields": {"codename": "add_coursevideo", "name": "Can add course video", "content_type": 222}, "model": "auth.permission", "pk": 668}, {"fields": {"codename": "change_coursevideo", "name": "Can change course video", "content_type": 222}, "model": "auth.permission", "pk": 669}, {"fields": {"codename": "delete_coursevideo", "name": "Can delete course video", "content_type": 222}, "model": "auth.permission", "pk": 670}, {"fields": {"codename": "add_encodedvideo", "name": "Can add encoded video", "content_type": 223}, "model": "auth.permission", "pk": 671}, {"fields": {"codename": "change_encodedvideo", "name": "Can change encoded video", "content_type": 223}, "model": "auth.permission", "pk": 672}, {"fields": {"codename": "delete_encodedvideo", "name": "Can delete encoded video", "content_type": 223}, "model": "auth.permission", "pk": 673}, {"fields": {"codename": "add_subtitle", "name": "Can add subtitle", "content_type": 224}, "model": "auth.permission", "pk": 674}, {"fields": {"codename": "change_subtitle", "name": "Can change subtitle", "content_type": 224}, "model": "auth.permission", "pk": 675}, {"fields": {"codename": "delete_subtitle", "name": "Can delete subtitle", "content_type": 224}, "model": "auth.permission", "pk": 676}, {"fields": {"codename": "add_milestone", "name": "Can add milestone", "content_type": 225}, "model": "auth.permission", "pk": 677}, {"fields": {"codename": "change_milestone", "name": "Can change milestone", "content_type": 225}, "model": "auth.permission", "pk": 678}, {"fields": {"codename": "delete_milestone", "name": "Can delete milestone", "content_type": 225}, "model": "auth.permission", "pk": 679}, {"fields": {"codename": "add_milestonerelationshiptype", "name": "Can add milestone relationship type", "content_type": 226}, "model": "auth.permission", "pk": 680}, {"fields": {"codename": "change_milestonerelationshiptype", "name": "Can change milestone relationship type", "content_type": 226}, "model": "auth.permission", "pk": 681}, {"fields": {"codename": "delete_milestonerelationshiptype", "name": "Can delete milestone relationship type", "content_type": 226}, "model": "auth.permission", "pk": 682}, {"fields": {"codename": "add_coursemilestone", "name": "Can add course milestone", "content_type": 227}, "model": "auth.permission", "pk": 683}, {"fields": {"codename": "change_coursemilestone", "name": "Can change course milestone", "content_type": 227}, "model": "auth.permission", "pk": 684}, {"fields": {"codename": "delete_coursemilestone", "name": "Can delete course milestone", "content_type": 227}, "model": "auth.permission", "pk": 685}, {"fields": {"codename": "add_coursecontentmilestone", "name": "Can add course content milestone", "content_type": 228}, "model": "auth.permission", "pk": 686}, {"fields": {"codename": "change_coursecontentmilestone", "name": "Can change course content milestone", "content_type": 228}, "model": "auth.permission", "pk": 687}, {"fields": {"codename": "delete_coursecontentmilestone", "name": "Can delete course content milestone", "content_type": 228}, "model": "auth.permission", "pk": 688}, {"fields": {"codename": "add_usermilestone", "name": "Can add user milestone", "content_type": 229}, "model": "auth.permission", "pk": 689}, {"fields": {"codename": "change_usermilestone", "name": "Can change user milestone", "content_type": 229}, "model": "auth.permission", "pk": 690}, {"fields": {"codename": "delete_usermilestone", "name": "Can delete user milestone", "content_type": 229}, "model": "auth.permission", "pk": 691}, {"fields": {"codename": "add_proctoredexam", "name": "Can add proctored exam", "content_type": 230}, "model": "auth.permission", "pk": 692}, {"fields": {"codename": "change_proctoredexam", "name": "Can change proctored exam", "content_type": 230}, "model": "auth.permission", "pk": 693}, {"fields": {"codename": "delete_proctoredexam", "name": "Can delete proctored exam", "content_type": 230}, "model": "auth.permission", "pk": 694}, {"fields": {"codename": "add_proctoredexamreviewpolicy", "name": "Can add Proctored exam review policy", "content_type": 231}, "model": "auth.permission", "pk": 695}, {"fields": {"codename": "change_proctoredexamreviewpolicy", "name": "Can change Proctored exam review policy", "content_type": 231}, "model": "auth.permission", "pk": 696}, {"fields": {"codename": "delete_proctoredexamreviewpolicy", "name": "Can delete Proctored exam review policy", "content_type": 231}, "model": "auth.permission", "pk": 697}, {"fields": {"codename": "add_proctoredexamreviewpolicyhistory", "name": "Can add proctored exam review policy history", "content_type": 232}, "model": "auth.permission", "pk": 698}, {"fields": {"codename": "change_proctoredexamreviewpolicyhistory", "name": "Can change proctored exam review policy history", "content_type": 232}, "model": "auth.permission", "pk": 699}, {"fields": {"codename": "delete_proctoredexamreviewpolicyhistory", "name": "Can delete proctored exam review policy history", "content_type": 232}, "model": "auth.permission", "pk": 700}, {"fields": {"codename": "add_proctoredexamstudentattempt", "name": "Can add proctored exam attempt", "content_type": 233}, "model": "auth.permission", "pk": 701}, {"fields": {"codename": "change_proctoredexamstudentattempt", "name": "Can change proctored exam attempt", "content_type": 233}, "model": "auth.permission", "pk": 702}, {"fields": {"codename": "delete_proctoredexamstudentattempt", "name": "Can delete proctored exam attempt", "content_type": 233}, "model": "auth.permission", "pk": 703}, {"fields": {"codename": "add_proctoredexamstudentattempthistory", "name": "Can add proctored exam attempt history", "content_type": 234}, "model": "auth.permission", "pk": 704}, {"fields": {"codename": "change_proctoredexamstudentattempthistory", "name": "Can change proctored exam attempt history", "content_type": 234}, "model": "auth.permission", "pk": 705}, {"fields": {"codename": "delete_proctoredexamstudentattempthistory", "name": "Can delete proctored exam attempt history", "content_type": 234}, "model": "auth.permission", "pk": 706}, {"fields": {"codename": "add_proctoredexamstudentallowance", "name": "Can add proctored allowance", "content_type": 235}, "model": "auth.permission", "pk": 707}, {"fields": {"codename": "change_proctoredexamstudentallowance", "name": "Can change proctored allowance", "content_type": 235}, "model": "auth.permission", "pk": 708}, {"fields": {"codename": "delete_proctoredexamstudentallowance", "name": "Can delete proctored allowance", "content_type": 235}, "model": "auth.permission", "pk": 709}, {"fields": {"codename": "add_proctoredexamstudentallowancehistory", "name": "Can add proctored allowance history", "content_type": 236}, "model": "auth.permission", "pk": 710}, {"fields": {"codename": "change_proctoredexamstudentallowancehistory", "name": "Can change proctored allowance history", "content_type": 236}, "model": "auth.permission", "pk": 711}, {"fields": {"codename": "delete_proctoredexamstudentallowancehistory", "name": "Can delete proctored allowance history", "content_type": 236}, "model": "auth.permission", "pk": 712}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereview", "name": "Can add Proctored exam software secure review", "content_type": 237}, "model": "auth.permission", "pk": 713}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereview", "name": "Can change Proctored exam software secure review", "content_type": 237}, "model": "auth.permission", "pk": 714}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereview", "name": "Can delete Proctored exam software secure review", "content_type": 237}, "model": "auth.permission", "pk": 715}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereviewhistory", "name": "Can add Proctored exam review archive", "content_type": 238}, "model": "auth.permission", "pk": 716}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereviewhistory", "name": "Can change Proctored exam review archive", "content_type": 238}, "model": "auth.permission", "pk": 717}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereviewhistory", "name": "Can delete Proctored exam review archive", "content_type": 238}, "model": "auth.permission", "pk": 718}, {"fields": {"codename": "add_proctoredexamsoftwaresecurecomment", "name": "Can add proctored exam software secure comment", "content_type": 239}, "model": "auth.permission", "pk": 719}, {"fields": {"codename": "change_proctoredexamsoftwaresecurecomment", "name": "Can change proctored exam software secure comment", "content_type": 239}, "model": "auth.permission", "pk": 720}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurecomment", "name": "Can delete proctored exam software secure comment", "content_type": 239}, "model": "auth.permission", "pk": 721}, {"fields": {"codename": "add_organization", "name": "Can add organization", "content_type": 240}, "model": "auth.permission", "pk": 722}, {"fields": {"codename": "change_organization", "name": "Can change organization", "content_type": 240}, "model": "auth.permission", "pk": 723}, {"fields": {"codename": "delete_organization", "name": "Can delete organization", "content_type": 240}, "model": "auth.permission", "pk": 724}, {"fields": {"codename": "add_organizationcourse", "name": "Can add Link Course", "content_type": 241}, "model": "auth.permission", "pk": 725}, {"fields": {"codename": "change_organizationcourse", "name": "Can change Link Course", "content_type": 241}, "model": "auth.permission", "pk": 726}, {"fields": {"codename": "delete_organizationcourse", "name": "Can delete Link Course", "content_type": 241}, "model": "auth.permission", "pk": 727}, {"fields": {"codename": "add_videouploadconfig", "name": "Can add video upload config", "content_type": 242}, "model": "auth.permission", "pk": 728}, {"fields": {"codename": "change_videouploadconfig", "name": "Can change video upload config", "content_type": 242}, "model": "auth.permission", "pk": 729}, {"fields": {"codename": "delete_videouploadconfig", "name": "Can delete video upload config", "content_type": 242}, "model": "auth.permission", "pk": 730}, {"fields": {"codename": "add_pushnotificationconfig", "name": "Can add push notification config", "content_type": 243}, "model": "auth.permission", "pk": 731}, {"fields": {"codename": "change_pushnotificationconfig", "name": "Can change push notification config", "content_type": 243}, "model": "auth.permission", "pk": 732}, {"fields": {"codename": "delete_pushnotificationconfig", "name": "Can delete push notification config", "content_type": 243}, "model": "auth.permission", "pk": 733}, {"fields": {"codename": "add_coursecreator", "name": "Can add course creator", "content_type": 244}, "model": "auth.permission", "pk": 734}, {"fields": {"codename": "change_coursecreator", "name": "Can change course creator", "content_type": 244}, "model": "auth.permission", "pk": 735}, {"fields": {"codename": "delete_coursecreator", "name": "Can delete course creator", "content_type": 244}, "model": "auth.permission", "pk": 736}, {"fields": {"codename": "add_studioconfig", "name": "Can add studio config", "content_type": 245}, "model": "auth.permission", "pk": 737}, {"fields": {"codename": "change_studioconfig", "name": "Can change studio config", "content_type": 245}, "model": "auth.permission", "pk": 738}, {"fields": {"codename": "delete_studioconfig", "name": "Can delete studio config", "content_type": 245}, "model": "auth.permission", "pk": 739}, {"fields": {"username": "ecommerce_worker", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": null, "groups": [], "user_permissions": [], "password": "!a7SudZ8tSftyXEVQPKpBHG2rj6ZOmcr0VCpboorI", "email": "ecommerce_worker@fake.email", "date_joined": "2016-01-21T18:53:18.229Z"}, "model": "auth.user", "pk": 1}, {"fields": {"change_date": "2016-01-21T18:54:25.176Z", "changed_by": null, "enabled": true}, "model": "util.ratelimitconfiguration", "pk": 1}, {"fields": {"change_date": "2016-01-21T18:53:13.524Z", "changed_by": null, "configuration": "{\"default\": {\"accomplishment_class_append\": \"accomplishment-certificate\", \"platform_name\": \"Your Platform Name Here\", \"logo_src\": \"/static/certificates/images/logo.png\", \"logo_url\": \"http://www.example.com\", \"company_verified_certificate_url\": \"http://www.example.com/verified-certificate\", \"company_privacy_url\": \"http://www.example.com/privacy-policy\", \"company_tos_url\": \"http://www.example.com/terms-service\", \"company_about_url\": \"http://www.example.com/about-us\"}, \"verified\": {\"certificate_type\": \"Verified\", \"certificate_title\": \"Verified Certificate of Achievement\"}, \"honor\": {\"certificate_type\": \"Honor Code\", \"certificate_title\": \"Certificate of Achievement\"}}", "enabled": false}, "model": "certificates.certificatehtmlviewconfiguration", "pk": 1}, {"fields": {"change_date": "2016-01-21T18:53:24.176Z", "changed_by": null, "enabled": true, "released_languages": ""}, "model": "dark_lang.darklangconfig", "pk": 1}] \ No newline at end of file diff --git a/common/test/db_cache/bok_choy_data_student_module_history.json b/common/test/db_cache/bok_choy_data_student_module_history.json new file mode 100644 index 0000000000..8e2f0bef13 --- /dev/null +++ b/common/test/db_cache/bok_choy_data_student_module_history.json @@ -0,0 +1 @@ +[ \ 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_default.sql similarity index 99% rename from common/test/db_cache/bok_choy_schema.sql rename to common/test/db_cache/bok_choy_schema_default.sql index 26d6fc5574..df3174a46b 100644 --- a/common/test/db_cache/bok_choy_schema.sql +++ b/common/test/db_cache/bok_choy_schema_default.sql @@ -412,7 +412,7 @@ CREATE TABLE `auth_permission` ( PRIMARY KEY (`id`), UNIQUE KEY `content_type_id` (`content_type_id`,`codename`), CONSTRAINT `auth__content_type_id_508cf46651277a81_fk_django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=746 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=740 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 */; @@ -444,7 +444,7 @@ CREATE TABLE `auth_user` ( `date_joined` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `auth_user_groups`; /*!40101 SET @saved_cs_client = @@character_set_client */; @@ -1353,24 +1353,6 @@ CREATE TABLE `courseware_xmoduleuserstatesummaryfield` ( KEY `courseware_xmoduleuserstatesummaryfield_0528eb2a` (`usage_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -DROP TABLE IF EXISTS `credentials_credentialsapiconfig`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `credentials_credentialsapiconfig` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `change_date` datetime(6) NOT NULL, - `enabled` tinyint(1) NOT NULL, - `internal_service_url` varchar(200) NOT NULL, - `public_service_url` varchar(200) NOT NULL, - `enable_learner_issuance` tinyint(1) NOT NULL, - `enable_studio_authoring` tinyint(1) NOT NULL, - `cache_ttl` int(10) unsigned NOT NULL, - `changed_by_id` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `credentials_crede_changed_by_id_273a2e6b0649c861_fk_auth_user_id` (`changed_by_id`), - CONSTRAINT `credentials_crede_changed_by_id_273a2e6b0649c861_fk_auth_user_id` 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 `credit_creditcourse`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -1618,7 +1600,7 @@ CREATE TABLE `django_content_type` ( `model` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `django_content_type_app_label_45f3b1d93ec8c61c_uniq` (`app_label`,`model`) -) ENGINE=InnoDB AUTO_INCREMENT=248 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=246 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_migrations`; /*!40101 SET @saved_cs_client = @@character_set_client */; @@ -1629,7 +1611,7 @@ CREATE TABLE `django_migrations` ( `name` varchar(255) NOT NULL, `applied` datetime(6) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=103 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 */; diff --git a/common/test/db_cache/bok_choy_schema_student_module_history.sql b/common/test/db_cache/bok_choy_schema_student_module_history.sql new file mode 100644 index 0000000000..696b1bdf43 --- /dev/null +++ b/common/test/db_cache/bok_choy_schema_student_module_history.sql @@ -0,0 +1,21 @@ + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + diff --git a/lms/djangoapps/ccx/tests/test_field_override_performance.py b/lms/djangoapps/ccx/tests/test_field_override_performance.py index d6a88b300b..ffad914bee 100644 --- a/lms/djangoapps/ccx/tests/test_field_override_performance.py +++ b/lms/djangoapps/ccx/tests/test_field_override_performance.py @@ -151,7 +151,10 @@ class FieldOverridePerformanceTestCase(ProceduralCourseTestMixin, """ return check_sum_of_calls(XBlock, ['__init__'], instantiations, instantiations, include_arguments=False) - def instrument_course_progress_render(self, course_width, enable_ccx, view_as_ccx, queries, reads, xblocks): + def instrument_course_progress_render( + self, course_width, enable_ccx, view_as_ccx, + default_queries, history_queries, reads, xblocks + ): """ Renders the progress page, instrumenting Mongo reads and SQL queries. """ @@ -173,10 +176,11 @@ class FieldOverridePerformanceTestCase(ProceduralCourseTestMixin, # can actually take affect. OverrideFieldData.provider_classes = None - with self.assertNumQueries(queries): - with self.assertMongoCallCount(reads): - with self.assertXBlockInstantiations(xblocks): - self.grade_course(self.course, view_as_ccx) + with self.assertNumQueries(default_queries, using='default'): + with self.assertNumQueries(history_queries, using='student_module_history'): + with self.assertMongoCallCount(reads): + with self.assertXBlockInstantiations(xblocks): + self.grade_course(self.course, view_as_ccx) @ddt.data(*itertools.product(('no_overrides', 'ccx'), range(1, 4), (True, False), (True, False))) @ddt.unpack @@ -201,8 +205,12 @@ class FieldOverridePerformanceTestCase(ProceduralCourseTestMixin, raise SkipTest("Can't use a MongoModulestore test as a CCX course") with self.settings(FIELD_OVERRIDE_PROVIDERS=providers[overrides]): - queries, reads, xblocks = self.TEST_DATA[(overrides, course_width, enable_ccx, view_as_ccx)] - self.instrument_course_progress_render(course_width, enable_ccx, view_as_ccx, queries, reads, xblocks) + default_queries, history_queries, reads, xblocks = self.TEST_DATA[ + (overrides, course_width, enable_ccx, view_as_ccx) + ] + self.instrument_course_progress_render( + course_width, enable_ccx, view_as_ccx, default_queries, history_queries, reads, xblocks + ) class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase): @@ -213,25 +221,30 @@ class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase): __test__ = True TEST_DATA = { - # (providers, course_width, enable_ccx, view_as_ccx): # of sql queries, # of mongo queries, # of xblocks - ('no_overrides', 1, True, False): (48, 6, 13), - ('no_overrides', 2, True, False): (135, 6, 84), - ('no_overrides', 3, True, False): (480, 6, 335), - ('ccx', 1, True, False): (48, 6, 13), - ('ccx', 2, True, False): (135, 6, 84), - ('ccx', 3, True, False): (480, 6, 335), - ('ccx', 1, True, True): (48, 6, 13), - ('ccx', 2, True, True): (135, 6, 84), - ('ccx', 3, True, True): (480, 6, 335), - ('no_overrides', 1, False, False): (48, 6, 13), - ('no_overrides', 2, False, False): (135, 6, 84), - ('no_overrides', 3, False, False): (480, 6, 335), - ('ccx', 1, False, False): (48, 6, 13), - ('ccx', 2, False, False): (135, 6, 84), - ('ccx', 3, False, False): (480, 6, 335), - ('ccx', 1, False, True): (48, 6, 13), - ('ccx', 2, False, True): (135, 6, 84), - ('ccx', 3, False, True): (480, 6, 335), + # (providers, course_width, enable_ccx, view_as_ccx): ( + # # of sql queries to default, + # # sql queries to student_module_history, + # # of mongo queries, + # # of xblocks + # ) + ('no_overrides', 1, True, False): (23, 1, 6, 13), + ('no_overrides', 2, True, False): (53, 16, 6, 84), + ('no_overrides', 3, True, False): (183, 81, 6, 335), + ('ccx', 1, True, False): (23, 1, 6, 13), + ('ccx', 2, True, False): (53, 16, 6, 84), + ('ccx', 3, True, False): (183, 81, 6, 335), + ('ccx', 1, True, True): (23, 1, 6, 13), + ('ccx', 2, True, True): (53, 16, 6, 84), + ('ccx', 3, True, True): (183, 81, 6, 335), + ('no_overrides', 1, False, False): (23, 1, 6, 13), + ('no_overrides', 2, False, False): (53, 16, 6, 84), + ('no_overrides', 3, False, False): (183, 81, 6, 335), + ('ccx', 1, False, False): (23, 1, 6, 13), + ('ccx', 2, False, False): (53, 16, 6, 84), + ('ccx', 3, False, False): (183, 81, 6, 335), + ('ccx', 1, False, True): (23, 1, 6, 13), + ('ccx', 2, False, True): (53, 16, 6, 84), + ('ccx', 3, False, True): (183, 81, 6, 335), } @@ -243,22 +256,22 @@ class TestFieldOverrideSplitPerformance(FieldOverridePerformanceTestCase): __test__ = True TEST_DATA = { - ('no_overrides', 1, True, False): (48, 4, 9), - ('no_overrides', 2, True, False): (135, 19, 54), - ('no_overrides', 3, True, False): (480, 84, 215), - ('ccx', 1, True, False): (48, 4, 9), - ('ccx', 2, True, False): (135, 19, 54), - ('ccx', 3, True, False): (480, 84, 215), - ('ccx', 1, True, True): (50, 4, 13), - ('ccx', 2, True, True): (137, 19, 84), - ('ccx', 3, True, True): (482, 84, 335), - ('no_overrides', 1, False, False): (48, 4, 9), - ('no_overrides', 2, False, False): (135, 19, 54), - ('no_overrides', 3, False, False): (480, 84, 215), - ('ccx', 1, False, False): (48, 4, 9), - ('ccx', 2, False, False): (135, 19, 54), - ('ccx', 3, False, False): (480, 84, 215), - ('ccx', 1, False, True): (48, 4, 9), - ('ccx', 2, False, True): (135, 19, 54), - ('ccx', 3, False, True): (480, 84, 215), + ('no_overrides', 1, True, False): (23, 1, 4, 9), + ('no_overrides', 2, True, False): (53, 16, 19, 54), + ('no_overrides', 3, True, False): (183, 81, 84, 215), + ('ccx', 1, True, False): (23, 1, 4, 9), + ('ccx', 2, True, False): (53, 16, 19, 54), + ('ccx', 3, True, False): (183, 81, 84, 215), + ('ccx', 1, True, True): (25, 1, 4, 13), + ('ccx', 2, True, True): (55, 16, 19, 84), + ('ccx', 3, True, True): (185, 81, 84, 335), + ('no_overrides', 1, False, False): (23, 1, 4, 9), + ('no_overrides', 2, False, False): (53, 16, 19, 54), + ('no_overrides', 3, False, False): (183, 81, 84, 215), + ('ccx', 1, False, False): (23, 1, 4, 9), + ('ccx', 2, False, False): (53, 16, 19, 54), + ('ccx', 3, False, False): (183, 81, 84, 215), + ('ccx', 1, False, True): (23, 1, 4, 9), + ('ccx', 2, False, True): (53, 16, 19, 54), + ('ccx', 3, False, True): (183, 81, 84, 215), } diff --git a/lms/djangoapps/courseware/fields.py b/lms/djangoapps/courseware/fields.py new file mode 100644 index 0000000000..6e34c4e635 --- /dev/null +++ b/lms/djangoapps/courseware/fields.py @@ -0,0 +1,21 @@ +""" +Custom fields for use in the courseware django app. +""" + +from django.db.models.fields import AutoField + + +class UnsignedBigIntAutoField(AutoField): + """ + An unsigned 8-byte integer for auto-incrementing primary keys. + """ + def db_type(self, connection): + if connection.settings_dict['ENGINE'] == 'django.db.backends.mysql': + return "bigint UNSIGNED AUTO_INCREMENT" + elif connection.settings_dict['ENGINE'] == 'django.db.backends.sqlite3': + # Sqlite will only auto-increment the ROWID column. Any INTEGER PRIMARY KEY column + # is an alias for that (https://www.sqlite.org/autoinc.html). An unsigned integer + # isn't an alias for ROWID, so we have to give up on the unsigned part. + return "integer" + else: + return None diff --git a/lms/djangoapps/courseware/management/commands/clean_history.py b/lms/djangoapps/courseware/management/commands/clean_history.py deleted file mode 100644 index d4f22a0e3e..0000000000 --- a/lms/djangoapps/courseware/management/commands/clean_history.py +++ /dev/null @@ -1,222 +0,0 @@ -"""A command to clean the StudentModuleHistory table. - -When we added XBlock storage, each field modification wrote a new history row -to the db. Now that we have bulk saves to avoid that database hammering, we -need to clean out the unnecessary rows from the database. - -This command that does that. - -""" - -import datetime -import json -import logging -import optparse -import time -import traceback - -from django.core.management.base import NoArgsCommand -from django.db import transaction -from django.db.models import Max -from courseware.models import StudentModuleHistory - - -class Command(NoArgsCommand): - """The actual clean_history command to clean history rows.""" - - help = "Deletes unneeded rows from the StudentModuleHistory table." - - option_list = NoArgsCommand.option_list + ( - optparse.make_option( - '--batch', - type='int', - default=100, - help="Batch size, number of module_ids to examine in a transaction.", - ), - optparse.make_option( - '--dry-run', - action='store_true', - default=False, - help="Don't change the database, just show what would be done.", - ), - optparse.make_option( - '--sleep', - type='float', - default=0, - help="Seconds to sleep between batches.", - ), - ) - - def handle_noargs(self, **options): - # We don't want to see the SQL output from the db layer. - logging.getLogger("django.db.backends").setLevel(logging.INFO) - - smhc = StudentModuleHistoryCleaner( - dry_run=options["dry_run"], - ) - smhc.main(batch_size=options["batch"], sleep=options["sleep"]) - - -class StudentModuleHistoryCleaner(object): - """Logic to clean rows from the StudentModuleHistory table.""" - - DELETE_GAP_SECS = 0.5 # Rows this close can be discarded. - STATE_FILE = "clean_history.json" - BATCH_SIZE = 100 - - def __init__(self, dry_run=False): - self.dry_run = dry_run - self.next_student_module_id = 0 - self.last_student_module_id = 0 - - def main(self, batch_size=None, sleep=0): - """Invoked from the management command to do all the work.""" - - batch_size = batch_size or self.BATCH_SIZE - - self.last_student_module_id = self.get_last_student_module_id() - self.load_state() - - while self.next_student_module_id <= self.last_student_module_id: - with transaction.atomic(): - for smid in self.module_ids_to_check(batch_size): - try: - self.clean_one_student_module(smid) - except Exception: # pylint: disable=broad-except - trace = traceback.format_exc() - self.say("Couldn't clean student_module_id {}:\n{}".format(smid, trace)) - if self.dry_run: - transaction.set_rollback(True) - else: - self.say("Committing") - self.save_state() - if sleep: - time.sleep(sleep) - - def say(self, message): - """ - Display a message to the user. - - The message will have a trailing newline added to it. - - """ - print message - - def load_state(self): - """ - Load the latest state from disk. - """ - try: - state_file = open(self.STATE_FILE) - except IOError: - self.say("No stored state") - self.next_student_module_id = 0 - else: - with state_file: - state = json.load(state_file) - self.say( - "Loaded stored state: {}".format( - json.dumps(state, sort_keys=True) - ) - ) - self.next_student_module_id = state['next_student_module_id'] - - def save_state(self): - """ - Save the state to disk. - """ - state = { - 'next_student_module_id': self.next_student_module_id, - } - with open(self.STATE_FILE, "w") as state_file: - json.dump(state, state_file) - self.say("Saved state: {}".format(json.dumps(state, sort_keys=True))) - - def get_last_student_module_id(self): - """ - Return the id of the last student_module. - """ - last = StudentModuleHistory.objects.all() \ - .aggregate(Max('student_module'))['student_module__max'] - self.say("Last student_module_id is {}".format(last)) - return last - - def module_ids_to_check(self, batch_size): - """Produce a sequence of student module ids to check. - - `batch_size` is how many module ids to produce, max. - - The sequence starts with `next_student_module_id`, and goes up to - and including `last_student_module_id`. - - `next_student_module_id` is updated as each id is yielded. - - """ - start = self.next_student_module_id - for smid in range(start, start + batch_size): - if smid > self.last_student_module_id: - break - yield smid - self.next_student_module_id = smid + 1 - - def get_history_for_student_modules(self, student_module_id): - """ - Get the history rows for a student module. - - ```student_module_id```: the id of the student module we're - interested in. - - Return a list: [(id, created), ...], all the rows of history. - - """ - history = StudentModuleHistory.objects \ - .filter(student_module=student_module_id) \ - .order_by('created', 'id') - - return [(row.id, row.created) for row in history] - - def delete_history(self, ids_to_delete): - """ - Delete history rows. - - ```ids_to_delete```: a non-empty list (or set...) of history row ids to delete. - - """ - assert ids_to_delete - StudentModuleHistory.objects.filter(id__in=ids_to_delete).delete() - - def clean_one_student_module(self, student_module_id): - """Clean one StudentModule's-worth of history. - - `student_module_id`: the id of the StudentModule to process. - - """ - delete_gap = datetime.timedelta(seconds=self.DELETE_GAP_SECS) - - history = self.get_history_for_student_modules(student_module_id) - if not history: - self.say("No history for student_module_id {}".format(student_module_id)) - return - - ids_to_delete = [] - next_created = None - for history_id, created in reversed(history): - if next_created is not None: - # Compare this timestamp with the next one. - if (next_created - created) < delete_gap: - # This row is followed closely by another, we can discard - # this one. - ids_to_delete.append(history_id) - - next_created = created - - verb = "Would have deleted" if self.dry_run else "Deleting" - self.say("{verb} {to_delete} rows of {total} for student_module_id {id}".format( - verb=verb, - to_delete=len(ids_to_delete), - total=len(history), - id=student_module_id, - )) - - if ids_to_delete and not self.dry_run: - self.delete_history(ids_to_delete) diff --git a/lms/djangoapps/courseware/management/commands/tests/test_clean_history.py b/lms/djangoapps/courseware/management/commands/tests/test_clean_history.py deleted file mode 100644 index e0c7da7af9..0000000000 --- a/lms/djangoapps/courseware/management/commands/tests/test_clean_history.py +++ /dev/null @@ -1,491 +0,0 @@ -"""Test the clean_history management command.""" - -import fnmatch -from mock import Mock -from nose.plugins.attrib import attr -import os.path -import textwrap - -import dateutil.parser - -from django.test import TransactionTestCase -from django.db import connection - -from courseware.management.commands.clean_history import StudentModuleHistoryCleaner - -# In lots of places in this file, smhc == StudentModuleHistoryCleaner - - -def parse_date(sdate): - """Parse a string date into a datetime.""" - parsed = dateutil.parser.parse(sdate) - parsed = parsed.replace(tzinfo=dateutil.tz.gettz('UTC')) - return parsed - - -class SmhcSayStubbed(StudentModuleHistoryCleaner): - """StudentModuleHistoryCleaner, but with .say() stubbed for testing.""" - def __init__(self, **kwargs): - super(SmhcSayStubbed, self).__init__(**kwargs) - self.said_lines = [] - - def say(self, msg): - self.said_lines.append(msg) - - -class SmhcDbMocked(SmhcSayStubbed): - """StudentModuleHistoryCleaner, but with db access mocked.""" - def __init__(self, **kwargs): - super(SmhcDbMocked, self).__init__(**kwargs) - self.get_history_for_student_modules = Mock() - self.delete_history = Mock() - - def set_rows(self, rows): - """Set the mocked history rows.""" - rows = [(row_id, parse_date(created)) for row_id, created in rows] - self.get_history_for_student_modules.return_value = rows - - -class HistoryCleanerTest(TransactionTestCase): - """Base class for all history cleaner tests.""" - - maxDiff = None - - def setUp(self): - super(HistoryCleanerTest, self).setUp() - self.addCleanup(self.clean_up_state_file) - - def write_state_file(self, state): - """Write the string `state` into the state file read by StudentModuleHistoryCleaner.""" - with open(StudentModuleHistoryCleaner.STATE_FILE, "w") as state_file: - state_file.write(state) - - def read_state_file(self): - """Return the string contents of the state file read by StudentModuleHistoryCleaner.""" - with open(StudentModuleHistoryCleaner.STATE_FILE) as state_file: - return state_file.read() - - def clean_up_state_file(self): - """Remove any state file lying around.""" - if os.path.exists(StudentModuleHistoryCleaner.STATE_FILE): - os.remove(StudentModuleHistoryCleaner.STATE_FILE) - - def assert_said(self, smhc, *msgs): - """Fail if the `smhc` didn't say `msgs`. - - The messages passed here are `fnmatch`-style patterns: "*" means anything. - - """ - for said, pattern in zip(smhc.said_lines, msgs): - if not fnmatch.fnmatch(said, pattern): - fmt = textwrap.dedent("""\ - Messages: - - {msgs} - - don't match patterns: - - {patterns} - - Failed at {said!r} and {pattern!r} - """) - - msg = fmt.format( - msgs="\n".join(smhc.said_lines), - patterns="\n".join(msgs), - said=said, - pattern=pattern - ) - self.fail(msg) - - def parse_rows(self, rows): - """Parse convenient rows into real data.""" - rows = [ - (row_id, parse_date(created), student_module_id) - for row_id, created, student_module_id in rows - ] - return rows - - def write_history(self, rows): - """Write history rows to the db. - - Each row should be (id, created, student_module_id). - - """ - cursor = connection.cursor() - cursor.executemany( - """ - INSERT INTO courseware_studentmodulehistory - (id, created, student_module_id) - VALUES (%s, %s, %s) - """, - self.parse_rows(rows), - ) - - def read_history(self): - """Read the history from the db, and return it as a list of tuples. - - Returns [(id, created, student_module_id), ...] - - """ - cursor = connection.cursor() - cursor.execute(""" - SELECT id, created, student_module_id FROM courseware_studentmodulehistory - """) - return cursor.fetchall() - - def assert_history(self, rows): - """Assert that the history rows are the same as `rows`.""" - self.assertEqual(self.parse_rows(rows), self.read_history()) - - -@attr('shard_1') -class HistoryCleanerNoDbTest(HistoryCleanerTest): - """Tests of StudentModuleHistoryCleaner with db access mocked.""" - - def test_empty(self): - smhc = SmhcDbMocked() - smhc.set_rows([]) - - smhc.clean_one_student_module(1) - self.assert_said(smhc, "No history for student_module_id 1") - - # Nothing to delete, so delete_history wasn't called. - self.assertFalse(smhc.delete_history.called) - - def test_one_row(self): - smhc = SmhcDbMocked() - smhc.set_rows([ - (1, "2013-07-13 12:11:10.987"), - ]) - smhc.clean_one_student_module(1) - self.assert_said(smhc, "Deleting 0 rows of 1 for student_module_id 1") - # Nothing to delete, so delete_history wasn't called. - self.assertFalse(smhc.delete_history.called) - - def test_one_row_dry_run(self): - smhc = SmhcDbMocked(dry_run=True) - smhc.set_rows([ - (1, "2013-07-13 12:11:10.987"), - ]) - smhc.clean_one_student_module(1) - self.assert_said(smhc, "Would have deleted 0 rows of 1 for student_module_id 1") - # Nothing to delete, so delete_history wasn't called. - self.assertFalse(smhc.delete_history.called) - - def test_two_rows_close(self): - smhc = SmhcDbMocked() - smhc.set_rows([ - (7, "2013-07-13 12:34:56.789"), - (9, "2013-07-13 12:34:56.987"), - ]) - smhc.clean_one_student_module(1) - self.assert_said(smhc, "Deleting 1 rows of 2 for student_module_id 1") - smhc.delete_history.assert_called_once_with([7]) - - def test_two_rows_far(self): - smhc = SmhcDbMocked() - smhc.set_rows([ - (7, "2013-07-13 12:34:56.789"), - (9, "2013-07-13 12:34:57.890"), - ]) - smhc.clean_one_student_module(1) - self.assert_said(smhc, "Deleting 0 rows of 2 for student_module_id 1") - self.assertFalse(smhc.delete_history.called) - - def test_a_bunch_of_rows(self): - smhc = SmhcDbMocked() - smhc.set_rows([ - (4, "2013-07-13 16:30:00.000"), # keep - (8, "2013-07-13 16:30:01.100"), - (15, "2013-07-13 16:30:01.200"), - (16, "2013-07-13 16:30:01.300"), # keep - (23, "2013-07-13 16:30:02.400"), - (42, "2013-07-13 16:30:02.500"), - (98, "2013-07-13 16:30:02.600"), # keep - (99, "2013-07-13 16:30:59.000"), # keep - ]) - smhc.clean_one_student_module(17) - self.assert_said(smhc, "Deleting 4 rows of 8 for student_module_id 17") - smhc.delete_history.assert_called_once_with([42, 23, 15, 8]) - - -@attr('shard_1') -class HistoryCleanerWitDbTest(HistoryCleanerTest): - """Tests of StudentModuleHistoryCleaner with a real db.""" - - def test_no_history(self): - # Cleaning a student_module_id with no history leaves the db unchanged. - smhc = SmhcSayStubbed() - self.write_history([ - (4, "2013-07-13 16:30:00.000", 11), # keep - (8, "2013-07-13 16:30:01.100", 11), - (15, "2013-07-13 16:30:01.200", 11), - (16, "2013-07-13 16:30:01.300", 11), # keep - (23, "2013-07-13 16:30:02.400", 11), - (42, "2013-07-13 16:30:02.500", 11), - (98, "2013-07-13 16:30:02.600", 11), # keep - (99, "2013-07-13 16:30:59.000", 11), # keep - ]) - - smhc.clean_one_student_module(22) - self.assert_said(smhc, "No history for student_module_id 22") - self.assert_history([ - (4, "2013-07-13 16:30:00.000", 11), # keep - (8, "2013-07-13 16:30:01.100", 11), - (15, "2013-07-13 16:30:01.200", 11), - (16, "2013-07-13 16:30:01.300", 11), # keep - (23, "2013-07-13 16:30:02.400", 11), - (42, "2013-07-13 16:30:02.500", 11), - (98, "2013-07-13 16:30:02.600", 11), # keep - (99, "2013-07-13 16:30:59.000", 11), # keep - ]) - - def test_a_bunch_of_rows(self): - # Cleaning a student_module_id with 8 records, 4 to delete. - smhc = SmhcSayStubbed() - self.write_history([ - (4, "2013-07-13 16:30:00.000", 11), # keep - (8, "2013-07-13 16:30:01.100", 11), - (15, "2013-07-13 16:30:01.200", 11), - (16, "2013-07-13 16:30:01.300", 11), # keep - (17, "2013-07-13 16:30:01.310", 22), # other student_module_id! - (23, "2013-07-13 16:30:02.400", 11), - (42, "2013-07-13 16:30:02.500", 11), - (98, "2013-07-13 16:30:02.600", 11), # keep - (99, "2013-07-13 16:30:59.000", 11), # keep - ]) - - smhc.clean_one_student_module(11) - self.assert_said(smhc, "Deleting 4 rows of 8 for student_module_id 11") - self.assert_history([ - (4, "2013-07-13 16:30:00.000", 11), # keep - (16, "2013-07-13 16:30:01.300", 11), # keep - (17, "2013-07-13 16:30:01.310", 22), # other student_module_id! - (98, "2013-07-13 16:30:02.600", 11), # keep - (99, "2013-07-13 16:30:59.000", 11), # keep - ]) - - def test_a_bunch_of_rows_dry_run(self): - # Cleaning a student_module_id with 8 records, 4 to delete, - # but don't really do it. - smhc = SmhcSayStubbed(dry_run=True) - self.write_history([ - (4, "2013-07-13 16:30:00.000", 11), # keep - (8, "2013-07-13 16:30:01.100", 11), - (15, "2013-07-13 16:30:01.200", 11), - (16, "2013-07-13 16:30:01.300", 11), # keep - (23, "2013-07-13 16:30:02.400", 11), - (42, "2013-07-13 16:30:02.500", 11), - (98, "2013-07-13 16:30:02.600", 11), # keep - (99, "2013-07-13 16:30:59.000", 11), # keep - ]) - - smhc.clean_one_student_module(11) - self.assert_said(smhc, "Would have deleted 4 rows of 8 for student_module_id 11") - self.assert_history([ - (4, "2013-07-13 16:30:00.000", 11), # keep - (8, "2013-07-13 16:30:01.100", 11), - (15, "2013-07-13 16:30:01.200", 11), - (16, "2013-07-13 16:30:01.300", 11), # keep - (23, "2013-07-13 16:30:02.400", 11), - (42, "2013-07-13 16:30:02.500", 11), - (98, "2013-07-13 16:30:02.600", 11), # keep - (99, "2013-07-13 16:30:59.000", 11), # keep - ]) - - def test_a_bunch_of_rows_in_jumbled_order(self): - # Cleaning a student_module_id with 8 records, 4 to delete. - smhc = SmhcSayStubbed() - self.write_history([ - (23, "2013-07-13 16:30:01.100", 11), - (24, "2013-07-13 16:30:01.300", 11), # keep - (27, "2013-07-13 16:30:02.500", 11), - (30, "2013-07-13 16:30:01.350", 22), # other student_module_id! - (32, "2013-07-13 16:30:59.000", 11), # keep - (50, "2013-07-13 16:30:02.400", 11), - (51, "2013-07-13 16:30:02.600", 11), # keep - (56, "2013-07-13 16:30:00.000", 11), # keep - (57, "2013-07-13 16:30:01.200", 11), - ]) - - smhc.clean_one_student_module(11) - self.assert_said(smhc, "Deleting 4 rows of 8 for student_module_id 11") - self.assert_history([ - (24, "2013-07-13 16:30:01.300", 11), # keep - (30, "2013-07-13 16:30:01.350", 22), # other student_module_id! - (32, "2013-07-13 16:30:59.000", 11), # keep - (51, "2013-07-13 16:30:02.600", 11), # keep - (56, "2013-07-13 16:30:00.000", 11), # keep - ]) - - def test_a_bunch_of_rows_with_timestamp_ties(self): - # Sometimes rows are written with identical timestamps. The one with - # the greater id is the winner in that case. - smhc = SmhcSayStubbed() - self.write_history([ - (21, "2013-07-13 16:30:01.100", 11), - (24, "2013-07-13 16:30:01.100", 11), # keep - (22, "2013-07-13 16:30:01.100", 11), - (23, "2013-07-13 16:30:01.100", 11), - (27, "2013-07-13 16:30:02.500", 11), - (30, "2013-07-13 16:30:01.350", 22), # other student_module_id! - (32, "2013-07-13 16:30:59.000", 11), # keep - (50, "2013-07-13 16:30:02.500", 11), # keep - ]) - - smhc.clean_one_student_module(11) - self.assert_said(smhc, "Deleting 4 rows of 7 for student_module_id 11") - self.assert_history([ - (24, "2013-07-13 16:30:01.100", 11), # keep - (30, "2013-07-13 16:30:01.350", 22), # other student_module_id! - (32, "2013-07-13 16:30:59.000", 11), # keep - (50, "2013-07-13 16:30:02.500", 11), # keep - ]) - - def test_get_last_student_module(self): - # Can we find the last student_module_id properly? - smhc = SmhcSayStubbed() - self.write_history([ - (23, "2013-07-13 16:30:01.100", 11), - (24, "2013-07-13 16:30:01.300", 44), - (27, "2013-07-13 16:30:02.500", 11), - (30, "2013-07-13 16:30:01.350", 22), - (32, "2013-07-13 16:30:59.000", 11), - (51, "2013-07-13 16:30:02.600", 33), - (56, "2013-07-13 16:30:00.000", 11), - ]) - last = smhc.get_last_student_module_id() - self.assertEqual(last, 44) - self.assert_said(smhc, "Last student_module_id is 44") - - def test_load_state_with_no_stored_state(self): - smhc = SmhcSayStubbed() - self.assertFalse(os.path.exists(smhc.STATE_FILE)) - smhc.load_state() - self.assertEqual(smhc.next_student_module_id, 0) - self.assert_said(smhc, "No stored state") - - def test_load_stored_state(self): - self.write_state_file('{"next_student_module_id": 23}') - smhc = SmhcSayStubbed() - smhc.load_state() - self.assertEqual(smhc.next_student_module_id, 23) - self.assert_said(smhc, 'Loaded stored state: {"next_student_module_id": 23}') - - def test_save_state(self): - smhc = SmhcSayStubbed() - smhc.next_student_module_id = 47 - smhc.save_state() - state = self.read_state_file() - self.assertEqual(state, '{"next_student_module_id": 47}') - - -class SmhcForTestingMain(SmhcSayStubbed): - """A StudentModuleHistoryCleaner with a few function stubbed for testing main.""" - - def __init__(self, *args, **kwargs): - self.exception_smids = kwargs.pop('exception_smids', ()) - super(SmhcForTestingMain, self).__init__(*args, **kwargs) - - def clean_one_student_module(self, smid): - self.say("(not really cleaning {})".format(smid)) - if smid in self.exception_smids: - raise Exception("Something went wrong!") - - -@attr('shard_1') -class HistoryCleanerMainTest(HistoryCleanerTest): - """Tests of StudentModuleHistoryCleaner.main(), using SmhcForTestingMain.""" - - def test_only_one_record(self): - smhc = SmhcForTestingMain() - self.write_history([ - (1, "2013-07-15 11:47:00.000", 1), - ]) - smhc.main() - self.assert_said( - smhc, - 'Last student_module_id is 1', - 'No stored state', - '(not really cleaning 0)', - '(not really cleaning 1)', - 'Committing', - 'Saved state: {"next_student_module_id": 2}', - ) - - def test_already_processed_some(self): - smhc = SmhcForTestingMain() - self.write_state_file('{"next_student_module_id": 25}') - self.write_history([ - (1, "2013-07-15 15:04:00.000", 23), - (2, "2013-07-15 15:04:11.000", 23), - (3, "2013-07-15 15:04:01.000", 24), - (4, "2013-07-15 15:04:00.000", 25), - (5, "2013-07-15 15:04:00.000", 26), - ]) - smhc.main() - self.assert_said( - smhc, - 'Last student_module_id is 26', - 'Loaded stored state: {"next_student_module_id": 25}', - '(not really cleaning 25)', - '(not really cleaning 26)', - 'Committing', - 'Saved state: {"next_student_module_id": 27}' - ) - - def test_working_in_batches(self): - smhc = SmhcForTestingMain() - self.write_state_file('{"next_student_module_id": 25}') - self.write_history([ - (3, "2013-07-15 15:04:01.000", 24), - (4, "2013-07-15 15:04:00.000", 25), - (5, "2013-07-15 15:04:00.000", 26), - (6, "2013-07-15 15:04:00.000", 27), - (7, "2013-07-15 15:04:00.000", 28), - (8, "2013-07-15 15:04:00.000", 29), - ]) - smhc.main(batch_size=3) - self.assert_said( - smhc, - 'Last student_module_id is 29', - 'Loaded stored state: {"next_student_module_id": 25}', - '(not really cleaning 25)', - '(not really cleaning 26)', - '(not really cleaning 27)', - 'Committing', - 'Saved state: {"next_student_module_id": 28}', - '(not really cleaning 28)', - '(not really cleaning 29)', - 'Committing', - 'Saved state: {"next_student_module_id": 30}', - ) - - def test_something_failing_while_cleaning(self): - smhc = SmhcForTestingMain(exception_smids=[26]) - self.write_state_file('{"next_student_module_id": 25}') - self.write_history([ - (3, "2013-07-15 15:04:01.000", 24), - (4, "2013-07-15 15:04:00.000", 25), - (5, "2013-07-15 15:04:00.000", 26), - (6, "2013-07-15 15:04:00.000", 27), - (7, "2013-07-15 15:04:00.000", 28), - (8, "2013-07-15 15:04:00.000", 29), - ]) - smhc.main(batch_size=3) - self.assert_said( - smhc, - 'Last student_module_id is 29', - 'Loaded stored state: {"next_student_module_id": 25}', - '(not really cleaning 25)', - '(not really cleaning 26)', - "Couldn't clean student_module_id 26:\nTraceback*Exception: Something went wrong!\n", - '(not really cleaning 27)', - 'Committing', - 'Saved state: {"next_student_module_id": 28}', - '(not really cleaning 28)', - '(not really cleaning 29)', - 'Committing', - 'Saved state: {"next_student_module_id": 30}', - ) diff --git a/lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py b/lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py new file mode 100644 index 0000000000..8ee63b6f3b --- /dev/null +++ b/lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import courseware.fields +from django.conf import settings + + +def bump_pk_start(apps, schema_editor): + if not schema_editor.connection.alias == 'student_module_history': + return + StudentModuleHistory = apps.get_model("courseware", "StudentModuleHistory") + initial_id = settings.STUDENTMODULEHISTORYEXTENDED_OFFSET + StudentModuleHistory.objects.all().latest('id').id + + if schema_editor.connection.vendor == 'mysql': + schema_editor.execute('ALTER TABLE courseware_studentmodulehistoryextended AUTO_INCREMENT=%s', [initial_id]) + elif schema_editor.connection.vendor == 'sqlite3': + # This is a hack to force sqlite to add new rows after the earlier rows we + # want to migrate. + StudentModuleHistory( + id=initial_id, + course_key=None, + usage_key=None, + username="", + version="", + created=datetime.datetime.now(), + ).save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('courseware', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='StudentModuleHistoryExtended', + fields=[ + ('id', courseware.fields.UnsignedBigIntAutoField(serialize=False, primary_key=True)), + ('version', models.CharField(db_index=True, max_length=255, null=True, blank=True)), + ('created', models.DateTimeField(db_index=True)), + ('state', models.TextField(null=True, blank=True)), + ('grade', models.FloatField(null=True, blank=True)), + ('max_grade', models.FloatField(null=True, blank=True)), + ('student_module', models.ForeignKey(to='courseware.StudentModule', db_constraint=False)), + ], + options={ + 'get_latest_by': 'created', + }, + ), + migrations.RunPython(bump_pk_start, reverse_code=migrations.RunPython.noop), + ] diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index 5dff6ea01d..c67bb1fd16 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -26,7 +26,7 @@ from student.models import user_by_anonymous_id from submissions.models import score_set, score_reset from xmodule_django.models import CourseKeyField, LocationKeyField, BlockTypeKeyField -log = logging.getLogger(__name__) +from courseware.fields import UnsignedBigIntAutoField log = logging.getLogger("edx.courseware") @@ -188,6 +188,50 @@ class StudentModuleHistory(models.Model): def __unicode__(self): return unicode(repr(self)) +class StudentModuleHistoryExtended(models.Model): + """Keeps a complete history of state changes for a given XModule for a given + Student. Right now, we restrict this to problems so that the table doesn't + explode in size. + + This new extended CSMH has a larger primary key that won't run out of space + so quickly.""" + objects = ChunkingManager() + HISTORY_SAVING_TYPES = {'problem'} + + class Meta(object): + app_label = "courseware" + get_latest_by = "created" + + id = UnsignedBigIntAutoField(primary_key=True) # pylint: disable=invalid-name + + student_module = models.ForeignKey(StudentModule, db_index=True, db_constraint=False) + version = models.CharField(max_length=255, null=True, blank=True, db_index=True) + + # This should be populated from the modified field in StudentModule + created = models.DateTimeField(db_index=True) + state = models.TextField(null=True, blank=True) + grade = models.FloatField(null=True, blank=True) + max_grade = models.FloatField(null=True, blank=True) + + @receiver(post_save, sender=StudentModule) + def save_history(sender, instance, **kwargs): # pylint: disable=no-self-argument, unused-argument + """ + Checks the instance's module_type, and creates & saves a + StudentModuleHistory entry if the module_type is one that + we save. + """ + if instance.module_type in StudentModuleHistoryExtended.HISTORY_SAVING_TYPES: + history_entry = StudentModuleHistoryExtended(student_module=instance, + version=None, + created=instance.modified, + state=instance.state, + grade=instance.grade, + max_grade=instance.max_grade) + history_entry.save() + + def __unicode__(self): + return unicode(repr(self)) + class XBlockFieldBase(models.Model): """ diff --git a/lms/djangoapps/courseware/routers.py b/lms/djangoapps/courseware/routers.py new file mode 100644 index 0000000000..1514c10259 --- /dev/null +++ b/lms/djangoapps/courseware/routers.py @@ -0,0 +1,57 @@ +""" +Database Routers for use with the courseware django app. +""" + + +class StudentModuleHistoryRouter(object): + """ + A Database Router that separates StudentModuleHistory into its own database. + """ + + DATABASE_NAME = 'student_module_history' + + def _is_csmh(self, model): + """ + Return True if ``model`` is courseware.StudentModuleHistory. + """ + return ( + model._meta.app_label == 'courseware' and # pylint: disable=protected-access + model.__name__ == 'StudentModuleHistory' + ) + + def db_for_read(self, model, **hints): # pylint: disable=unused-argument + """ + Use the StudentModuleHistoryRouter.DATABASE_NAME if the model is StudentModuleHistory. + """ + if self._is_csmh(model): + return self.DATABASE_NAME + else: + return None + + def db_for_write(self, model, **hints): # pylint: disable=unused-argument + """ + Use the StudentModuleHistoryRouter.DATABASE_NAME if the model is StudentModuleHistory. + """ + if self._is_csmh(model): + return self.DATABASE_NAME + else: + return None + + def allow_relation(self, obj1, obj2, **hints): # pylint: disable=unused-argument + """ + Disable relations if the model is StudentModuleHistory. + """ + if self._is_csmh(obj1) or self._is_csmh(obj2): + return False + return None + + def allow_migrate(self, db, model): # pylint: disable=unused-argument + """ + Only sync StudentModuleHistory to StudentModuleHistoryRouter.DATABASE_Name + """ + if self._is_csmh(model): + return db == self.DATABASE_NAME + elif db == self.DATABASE_NAME: + return False + + return None diff --git a/lms/djangoapps/courseware/tests/test_model_data.py b/lms/djangoapps/courseware/tests/test_model_data.py index e8c2a275f1..b80f05d2a1 100644 --- a/lms/djangoapps/courseware/tests/test_model_data.py +++ b/lms/djangoapps/courseware/tests/test_model_data.py @@ -249,8 +249,9 @@ class TestMissingStudentModule(TestCase): # to discover if something other than the DjangoXBlockUserStateClient # has written to the StudentModule (such as UserStateCache setting the score # on the StudentModule). - with self.assertNumQueries(5): - self.kvs.set(user_state_key('a_field'), 'a_value') + with self.assertNumQueries(2, using='default'): + with self.assertNumQueries(1, using='student_module_history'): + self.kvs.set(user_state_key('a_field'), 'a_value') self.assertEquals(1, sum(len(cache) for cache in self.field_data_cache.cache.values())) self.assertEquals(1, StudentModule.objects.all().count()) diff --git a/lms/envs/acceptance.py b/lms/envs/acceptance.py index 7a8b3bee55..41c64afe56 100644 --- a/lms/envs/acceptance.py +++ b/lms/envs/acceptance.py @@ -72,6 +72,14 @@ DATABASES = { 'timeout': 30, }, 'ATOMIC_REQUESTS': True, + }, + 'student_module_history': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': TEST_ROOT / "db" / "test_student_module_history.db", + 'TEST_NAME': TEST_ROOT / "db" / "test_student_module_history.db", + 'OPTIONS': { + 'timeout': 30, + }, } } diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 5e9327376d..6f593d139c 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -759,6 +759,11 @@ MICROSITE_DATABASE_TEMPLATE_CACHE_TTL = ENV_TOKENS.get( # Course Content Bookmarks Settings MAX_BOOKMARKS_PER_COURSE = ENV_TOKENS.get('MAX_BOOKMARKS_PER_COURSE', MAX_BOOKMARKS_PER_COURSE) +# Offset for pk of courseware.StudentModuleHistoryExtended +STUDENTMODULEHISTORYEXTENDED_OFFSET = ENV_TOKENS.get( + 'STUDENTMODULEHISTORYEXTENDED_OFFSET', STUDENTMODULEHISTORYEXTENDED_OFFSET +) + # Cutoff date for granting audit certificates if ENV_TOKENS.get('AUDIT_CERT_CUTOFF_DATE', None): AUDIT_CERT_CUTOFF_DATE = dateutil.parser.parse(ENV_TOKENS.get('AUDIT_CERT_CUTOFF_DATE')) diff --git a/lms/envs/aws_migrate.py b/lms/envs/aws_migrate.py index e14834ec2d..6dff697339 100644 --- a/lms/envs/aws_migrate.py +++ b/lms/envs/aws_migrate.py @@ -13,18 +13,25 @@ from .aws import * import os from django.core.exceptions import ImproperlyConfigured -DB_OVERRIDES = dict( - PASSWORD=os.environ.get('DB_MIGRATION_PASS', None), - ENGINE=os.environ.get('DB_MIGRATION_ENGINE', DATABASES['default']['ENGINE']), - USER=os.environ.get('DB_MIGRATION_USER', DATABASES['default']['USER']), - NAME=os.environ.get('DB_MIGRATION_NAME', DATABASES['default']['NAME']), - HOST=os.environ.get('DB_MIGRATION_HOST', DATABASES['default']['HOST']), - PORT=os.environ.get('DB_MIGRATION_PORT', DATABASES['default']['PORT']), -) -if DB_OVERRIDES['PASSWORD'] is None: - raise ImproperlyConfigured("No database password was provided for running " - "migrations. This is fatal.") +def get_db_overrides(db_name): + """ + Now that we have multiple databases, we want to look up from the environment + for both databases. + """ + db_overrides = dict( + PASSWORD=os.environ.get('DB_MIGRATION_PASS', None), + ENGINE=os.environ.get('DB_MIGRATION_ENGINE', DATABASES[db_name]['ENGINE']), + USER=os.environ.get('DB_MIGRATION_USER', DATABASES[db_name]['USER']), + NAME=os.environ.get('DB_MIGRATION_NAME', DATABASES[db_name]['NAME']), + HOST=os.environ.get('DB_MIGRATION_HOST', DATABASES[db_name]['HOST']), + PORT=os.environ.get('DB_MIGRATION_PORT', DATABASES[db_name]['PORT']), + ) -for override, value in DB_OVERRIDES.iteritems(): - DATABASES['default'][override] = value + if db_overrides['PASSWORD'] is None: + raise ImproperlyConfigured("No database password was provided for running " + "migrations. This is fatal.") + return db_overrides + +for db in ['default', 'student_module_history']: + DATABASES[db].update(get_db_overrides(db)) diff --git a/lms/envs/bok_choy.auth.json b/lms/envs/bok_choy.auth.json index c8b83d25bd..a25ec6fb09 100644 --- a/lms/envs/bok_choy.auth.json +++ b/lms/envs/bok_choy.auth.json @@ -39,6 +39,14 @@ "PASSWORD": "", "PORT": "3306", "USER": "root" + }, + "student_module_history": { + "ENGINE": "django.db.backends.mysql", + "HOST": "localhost", + "NAME": "student_module_history_test", + "PASSWORD": "", + "PORT": "3306", + "USER": "root" } }, "DOC_STORE_CONFIG": { diff --git a/lms/envs/common.py b/lms/envs/common.py index e58e583953..fa7cbe68fc 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -413,6 +413,12 @@ GEOIPV6_PATH = REPO_ROOT / "common/static/data/geoip/GeoIPv6.dat" # Where to look for a status message STATUS_MESSAGE_PATH = ENV_ROOT / "status_message.json" +############################ Global Database Configuration ##################### + +DATABASE_ROUTERS = [ + 'courseware.routers.StudentModuleHistoryRouter', +] + ############################ OpenID Provider ################################## OPENID_PROVIDER_TRUSTED_ROOTS = ['cs50.net', '*.cs50.net'] @@ -2759,6 +2765,10 @@ MOBILE_APP_USER_AGENT_REGEXES = [ r'edX/org.edx.mobile', ] +# Offset for courseware.StudentModuleHistoryExtended which is used to +# calculate the starting primary key for the underlying table. +STUDENTMODULEHISTORYEXTENDED_OFFSET = 10000 + # Deprecated xblock types DEPRECATED_ADVANCED_COMPONENT_TYPES = [] diff --git a/lms/envs/dev.py b/lms/envs/dev.py index 065ed74b28..024bb630ea 100644 --- a/lms/envs/dev.py +++ b/lms/envs/dev.py @@ -48,6 +48,11 @@ DATABASES = { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ENV_ROOT / "db" / "edx.db", 'ATOMIC_REQUESTS': True, + }, + 'student_module_history': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': ENV_ROOT / "db" / "student_module_history.db", + 'ATOMIC_REQUESTS': True, } } diff --git a/lms/envs/devplus.py b/lms/envs/devplus.py index 86800d8847..c06c698730 100644 --- a/lms/envs/devplus.py +++ b/lms/envs/devplus.py @@ -31,6 +31,15 @@ DATABASES = { 'HOST': '127.0.0.1', 'PORT': '3306', 'ATOMIC_REQUESTS': True, + }, + 'student_module_history': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'student_module_history', + 'USER': 'root', + 'PASSWORD': '', + 'HOST': '127.0.0.1', + 'PORT': '3306', + 'ATOMIC_REQUESTS': True, } } diff --git a/lms/envs/static.py b/lms/envs/static.py index f0da488e75..2229850f89 100644 --- a/lms/envs/static.py +++ b/lms/envs/static.py @@ -27,6 +27,11 @@ DATABASES = { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ENV_ROOT / "db" / "edx.db", 'ATOMIC_REQUESTS': True, + }, + 'student_module_history': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': ENV_ROOT / "db" / "student_module_history.db", + 'ATOMIC_REQUESTS': True, } } diff --git a/lms/envs/test.py b/lms/envs/test.py index c16ac9d37e..111de79ca9 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -186,7 +186,10 @@ DATABASES = { 'NAME': TEST_ROOT / 'db' / 'edx.db', 'ATOMIC_REQUESTS': True, }, - + 'student_module_history': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': TEST_ROOT / 'db' / 'student_module_history.db' + }, } if os.environ.get('DISABLE_MIGRATIONS'): diff --git a/lms/envs/test_static_optimized.py b/lms/envs/test_static_optimized.py index 19eaa2814e..f8ed5a9bb1 100644 --- a/lms/envs/test_static_optimized.py +++ b/lms/envs/test_static_optimized.py @@ -19,7 +19,9 @@ DATABASES = { 'ENGINE': 'django.db.backends.sqlite3', 'ATOMIC_REQUESTS': True, }, - + 'student_module_history': { + 'ENGINE': 'django.db.backends.sqlite3', + }, } # Provide a dummy XQUEUE_INTERFACE setting as LMS expects it to exist on start up diff --git a/scripts/reset-test-db.sh b/scripts/reset-test-db.sh index 41eefdedf4..b5f186e5b3 100755 --- a/scripts/reset-test-db.sh +++ b/scripts/reset-test-db.sh @@ -24,29 +24,54 @@ DB_CACHE_DIR="common/test/db_cache" -# Ensure the test database exists. -echo "CREATE DATABASE IF NOT EXISTS edxtest;" | mysql -u root +declare -A databases +databases=(["default"]="edxtest" ["student_module_history"]="student_module_history_test") + + +# Ensure the test database exists. +for db in "${!databases[@]}"; do + echo "CREATE DATABASE IF NOT EXISTS ${databases[$db]};" | mysql -u root + + # Clear out the test database + # + # We are using the django-extensions's reset_db command which uses "DROP DATABASE" and + # "CREATE DATABASE" in case the tests are being run in an environment (e.g. devstack + # or a jenkins worker environment) that already ran tests on another commit that had + # different migrations that created, dropped, or altered tables. + echo "Issuing a reset_db command to the bok_choy MySQL database." + ./manage.py lms --settings bok_choy reset_db --traceback --noinput --router $db + + # If there are cached database schemas/data, load them + if [[ ! -f $DB_CACHE_DIR/bok_choy_schema_$db.sql || ! -f $DB_CACHE_DIR/bok_choy_data_$db.json ]]; then + echo "Missing $DB_CACHE_DIR/bok_choy_schema_$db.sql or $DB_CACHE_DIR/bok_choy_data_$db.json, rebuilding cache" + REBUILD_CACHE=true + fi + +done + +# migrations are only stored in the default database +if [[ ! -f $DB_CACHE_DIR/bok_choy_migrations_data.sql ]]; then + REBUILD_CACHE=true +fi + -# Clear out the test database -# -# We are using the django-extensions's reset_db command which uses "DROP DATABASE" and -# "CREATE DATABASE" in case the tests are being run in an environment (e.g. devstack -# or a jenkins worker environment) that already ran tests on another commit that had -# different migrations that created, dropped, or altered tables. -echo "Issuing a reset_db command to the bok_choy MySQL database." -./manage.py lms --settings bok_choy reset_db --traceback --noinput # If there are cached database schemas/data, load them -if [[ -f $DB_CACHE_DIR/bok_choy_schema.sql && -f $DB_CACHE_DIR/bok_choy_migrations_data.sql && -f $DB_CACHE_DIR/bok_choy_data.json ]]; then +if [[ -z $REBUILD_CACHE ]]; then echo "Found the bok_choy DB cache files. Loading them into the database..." - # Load the schema, then the data (including the migration history) - echo "Loading the schema from the filesystem into the MySQL DB." - mysql -u root edxtest < $DB_CACHE_DIR/bok_choy_schema.sql + + for db in "${!databases[@]}"; do + # Load the schema, then the data (including the migration history) + echo "Loading the schema from the filesystem into the MySQL DB." + mysql -u root "${databases["$db"]}" < $DB_CACHE_DIR/bok_choy_schema_$db.sql + echo "Loading the fixture data from the filesystem into the MySQL DB." + ./manage.py lms --settings bok_choy loaddata --database $db $DB_CACHE_DIR/bok_choy_data_$db.json + done + + # Migrations are stored in the default database echo "Loading the migration data from the filesystem into the MySQL DB." - mysql -u root edxtest < $DB_CACHE_DIR/bok_choy_migrations_data.sql - echo "Loading the fixture data from the filesystem into the MySQL DB." - ./manage.py lms --settings bok_choy loaddata $DB_CACHE_DIR/bok_choy_data.json + mysql -u root "${databases['default']}" < $DB_CACHE_DIR/bok_choy_migrations_data.sql # Re-run migrations to ensure we are up-to-date echo "Running the lms migrations on the bok_choy DB." @@ -66,13 +91,15 @@ else echo "Issuing a migrate command to the bok_choy MySQL database for the cms django apps." ./manage.py cms --settings bok_choy migrate --traceback --noinput - # Dump the schema and data to the cache - echo "Using the dumpdata command to save the fixture data to the filesystem." - ./manage.py lms --settings bok_choy dumpdata > $DB_CACHE_DIR/bok_choy_data.json + for db in "${!databases[@]}"; do + # Dump the schema and data to the cache + echo "Using the dumpdata command to save the fixture data to the filesystem." + ./manage.py lms --settings bok_choy dumpdata --database $db > $DB_CACHE_DIR/bok_choy_data_$db.json + echo "Saving the schema of the bok_choy DB to the filesystem." + mysqldump -u root --no-data --skip-comments --skip-dump-date "${databases[$db]}" > $DB_CACHE_DIR/bok_choy_schema_$db.sql + done + # dump_data does not dump the django_migrations table so we do it separately. echo "Saving the django_migrations table of the bok_choy DB to the filesystem." - mysqldump -u root --no-create-info edxtest django_migrations > $DB_CACHE_DIR/bok_choy_migrations_data.sql - echo "Saving the schema of the bok_choy DB to the filesystem." - mysqldump -u root --no-data --skip-comments --skip-dump-date edxtest > $DB_CACHE_DIR/bok_choy_schema.sql + mysqldump -u root --no-create-info "${databases['default']}" django_migrations > $DB_CACHE_DIR/bok_choy_migrations_data.sql fi - From 6f9a3911e5662fd459e397a2fa6e2e834f55446a Mon Sep 17 00:00:00 2001 From: Kevin Falcone Date: Thu, 28 Jan 2016 10:32:28 -0500 Subject: [PATCH 2/3] Implement a BaseStudentModuleHistory This abstract class contains most of the fields (aside from the id and foreign key to StudentModule that the subclasses need to manage). It also provides a get_history method that abstracts searching across multiple backends. Move router code to openedx/core We need to use it from cms and lms. Ensure aws_migrate can be used for migrating both the lms and cms. Handle queries directed to student_module_history vs default and the extra queries generated by Django 1.8 (SAVEPOINTS, etc). Additionally, flag testing classes as multi_db so that Django will flush the non-default database between unit tests. Further decouple the foreignkey relation between csm and csmhe When calling StudentModule().delete() Django will try to delete CSMHE objects, but naively does so in the database, not by consulting the database router. Instead, we disable django cascading deletes and listen for post_delete signals and clean up CSMHE by hand. Add feature flags for CSMHE One to turn it on/off so we can control the deploy. The other will control whether or not we read from two database tables or one when searching. Update tests to explicitly use this get_history method rather than looking directly into StudentModuleHistory or StudentModuleHistoryExtended. Inform lettuce to avoid the coursewarehistoryextended app Otherwise it fails when it can't find features/ in that app. Add Pg support, this is not tested automatically. --- cms/envs/aws_migrate.py | 4 +- cms/envs/common.py | 5 + .../xmodule/modulestore/tests/django_utils.py | 4 + .../tests/test_field_override_performance.py | 74 +++++------ lms/djangoapps/courseware/models.py | 116 +++++++++--------- .../courseware/tests/test_access.py | 1 + .../courseware/tests/test_grades.py | 3 + lms/djangoapps/courseware/tests/test_i18n.py | 1 + .../courseware/tests/test_model_data.py | 30 +++-- .../tests/test_submitting_problems.py | 27 ++-- .../tests/test_user_state_client.py | 2 + .../courseware/user_state_client.py | 10 +- lms/djangoapps/courseware/views.py | 13 +- .../coursewarehistoryextended/__init__.py | 0 .../fields.py | 6 +- .../migrations/0001_initial.py} | 18 +-- .../migrations/__init__.py | 0 .../coursewarehistoryextended/models.py | 64 ++++++++++ .../coursewarehistoryextended/tests.py | 81 ++++++++++++ lms/envs/acceptance.py | 4 +- lms/envs/aws.py | 4 + lms/envs/bok_choy.py | 5 + lms/envs/common.py | 19 ++- lms/envs/test.py | 4 + .../core/lib/django_courseware_routers.py | 20 +-- 25 files changed, 366 insertions(+), 149 deletions(-) create mode 100644 lms/djangoapps/coursewarehistoryextended/__init__.py rename lms/djangoapps/{courseware => coursewarehistoryextended}/fields.py (71%) rename lms/djangoapps/{courseware/migrations/0002_csmh-extended-keyspace.py => coursewarehistoryextended/migrations/0001_initial.py} (67%) create mode 100644 lms/djangoapps/coursewarehistoryextended/migrations/__init__.py create mode 100644 lms/djangoapps/coursewarehistoryextended/models.py create mode 100644 lms/djangoapps/coursewarehistoryextended/tests.py rename lms/djangoapps/courseware/routers.py => openedx/core/lib/django_courseware_routers.py (58%) diff --git a/cms/envs/aws_migrate.py b/cms/envs/aws_migrate.py index e14834ec2d..92b2d51c9e 100644 --- a/cms/envs/aws_migrate.py +++ b/cms/envs/aws_migrate.py @@ -26,5 +26,5 @@ if DB_OVERRIDES['PASSWORD'] is None: raise ImproperlyConfigured("No database password was provided for running " "migrations. This is fatal.") -for override, value in DB_OVERRIDES.iteritems(): - DATABASES['default'][override] = value +DATABASES['default'].update(DB_OVERRIDES) +DATABASES['student_module_history'].update(DB_OVERRIDES) diff --git a/cms/envs/common.py b/cms/envs/common.py index bb99b01a98..40dd6c5ac0 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -1114,6 +1114,11 @@ PROCTORING_BACKEND_PROVIDER = { } PROCTORING_SETTINGS = {} +############################ Global Database Configuration ##################### + +DATABASE_ROUTERS = [ + 'openedx.core.lib.django_courseware_routers.StudentModuleHistoryExtendedRouter', +] ############################ OAUTH2 Provider ################################### diff --git a/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py b/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py index 5ed4ce201e..8120590122 100644 --- a/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py +++ b/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py @@ -265,6 +265,8 @@ class SharedModuleStoreTestCase(TestCase): for Django ORM models that will get cleaned up properly. """ MODULESTORE = mixed_store_config(mkdtemp_clean(), {}, include_xml=False) + # Tell Django to clean out all databases, not just default + multi_db = True @classmethod def setUpClass(cls): @@ -392,6 +394,8 @@ class ModuleStoreTestCase(TestCase): """ MODULESTORE = mixed_store_config(mkdtemp_clean(), {}, include_xml=False) + # Tell Django to clean out all databases, not just default + multi_db = True def setUp(self, **kwargs): """ diff --git a/lms/djangoapps/ccx/tests/test_field_override_performance.py b/lms/djangoapps/ccx/tests/test_field_override_performance.py index ffad914bee..f8c58ff6c5 100644 --- a/lms/djangoapps/ccx/tests/test_field_override_performance.py +++ b/lms/djangoapps/ccx/tests/test_field_override_performance.py @@ -46,6 +46,8 @@ class FieldOverridePerformanceTestCase(ProceduralCourseTestMixin, providers. """ __test__ = False + # Tell Django to clean out all databases, not just default + multi_db = True # TEST_DATA must be overridden by subclasses TEST_DATA = None @@ -227,24 +229,24 @@ class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase): # # of mongo queries, # # of xblocks # ) - ('no_overrides', 1, True, False): (23, 1, 6, 13), - ('no_overrides', 2, True, False): (53, 16, 6, 84), - ('no_overrides', 3, True, False): (183, 81, 6, 335), - ('ccx', 1, True, False): (23, 1, 6, 13), - ('ccx', 2, True, False): (53, 16, 6, 84), - ('ccx', 3, True, False): (183, 81, 6, 335), - ('ccx', 1, True, True): (23, 1, 6, 13), - ('ccx', 2, True, True): (53, 16, 6, 84), - ('ccx', 3, True, True): (183, 81, 6, 335), - ('no_overrides', 1, False, False): (23, 1, 6, 13), - ('no_overrides', 2, False, False): (53, 16, 6, 84), - ('no_overrides', 3, False, False): (183, 81, 6, 335), - ('ccx', 1, False, False): (23, 1, 6, 13), - ('ccx', 2, False, False): (53, 16, 6, 84), - ('ccx', 3, False, False): (183, 81, 6, 335), - ('ccx', 1, False, True): (23, 1, 6, 13), - ('ccx', 2, False, True): (53, 16, 6, 84), - ('ccx', 3, False, True): (183, 81, 6, 335), + ('no_overrides', 1, True, False): (47, 1, 6, 13), + ('no_overrides', 2, True, False): (119, 16, 6, 84), + ('no_overrides', 3, True, False): (399, 81, 6, 335), + ('ccx', 1, True, False): (47, 1, 6, 13), + ('ccx', 2, True, False): (119, 16, 6, 84), + ('ccx', 3, True, False): (399, 81, 6, 335), + ('ccx', 1, True, True): (47, 1, 6, 13), + ('ccx', 2, True, True): (119, 16, 6, 84), + ('ccx', 3, True, True): (399, 81, 6, 335), + ('no_overrides', 1, False, False): (47, 1, 6, 13), + ('no_overrides', 2, False, False): (119, 16, 6, 84), + ('no_overrides', 3, False, False): (399, 81, 6, 335), + ('ccx', 1, False, False): (47, 1, 6, 13), + ('ccx', 2, False, False): (119, 16, 6, 84), + ('ccx', 3, False, False): (399, 81, 6, 335), + ('ccx', 1, False, True): (47, 1, 6, 13), + ('ccx', 2, False, True): (119, 16, 6, 84), + ('ccx', 3, False, True): (399, 81, 6, 335), } @@ -256,22 +258,22 @@ class TestFieldOverrideSplitPerformance(FieldOverridePerformanceTestCase): __test__ = True TEST_DATA = { - ('no_overrides', 1, True, False): (23, 1, 4, 9), - ('no_overrides', 2, True, False): (53, 16, 19, 54), - ('no_overrides', 3, True, False): (183, 81, 84, 215), - ('ccx', 1, True, False): (23, 1, 4, 9), - ('ccx', 2, True, False): (53, 16, 19, 54), - ('ccx', 3, True, False): (183, 81, 84, 215), - ('ccx', 1, True, True): (25, 1, 4, 13), - ('ccx', 2, True, True): (55, 16, 19, 84), - ('ccx', 3, True, True): (185, 81, 84, 335), - ('no_overrides', 1, False, False): (23, 1, 4, 9), - ('no_overrides', 2, False, False): (53, 16, 19, 54), - ('no_overrides', 3, False, False): (183, 81, 84, 215), - ('ccx', 1, False, False): (23, 1, 4, 9), - ('ccx', 2, False, False): (53, 16, 19, 54), - ('ccx', 3, False, False): (183, 81, 84, 215), - ('ccx', 1, False, True): (23, 1, 4, 9), - ('ccx', 2, False, True): (53, 16, 19, 54), - ('ccx', 3, False, True): (183, 81, 84, 215), + ('no_overrides', 1, True, False): (47, 1, 4, 9), + ('no_overrides', 2, True, False): (119, 16, 19, 54), + ('no_overrides', 3, True, False): (399, 81, 84, 215), + ('ccx', 1, True, False): (47, 1, 4, 9), + ('ccx', 2, True, False): (119, 16, 19, 54), + ('ccx', 3, True, False): (399, 81, 84, 215), + ('ccx', 1, True, True): (49, 1, 4, 13), + ('ccx', 2, True, True): (121, 16, 19, 84), + ('ccx', 3, True, True): (401, 81, 84, 335), + ('no_overrides', 1, False, False): (47, 1, 4, 9), + ('no_overrides', 2, False, False): (119, 16, 19, 54), + ('no_overrides', 3, False, False): (399, 81, 84, 215), + ('ccx', 1, False, False): (47, 1, 4, 9), + ('ccx', 2, False, False): (119, 16, 19, 54), + ('ccx', 3, False, False): (399, 81, 84, 215), + ('ccx', 1, False, True): (47, 1, 4, 9), + ('ccx', 2, False, True): (119, 16, 19, 54), + ('ccx', 3, False, True): (399, 81, 84, 215), } diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index c67bb1fd16..b6581f2817 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -24,9 +24,9 @@ from django.dispatch import receiver, Signal from model_utils.models import TimeStampedModel from student.models import user_by_anonymous_id from submissions.models import score_set, score_reset +import coursewarehistoryextended from xmodule_django.models import CourseKeyField, LocationKeyField, BlockTypeKeyField -from courseware.fields import UnsignedBigIntAutoField log = logging.getLogger("edx.courseware") @@ -149,18 +149,15 @@ class StudentModule(models.Model): return unicode(repr(self)) -class StudentModuleHistory(models.Model): - """Keeps a complete history of state changes for a given XModule for a given - Student. Right now, we restrict this to problems so that the table doesn't - explode in size.""" +class BaseStudentModuleHistory(models.Model): + """Abstract class containing most fields used by any class + storing Student Module History""" objects = ChunkingManager() HISTORY_SAVING_TYPES = {'problem'} class Meta(object): - app_label = "courseware" - get_latest_by = "created" + abstract = True - student_module = models.ForeignKey(StudentModule, db_index=True) version = models.CharField(max_length=255, null=True, blank=True, db_index=True) # This should be populated from the modified field in StudentModule @@ -169,11 +166,59 @@ class StudentModuleHistory(models.Model): grade = models.FloatField(null=True, blank=True) max_grade = models.FloatField(null=True, blank=True) - @receiver(post_save, sender=StudentModule) + @property + def csm(self): + """ + Finds the StudentModule object for this history record, even if our data is split + across multiple data stores. Django does not handle this correctly with the built-in + student_module property. + """ + return StudentModule.objects.get(pk=self.student_module_id) + + @staticmethod + def get_history(student_modules): + """ + Find history objects across multiple backend stores for a given StudentModule + """ + + history_entries = [] + + if settings.FEATURES.get('ENABLE_CSMH_EXTENDED'): + history_entries += coursewarehistoryextended.models.StudentModuleHistoryExtended.objects.filter( + # Django will sometimes try to join to courseware_studentmodule + # so just do an in query + student_module__in=[module.id for module in student_modules] + ).order_by('-id') + + # If we turn off reading from multiple history tables, then we don't want to read from + # StudentModuleHistory anymore, we believe that all history is in the Extended table. + if settings.FEATURES.get('ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES'): + # we want to save later SQL queries on the model which allows us to prefetch + history_entries += StudentModuleHistory.objects.prefetch_related('student_module').filter( + student_module__in=student_modules + ).order_by('-id') + + return history_entries + + +class StudentModuleHistory(BaseStudentModuleHistory): + """Keeps a complete history of state changes for a given XModule for a given + Student. Right now, we restrict this to problems so that the table doesn't + explode in size.""" + + class Meta(object): + app_label = "courseware" + get_latest_by = "created" + + student_module = models.ForeignKey(StudentModule, db_index=True) + + def __unicode__(self): + return unicode(repr(self)) + def save_history(sender, instance, **kwargs): # pylint: disable=no-self-argument, unused-argument """ Checks the instance's module_type, and creates & saves a - StudentModuleHistory entry if the module_type is one that + StudentModuleHistoryExtended entry if the module_type is one that we save. """ if instance.module_type in StudentModuleHistory.HISTORY_SAVING_TYPES: @@ -185,52 +230,11 @@ class StudentModuleHistory(models.Model): max_grade=instance.max_grade) history_entry.save() - def __unicode__(self): - return unicode(repr(self)) - -class StudentModuleHistoryExtended(models.Model): - """Keeps a complete history of state changes for a given XModule for a given - Student. Right now, we restrict this to problems so that the table doesn't - explode in size. - - This new extended CSMH has a larger primary key that won't run out of space - so quickly.""" - objects = ChunkingManager() - HISTORY_SAVING_TYPES = {'problem'} - - class Meta(object): - app_label = "courseware" - get_latest_by = "created" - - id = UnsignedBigIntAutoField(primary_key=True) # pylint: disable=invalid-name - - student_module = models.ForeignKey(StudentModule, db_index=True, db_constraint=False) - version = models.CharField(max_length=255, null=True, blank=True, db_index=True) - - # This should be populated from the modified field in StudentModule - created = models.DateTimeField(db_index=True) - state = models.TextField(null=True, blank=True) - grade = models.FloatField(null=True, blank=True) - max_grade = models.FloatField(null=True, blank=True) - - @receiver(post_save, sender=StudentModule) - def save_history(sender, instance, **kwargs): # pylint: disable=no-self-argument, unused-argument - """ - Checks the instance's module_type, and creates & saves a - StudentModuleHistory entry if the module_type is one that - we save. - """ - if instance.module_type in StudentModuleHistoryExtended.HISTORY_SAVING_TYPES: - history_entry = StudentModuleHistoryExtended(student_module=instance, - version=None, - created=instance.modified, - state=instance.state, - grade=instance.grade, - max_grade=instance.max_grade) - history_entry.save() - - def __unicode__(self): - return unicode(repr(self)) + # When the extended studentmodulehistory table exists, don't save + # duplicate history into courseware_studentmodulehistory, just retain + # data for reading. + if not settings.FEATURES.get('ENABLE_CSMH_EXTENDED'): + post_save.connect(save_history, sender=StudentModule) class XBlockFieldBase(models.Model): diff --git a/lms/djangoapps/courseware/tests/test_access.py b/lms/djangoapps/courseware/tests/test_access.py index 67566fd3f1..add8c738ee 100644 --- a/lms/djangoapps/courseware/tests/test_access.py +++ b/lms/djangoapps/courseware/tests/test_access.py @@ -520,6 +520,7 @@ class UserRoleTestCase(TestCase): """ Tests for user roles. """ + def setUp(self): super(UserRoleTestCase, self).setUp() self.course_key = SlashSeparatedCourseKey('edX', 'toy', '2012_Fall') diff --git a/lms/djangoapps/courseware/tests/test_grades.py b/lms/djangoapps/courseware/tests/test_grades.py index 84ef2498f6..5fce957284 100644 --- a/lms/djangoapps/courseware/tests/test_grades.py +++ b/lms/djangoapps/courseware/tests/test_grades.py @@ -240,6 +240,9 @@ class TestProgressSummary(TestCase): (2/5) (3/5) (0/1) - (1/3) - (3/10) """ + # Tell Django to clean out all databases, not just default + multi_db = True + def setUp(self): super(TestProgressSummary, self).setUp() self.course_key = CourseLocator( diff --git a/lms/djangoapps/courseware/tests/test_i18n.py b/lms/djangoapps/courseware/tests/test_i18n.py index e5ae1b6f19..345dc21dda 100644 --- a/lms/djangoapps/courseware/tests/test_i18n.py +++ b/lms/djangoapps/courseware/tests/test_i18n.py @@ -20,6 +20,7 @@ class BaseI18nTestCase(TestCase): """ Base utilities for i18n test classes to derive from """ + def assert_tag_has_attr(self, content, tag, attname, value): """Assert that a tag in `content` has a certain value in a certain attribute.""" regex = r"""<{tag} [^>]*\b{attname}=['"]([\w\d\- ]+)['"][^>]*>""".format(tag=tag, attname=attname) diff --git a/lms/djangoapps/courseware/tests/test_model_data.py b/lms/djangoapps/courseware/tests/test_model_data.py index b80f05d2a1..9f62de0875 100644 --- a/lms/djangoapps/courseware/tests/test_model_data.py +++ b/lms/djangoapps/courseware/tests/test_model_data.py @@ -103,6 +103,8 @@ class TestStudentModuleStorage(OtherUserFailureTestMixin, TestCase): """Tests for user_state storage via StudentModule""" other_key_factory = partial(DjangoKeyValueStore.Key, Scope.user_state, 2, location('usage_id')) # user_id=2, not 1 existing_field_name = "a_field" + # Tell Django to clean out all databases, not just default + multi_db = True def setUp(self): super(TestStudentModuleStorage, self).setUp() @@ -137,8 +139,9 @@ class TestStudentModuleStorage(OtherUserFailureTestMixin, TestCase): # to discover if something other than the DjangoXBlockUserStateClient # has written to the StudentModule (such as UserStateCache setting the score # on the StudentModule). - with self.assertNumQueries(3): - self.kvs.set(user_state_key('a_field'), 'new_value') + with self.assertNumQueries(2, using='default'): + with self.assertNumQueries(1, using='student_module_history'): + self.kvs.set(user_state_key('a_field'), 'new_value') self.assertEquals(1, StudentModule.objects.all().count()) self.assertEquals({'b_field': 'b_value', 'a_field': 'new_value'}, json.loads(StudentModule.objects.all()[0].state)) @@ -149,8 +152,9 @@ class TestStudentModuleStorage(OtherUserFailureTestMixin, TestCase): # to discover if something other than the DjangoXBlockUserStateClient # has written to the StudentModule (such as UserStateCache setting the score # on the StudentModule). - with self.assertNumQueries(3): - self.kvs.set(user_state_key('not_a_field'), 'new_value') + with self.assertNumQueries(2, using='default'): + with self.assertNumQueries(1, using='student_module_history'): + self.kvs.set(user_state_key('not_a_field'), 'new_value') self.assertEquals(1, StudentModule.objects.all().count()) self.assertEquals({'b_field': 'b_value', 'a_field': 'a_value', 'not_a_field': 'new_value'}, json.loads(StudentModule.objects.all()[0].state)) @@ -161,8 +165,9 @@ class TestStudentModuleStorage(OtherUserFailureTestMixin, TestCase): # to discover if something other than the DjangoXBlockUserStateClient # has written to the StudentModule (such as UserStateCache setting the score # on the StudentModule). - with self.assertNumQueries(3): - self.kvs.delete(user_state_key('a_field')) + with self.assertNumQueries(2, using='default'): + with self.assertNumQueries(1, using='student_module_history'): + self.kvs.delete(user_state_key('a_field')) self.assertEquals(1, StudentModule.objects.all().count()) self.assertRaises(KeyError, self.kvs.get, user_state_key('not_a_field')) @@ -201,8 +206,9 @@ class TestStudentModuleStorage(OtherUserFailureTestMixin, TestCase): # We also need to read the database to discover if something other than the # DjangoXBlockUserStateClient has written to the StudentModule (such as # UserStateCache setting the score on the StudentModule). - with self.assertNumQueries(3): - self.kvs.set_many(kv_dict) + with self.assertNumQueries(2, using="default"): + with self.assertNumQueries(1, using="student_module_history"): + self.kvs.set_many(kv_dict) for key in kv_dict: self.assertEquals(self.kvs.get(key), kv_dict[key]) @@ -223,6 +229,9 @@ class TestStudentModuleStorage(OtherUserFailureTestMixin, TestCase): @attr('shard_1') class TestMissingStudentModule(TestCase): + # Tell Django to clean out all databases, not just default + multi_db = True + def setUp(self): super(TestMissingStudentModule, self).setUp() @@ -244,12 +253,13 @@ class TestMissingStudentModule(TestCase): self.assertEquals(0, len(self.field_data_cache)) self.assertEquals(0, StudentModule.objects.all().count()) - # We are updating a problem, so we write to courseware_studentmodulehistory + # We are updating a problem, so we write to courseware_studentmodulehistoryextended # as well as courseware_studentmodule. We also need to read the database # to discover if something other than the DjangoXBlockUserStateClient # has written to the StudentModule (such as UserStateCache setting the score # on the StudentModule). - with self.assertNumQueries(2, using='default'): + # Django 1.8 also has a number of other BEGIN and SAVESTATE queries. + with self.assertNumQueries(4, using='default'): with self.assertNumQueries(1, using='student_module_history'): self.kvs.set(user_state_key('a_field'), 'a_value') diff --git a/lms/djangoapps/courseware/tests/test_submitting_problems.py b/lms/djangoapps/courseware/tests/test_submitting_problems.py index 23a7ae2aa6..8a7761a322 100644 --- a/lms/djangoapps/courseware/tests/test_submitting_problems.py +++ b/lms/djangoapps/courseware/tests/test_submitting_problems.py @@ -19,7 +19,7 @@ from capa.tests.response_xml_factory import ( CodeResponseXMLFactory, ) from courseware import grades -from courseware.models import StudentModule, StudentModuleHistory +from courseware.models import StudentModule, BaseStudentModuleHistory from courseware.tests.helpers import LoginEnrollmentTestCase from lms.djangoapps.lms_xblock.runtime import quote_slashes from student.tests.factories import UserFactory @@ -121,6 +121,8 @@ class TestSubmittingProblems(ModuleStoreTestCase, LoginEnrollmentTestCase, Probl Check that a course gets graded properly. """ + # Tell Django to clean out all databases, not just default + multi_db = True # arbitrary constant COURSE_SLUG = "100" COURSE_NAME = "test_course" @@ -319,6 +321,9 @@ class TestCourseGrader(TestSubmittingProblems): """ Suite of tests for the course grader. """ + # Tell Django to clean out all databases, not just default + multi_db = True + def basic_setup(self, late=False, reset=False, showanswer=False): """ Set up a simple course for testing basic grading functionality. @@ -451,26 +456,20 @@ class TestCourseGrader(TestSubmittingProblems): self.submit_question_answer('p1', {'2_1': u'Correct'}) # Now fetch the state entry for that problem. - student_module = StudentModule.objects.get( + student_module = StudentModule.objects.filter( course_id=self.course.id, student=self.student_user ) # count how many state history entries there are - baseline = StudentModuleHistory.objects.filter( - student_module=student_module - ) - baseline_count = baseline.count() - self.assertEqual(baseline_count, 3) + baseline = BaseStudentModuleHistory.get_history(student_module) + self.assertEqual(len(baseline), 3) # now click "show answer" self.show_question_answer('p1') # check that we don't have more state history entries - csmh = StudentModuleHistory.objects.filter( - student_module=student_module - ) - current_count = csmh.count() - self.assertEqual(current_count, 3) + csmh = BaseStudentModuleHistory.get_history(student_module) + self.assertEqual(len(csmh), 3) def test_grade_with_max_score_cache(self): """ @@ -713,6 +712,8 @@ class TestCourseGrader(TestSubmittingProblems): @attr('shard_1') class ProblemWithUploadedFilesTest(TestSubmittingProblems): """Tests of problems with uploaded files.""" + # Tell Django to clean out all databases, not just default + multi_db = True def setUp(self): super(ProblemWithUploadedFilesTest, self).setUp() @@ -768,6 +769,8 @@ class TestPythonGradedResponse(TestSubmittingProblems): """ Check that we can submit a schematic and custom response, and it answers properly. """ + # Tell Django to clean out all databases, not just default + multi_db = True SCHEMATIC_SCRIPT = dedent(""" # for a schematic response, submission[i] is the json representation diff --git a/lms/djangoapps/courseware/tests/test_user_state_client.py b/lms/djangoapps/courseware/tests/test_user_state_client.py index 5bb9a0682b..143bd7f644 100644 --- a/lms/djangoapps/courseware/tests/test_user_state_client.py +++ b/lms/djangoapps/courseware/tests/test_user_state_client.py @@ -18,6 +18,8 @@ class TestDjangoUserStateClient(UserStateClientTestBase, TestCase): Tests of the DjangoUserStateClient backend. """ __test__ = True + # Tell Django to clean out all databases, not just default + multi_db = True def _user(self, user_idx): return self.users[user_idx].username diff --git a/lms/djangoapps/courseware/user_state_client.py b/lms/djangoapps/courseware/user_state_client.py index e90eeb8f47..b965a15ebe 100644 --- a/lms/djangoapps/courseware/user_state_client.py +++ b/lms/djangoapps/courseware/user_state_client.py @@ -15,7 +15,7 @@ except ImportError: import dogstats_wrapper as dog_stats_api from django.contrib.auth.models import User from xblock.fields import Scope, ScopeBase -from courseware.models import StudentModule, StudentModuleHistory +from courseware.models import StudentModule, BaseStudentModuleHistory from edx_user_state_client.interface import XBlockUserStateClient, XBlockUserState @@ -312,9 +312,7 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient): if len(student_modules) == 0: raise self.DoesNotExist() - history_entries = StudentModuleHistory.objects.prefetch_related('student_module').filter( - student_module__in=student_modules - ).order_by('-id') + history_entries = BaseStudentModuleHistory.get_history(student_modules) # If no history records exist, raise an error if not history_entries: @@ -332,9 +330,9 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient): if state == {}: state = None - block_key = history_entry.student_module.module_state_key + block_key = history_entry.csm.module_state_key block_key = block_key.map_into_course( - history_entry.student_module.course_id + history_entry.csm.course_id ) yield XBlockUserState(username, block_key, state, history_entry.created, scope) diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index 73a43345c1..7d4cde32ab 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -59,7 +59,7 @@ from courseware.courses import ( ) from courseware.masquerade import setup_masquerade from courseware.model_data import FieldDataCache, ScoresClient -from courseware.models import StudentModuleHistory +from courseware.models import StudentModule, BaseStudentModuleHistory from courseware.url_helpers import get_redirect_url from courseware.user_state_client import DjangoXBlockUserStateClient from edxmako.shortcuts import render_to_response, render_to_string, marketing_link @@ -1173,11 +1173,12 @@ def submission_history(request, course_id, student_username, location): # This is ugly, but until we have a proper submissions API that we can use to provide # the scores instead, it will have to do. - scores = list(StudentModuleHistory.objects.filter( - student_module__module_state_key=usage_key, - student_module__student__username=student_username, - student_module__course_id=course_key - ).order_by('-id')) + csm = StudentModule.objects.filter( + module_state_key=usage_key, + student__username=student_username, + course_id=course_key) + + scores = BaseStudentModuleHistory.get_history(csm) if len(scores) != len(history_entries): log.warning( diff --git a/lms/djangoapps/coursewarehistoryextended/__init__.py b/lms/djangoapps/coursewarehistoryextended/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lms/djangoapps/courseware/fields.py b/lms/djangoapps/coursewarehistoryextended/fields.py similarity index 71% rename from lms/djangoapps/courseware/fields.py rename to lms/djangoapps/coursewarehistoryextended/fields.py index 6e34c4e635..a001543d31 100644 --- a/lms/djangoapps/courseware/fields.py +++ b/lms/djangoapps/coursewarehistoryextended/fields.py @@ -1,5 +1,5 @@ """ -Custom fields for use in the courseware django app. +Custom fields for use in the coursewarehistoryextended django app. """ from django.db.models.fields import AutoField @@ -17,5 +17,9 @@ class UnsignedBigIntAutoField(AutoField): # is an alias for that (https://www.sqlite.org/autoinc.html). An unsigned integer # isn't an alias for ROWID, so we have to give up on the unsigned part. return "integer" + elif connection.settings_dict['ENGINE'] == 'django.db.backends.postgresql_psycopg2': + # Pg's bigserial is implicitly unsigned (doesn't allow negative numbers) and + # goes 1-9.2x10^18 + return "BIGSERIAL" else: return None diff --git a/lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py b/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py similarity index 67% rename from lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py rename to lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py index 8ee63b6f3b..370327f9f2 100644 --- a/lms/djangoapps/courseware/migrations/0002_csmh-extended-keyspace.py +++ b/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py @@ -2,18 +2,21 @@ from __future__ import unicode_literals from django.db import migrations, models -import courseware.fields from django.conf import settings - +import django.db.models.deletion +import coursewarehistoryextended.fields def bump_pk_start(apps, schema_editor): if not schema_editor.connection.alias == 'student_module_history': return StudentModuleHistory = apps.get_model("courseware", "StudentModuleHistory") - initial_id = settings.STUDENTMODULEHISTORYEXTENDED_OFFSET + StudentModuleHistory.objects.all().latest('id').id + biggest_id = StudentModuleHistory.objects.all().order_by('-id').first() + initial_id = settings.STUDENTMODULEHISTORYEXTENDED_OFFSET + if biggest_id is not None: + initial_id += biggest_id.id if schema_editor.connection.vendor == 'mysql': - schema_editor.execute('ALTER TABLE courseware_studentmodulehistoryextended AUTO_INCREMENT=%s', [initial_id]) + schema_editor.execute('ALTER TABLE coursewarehistoryextended_studentmodulehistoryextended AUTO_INCREMENT=%s', [initial_id]) elif schema_editor.connection.vendor == 'sqlite3': # This is a hack to force sqlite to add new rows after the earlier rows we # want to migrate. @@ -25,7 +28,8 @@ def bump_pk_start(apps, schema_editor): version="", created=datetime.datetime.now(), ).save() - + elif schema_editor.connection.vendor == 'postgresql': + schema_editor.execute("SELECT setval('coursewarehistoryextended_studentmodulehistoryextended_seq', %s)", [initial_id]) class Migration(migrations.Migration): @@ -37,13 +41,13 @@ class Migration(migrations.Migration): migrations.CreateModel( name='StudentModuleHistoryExtended', fields=[ - ('id', courseware.fields.UnsignedBigIntAutoField(serialize=False, primary_key=True)), ('version', models.CharField(db_index=True, max_length=255, null=True, blank=True)), ('created', models.DateTimeField(db_index=True)), ('state', models.TextField(null=True, blank=True)), ('grade', models.FloatField(null=True, blank=True)), ('max_grade', models.FloatField(null=True, blank=True)), - ('student_module', models.ForeignKey(to='courseware.StudentModule', db_constraint=False)), + ('id', coursewarehistoryextended.fields.UnsignedBigIntAutoField(serialize=False, primary_key=True)), + ('student_module', models.ForeignKey(to='courseware.StudentModule', on_delete=django.db.models.deletion.DO_NOTHING, db_constraint=False)), ], options={ 'get_latest_by': 'created', diff --git a/lms/djangoapps/coursewarehistoryextended/migrations/__init__.py b/lms/djangoapps/coursewarehistoryextended/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lms/djangoapps/coursewarehistoryextended/models.py b/lms/djangoapps/coursewarehistoryextended/models.py new file mode 100644 index 0000000000..8c3630b0e3 --- /dev/null +++ b/lms/djangoapps/coursewarehistoryextended/models.py @@ -0,0 +1,64 @@ +""" +WE'RE USING MIGRATIONS! + +If you make changes to this model, be sure to create an appropriate migration +file and check it in at the same time as your model changes. To do that, + +1. Go to the edx-platform dir +2. ./manage.py schemamigration courseware --auto description_of_your_change +3. Add the migration file created in edx-platform/lms/djangoapps/coursewarehistoryextended/migrations/ + + +ASSUMPTIONS: modules have unique IDs, even across different module_types + +""" +from django.db import models +from django.db.models.signals import post_save, post_delete +from django.dispatch import receiver + +from coursewarehistoryextended.fields import UnsignedBigIntAutoField +from courseware.models import StudentModule, BaseStudentModuleHistory + + +class StudentModuleHistoryExtended(BaseStudentModuleHistory): + """Keeps a complete history of state changes for a given XModule for a given + Student. Right now, we restrict this to problems so that the table doesn't + explode in size. + + This new extended CSMH has a larger primary key that won't run out of space + so quickly.""" + + class Meta(object): + app_label = 'coursewarehistoryextended' + get_latest_by = "created" + + id = UnsignedBigIntAutoField(primary_key=True) # pylint: disable=invalid-name + + student_module = models.ForeignKey(StudentModule, db_index=True, db_constraint=False, on_delete=models.DO_NOTHING) + + @receiver(post_save, sender=StudentModule) + def save_history(sender, instance, **kwargs): # pylint: disable=no-self-argument, unused-argument + """ + Checks the instance's module_type, and creates & saves a + StudentModuleHistoryExtended entry if the module_type is one that + we save. + """ + if instance.module_type in StudentModuleHistoryExtended.HISTORY_SAVING_TYPES: + history_entry = StudentModuleHistoryExtended(student_module=instance, + version=None, + created=instance.modified, + state=instance.state, + grade=instance.grade, + max_grade=instance.max_grade) + history_entry.save() + + @receiver(post_delete, sender=StudentModule) + def delete_history(sender, instance, **kwargs): # pylint: disable=no-self-argument, unused-argument + """ + Django can't cascade delete across databases, so we tell it at the model level to + on_delete=DO_NOTHING and then listen for post_delete so we can clean up the CSMHE rows. + """ + StudentModuleHistoryExtended.objects.filter(student_module=instance).all().delete() + + def __unicode__(self): + return unicode(repr(self)) diff --git a/lms/djangoapps/coursewarehistoryextended/tests.py b/lms/djangoapps/coursewarehistoryextended/tests.py new file mode 100644 index 0000000000..759fdfe4be --- /dev/null +++ b/lms/djangoapps/coursewarehistoryextended/tests.py @@ -0,0 +1,81 @@ +""" +Tests for coursewarehistoryextended +Many aspects of this app are covered by the courseware tests, +but these are specific to the new storage model with multiple +backend tables. +""" + +import json +from mock import patch +from django.test import TestCase +from django.conf import settings +from unittest import skipUnless +from nose.plugins.attrib import attr + +from courseware.models import BaseStudentModuleHistory, StudentModuleHistory, StudentModule + +from courseware.tests.factories import StudentModuleFactory, location, course_id + + +@attr('shard_1') +@skipUnless(settings.FEATURES["ENABLE_CSMH_EXTENDED"], "CSMH Extended needs to be enabled") +class TestStudentModuleHistoryBackends(TestCase): + """ Tests of data in CSMH and CSMHE """ + # Tell Django to clean out all databases, not just default + multi_db = True + + def setUp(self): + super(TestStudentModuleHistoryBackends, self).setUp() + for record in (1, 2, 3): + # This will store into CSMHE via the post_save signal + csm = StudentModuleFactory.create(module_state_key=location('usage_id'), + course_id=course_id, + state=json.dumps({'type': 'csmhe', 'order': record})) + # This manually gets us a CSMH record to compare + csmh = StudentModuleHistory(student_module=csm, + version=None, + created=csm.modified, + state=json.dumps({'type': 'csmh', 'order': record}), + grade=csm.grade, + max_grade=csm.max_grade) + csmh.save() + + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_CSMH_EXTENDED": True}) + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES": True}) + def test_get_history_true_true(self): + student_module = StudentModule.objects.all() + history = BaseStudentModuleHistory.get_history(student_module) + self.assertEquals(len(history), 6) + self.assertEquals({'type': 'csmhe', 'order': 3}, json.loads(history[0].state)) + self.assertEquals({'type': 'csmhe', 'order': 2}, json.loads(history[1].state)) + self.assertEquals({'type': 'csmhe', 'order': 1}, json.loads(history[2].state)) + self.assertEquals({'type': 'csmh', 'order': 3}, json.loads(history[3].state)) + self.assertEquals({'type': 'csmh', 'order': 2}, json.loads(history[4].state)) + self.assertEquals({'type': 'csmh', 'order': 1}, json.loads(history[5].state)) + + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_CSMH_EXTENDED": True}) + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES": False}) + def test_get_history_true_false(self): + student_module = StudentModule.objects.all() + history = BaseStudentModuleHistory.get_history(student_module) + self.assertEquals(len(history), 3) + self.assertEquals({'type': 'csmhe', 'order': 3}, json.loads(history[0].state)) + self.assertEquals({'type': 'csmhe', 'order': 2}, json.loads(history[1].state)) + self.assertEquals({'type': 'csmhe', 'order': 1}, json.loads(history[2].state)) + + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_CSMH_EXTENDED": False}) + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES": True}) + def test_get_history_false_true(self): + student_module = StudentModule.objects.all() + history = BaseStudentModuleHistory.get_history(student_module) + self.assertEquals(len(history), 3) + self.assertEquals({'type': 'csmh', 'order': 3}, json.loads(history[0].state)) + self.assertEquals({'type': 'csmh', 'order': 2}, json.loads(history[1].state)) + self.assertEquals({'type': 'csmh', 'order': 1}, json.loads(history[2].state)) + + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_CSMH_EXTENDED": False}) + @patch.dict("django.conf.settings.FEATURES", {"ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES": False}) + def test_get_history_false_false(self): + student_module = StudentModule.objects.all() + history = BaseStudentModuleHistory.get_history(student_module) + self.assertEquals(len(history), 0) diff --git a/lms/envs/acceptance.py b/lms/envs/acceptance.py index 41c64afe56..101e7bb7ec 100644 --- a/lms/envs/acceptance.py +++ b/lms/envs/acceptance.py @@ -153,7 +153,9 @@ LETTUCE_APPS = ('courseware', 'instructor') # This causes some pretty cryptic errors as lettuce tries # to parse files in `instructor_task` as features. # As a quick workaround, explicitly exclude the `instructor_task` app. -LETTUCE_AVOID_APPS = ('instructor_task',) +# The coursewarehistoryextended app also falls prey to this fuzzy +# for the courseware app. +LETTUCE_AVOID_APPS = ('instructor_task', 'coursewarehistoryextended') LETTUCE_BROWSER = os.environ.get('LETTUCE_BROWSER', 'chrome') diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 6f593d139c..d5935394af 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -771,3 +771,7 @@ if ENV_TOKENS.get('AUDIT_CERT_CUTOFF_DATE', None): ################################ Settings for Credentials Service ################################ CREDENTIALS_GENERATION_ROUTING_KEY = HIGH_PRIORITY_QUEUE + +# The extended StudentModule history table +if FEATURES.get('ENABLE_CSMH_EXTENDED'): + INSTALLED_APPS += ('coursewarehistoryextended',) diff --git a/lms/envs/bok_choy.py b/lms/envs/bok_choy.py index 1990473417..cb74f9a87f 100644 --- a/lms/envs/bok_choy.py +++ b/lms/envs/bok_choy.py @@ -178,6 +178,11 @@ PROFILE_IMAGE_BACKEND = { 'base_url': os.path.join(MEDIA_URL, 'profile-images/'), }, } + +# Make sure we test with the extended history table +FEATURES['ENABLE_CSMH_EXTENDED'] = True +INSTALLED_APPS += ('coursewarehistoryextended',) + ##################################################################### # Lastly, see if the developer has any local overrides. try: diff --git a/lms/envs/common.py b/lms/envs/common.py index fa7cbe68fc..c73eaae451 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -363,6 +363,18 @@ FEATURES = { # Show Language selector. 'SHOW_LANGUAGE_SELECTOR': False, + + # Write new CSM history to the extended table. + # This will eventually default to True and may be + # removed since all installs should have the separate + # extended history table. + 'ENABLE_CSMH_EXTENDED': False, + + # Read from both the CSMH and CSMHE history tables. + # This is the default, but can be disabled if all history + # lives in the Extended table, saving the frontend from + # making multiple queries. + 'ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES': True } # Ignore static asset files on import which match this pattern @@ -416,7 +428,7 @@ STATUS_MESSAGE_PATH = ENV_ROOT / "status_message.json" ############################ Global Database Configuration ##################### DATABASE_ROUTERS = [ - 'courseware.routers.StudentModuleHistoryRouter', + 'openedx.core.lib.django_courseware_routers.StudentModuleHistoryExtendedRouter', ] ############################ OpenID Provider ################################## @@ -2766,7 +2778,10 @@ MOBILE_APP_USER_AGENT_REGEXES = [ ] # Offset for courseware.StudentModuleHistoryExtended which is used to -# calculate the starting primary key for the underlying table. +# calculate the starting primary key for the underlying table. This gap +# should be large enough that you do not generate more than N courseware.StudentModuleHistory +# records before you have deployed the app to write to coursewarehistoryextended.StudentModuleHistoryExtended +# if you want to avoid an overlap in ids while searching for history across the two tables. STUDENTMODULEHISTORYEXTENDED_OFFSET = 10000 # Deprecated xblock types diff --git a/lms/envs/test.py b/lms/envs/test.py index 111de79ca9..83f55c337c 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -197,6 +197,10 @@ if os.environ.get('DISABLE_MIGRATIONS'): # to Django 1.9, which allows setting MIGRATION_MODULES to None in order to skip migrations. MIGRATION_MODULES = NoOpMigrationModules() +# Make sure we test with the extended history table +FEATURES['ENABLE_CSMH_EXTENDED'] = True +INSTALLED_APPS += ('coursewarehistoryextended',) + CACHES = { # This is the cache used for most things. # In staging/prod envs, the sessions also live here. diff --git a/lms/djangoapps/courseware/routers.py b/openedx/core/lib/django_courseware_routers.py similarity index 58% rename from lms/djangoapps/courseware/routers.py rename to openedx/core/lib/django_courseware_routers.py index 1514c10259..4665efe47f 100644 --- a/lms/djangoapps/courseware/routers.py +++ b/openedx/core/lib/django_courseware_routers.py @@ -1,27 +1,27 @@ """ -Database Routers for use with the courseware django app. +Database Routers for use with the coursewarehistoryextended django app. """ -class StudentModuleHistoryRouter(object): +class StudentModuleHistoryExtendedRouter(object): """ - A Database Router that separates StudentModuleHistory into its own database. + A Database Router that separates StudentModuleHistoryExtended into its own database. """ DATABASE_NAME = 'student_module_history' def _is_csmh(self, model): """ - Return True if ``model`` is courseware.StudentModuleHistory. + Return True if ``model`` is courseware.StudentModuleHistoryExtended. """ return ( - model._meta.app_label == 'courseware' and # pylint: disable=protected-access - model.__name__ == 'StudentModuleHistory' + model._meta.app_label == 'coursewarehistoryextended' and # pylint: disable=protected-access + model.__name__ == 'StudentModuleHistoryExtended' ) def db_for_read(self, model, **hints): # pylint: disable=unused-argument """ - Use the StudentModuleHistoryRouter.DATABASE_NAME if the model is StudentModuleHistory. + Use the StudentModuleHistoryExtendedRouter.DATABASE_NAME if the model is StudentModuleHistoryExtended. """ if self._is_csmh(model): return self.DATABASE_NAME @@ -30,7 +30,7 @@ class StudentModuleHistoryRouter(object): def db_for_write(self, model, **hints): # pylint: disable=unused-argument """ - Use the StudentModuleHistoryRouter.DATABASE_NAME if the model is StudentModuleHistory. + Use the StudentModuleHistoryExtendedRouter.DATABASE_NAME if the model is StudentModuleHistoryExtended. """ if self._is_csmh(model): return self.DATABASE_NAME @@ -39,7 +39,7 @@ class StudentModuleHistoryRouter(object): def allow_relation(self, obj1, obj2, **hints): # pylint: disable=unused-argument """ - Disable relations if the model is StudentModuleHistory. + Disable relations if the model is StudentModuleHistoryExtended. """ if self._is_csmh(obj1) or self._is_csmh(obj2): return False @@ -47,7 +47,7 @@ class StudentModuleHistoryRouter(object): def allow_migrate(self, db, model): # pylint: disable=unused-argument """ - Only sync StudentModuleHistory to StudentModuleHistoryRouter.DATABASE_Name + Only sync StudentModuleHistoryExtended to StudentModuleHistoryExtendedRouter.DATABASE_Name """ if self._is_csmh(model): return db == self.DATABASE_NAME From b4ac588ce159ba2b421abc15164c6e5b28f4849b Mon Sep 17 00:00:00 2001 From: Kevin Falcone Date: Thu, 11 Feb 2016 16:58:51 -0500 Subject: [PATCH 3/3] Update reset-test-db.sh for bok-choy This now correctly migrates and dumps files for both databases. Run lettuce migrations for both databases --- cms/envs/bok_choy.auth.json | 8 + .../test/db_cache/bok_choy_data_default.json | 2 +- .../bok_choy_data_student_module_history.json | 2 +- .../db_cache/bok_choy_migrations_data.sql | 37 --- .../bok_choy_migrations_data_default.sql | 37 +++ ...migrations_data_student_module_history.sql | 37 +++ .../test/db_cache/bok_choy_schema_default.sql | 286 +++++++++++------- ...bok_choy_schema_student_module_history.sql | 27 ++ common/test/db_cache/lettuce.db | Bin 1392640 -> 1410048 bytes .../lettuce_student_module_history.db | Bin 0 -> 17408 bytes .../migrations/0001_initial.py | 4 +- pavelib/utils/test/suites/acceptance_suite.py | 36 ++- scripts/reset-test-db.sh | 69 ++--- 13 files changed, 338 insertions(+), 207 deletions(-) delete mode 100644 common/test/db_cache/bok_choy_migrations_data.sql create mode 100644 common/test/db_cache/bok_choy_migrations_data_default.sql create mode 100644 common/test/db_cache/bok_choy_migrations_data_student_module_history.sql create mode 100644 common/test/db_cache/lettuce_student_module_history.db diff --git a/cms/envs/bok_choy.auth.json b/cms/envs/bok_choy.auth.json index 79dbf904c1..44eac070f6 100644 --- a/cms/envs/bok_choy.auth.json +++ b/cms/envs/bok_choy.auth.json @@ -30,6 +30,14 @@ "PASSWORD": "", "PORT": "3306", "USER": "root" + }, + "student_module_history": { + "ENGINE": "django.db.backends.mysql", + "HOST": "localhost", + "NAME": "student_module_history_test", + "PASSWORD": "", + "PORT": "3306", + "USER": "root" } }, "DOC_STORE_CONFIG": { diff --git a/common/test/db_cache/bok_choy_data_default.json b/common/test/db_cache/bok_choy_data_default.json index 0663d2134f..aebe847da7 100644 --- a/common/test/db_cache/bok_choy_data_default.json +++ b/common/test/db_cache/bok_choy_data_default.json @@ -1 +1 @@ -[{"fields": {"model": "permission", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 1}, {"fields": {"model": "group", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 2}, {"fields": {"model": "user", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 3}, {"fields": {"model": "contenttype", "app_label": "contenttypes"}, "model": "contenttypes.contenttype", "pk": 4}, {"fields": {"model": "session", "app_label": "sessions"}, "model": "contenttypes.contenttype", "pk": 5}, {"fields": {"model": "site", "app_label": "sites"}, "model": "contenttypes.contenttype", "pk": 6}, {"fields": {"model": "taskmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 7}, {"fields": {"model": "tasksetmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 8}, {"fields": {"model": "intervalschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 9}, {"fields": {"model": "crontabschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 10}, {"fields": {"model": "periodictasks", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 11}, {"fields": {"model": "periodictask", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 12}, {"fields": {"model": "workerstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 13}, {"fields": {"model": "taskstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 14}, {"fields": {"model": "globalstatusmessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 15}, {"fields": {"model": "coursemessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 16}, {"fields": {"model": "assetbaseurlconfig", "app_label": "static_replace"}, "model": "contenttypes.contenttype", "pk": 17}, {"fields": {"model": "studentmodule", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 18}, {"fields": {"model": "studentmodulehistory", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 19}, {"fields": {"model": "xmoduleuserstatesummaryfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 20}, {"fields": {"model": "xmodulestudentprefsfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 21}, {"fields": {"model": "xmodulestudentinfofield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 22}, {"fields": {"model": "offlinecomputedgrade", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 23}, {"fields": {"model": "offlinecomputedgradelog", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 24}, {"fields": {"model": "studentfieldoverride", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 25}, {"fields": {"model": "anonymoususerid", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 26}, {"fields": {"model": "userstanding", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 27}, {"fields": {"model": "userprofile", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 28}, {"fields": {"model": "usersignupsource", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 29}, {"fields": {"model": "usertestgroup", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 30}, {"fields": {"model": "registration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 31}, {"fields": {"model": "pendingnamechange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 32}, {"fields": {"model": "pendingemailchange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 33}, {"fields": {"model": "passwordhistory", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 34}, {"fields": {"model": "loginfailures", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 35}, {"fields": {"model": "historicalcourseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 36}, {"fields": {"model": "courseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 37}, {"fields": {"model": "manualenrollmentaudit", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 38}, {"fields": {"model": "courseenrollmentallowed", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 39}, {"fields": {"model": "courseaccessrole", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 40}, {"fields": {"model": "dashboardconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 41}, {"fields": {"model": "linkedinaddtoprofileconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 42}, {"fields": {"model": "entranceexamconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 43}, {"fields": {"model": "languageproficiency", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 44}, {"fields": {"model": "courseenrollmentattribute", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 45}, {"fields": {"model": "enrollmentrefundconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 46}, {"fields": {"model": "trackinglog", "app_label": "track"}, "model": "contenttypes.contenttype", "pk": 47}, {"fields": {"model": "ratelimitconfiguration", "app_label": "util"}, "model": "contenttypes.contenttype", "pk": 48}, {"fields": {"model": "certificatewhitelist", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 49}, {"fields": {"model": "generatedcertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 50}, {"fields": {"model": "certificategenerationhistory", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 51}, {"fields": {"model": "certificateinvalidation", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 52}, {"fields": {"model": "examplecertificateset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 53}, {"fields": {"model": "examplecertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 54}, {"fields": {"model": "certificategenerationcoursesetting", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 55}, {"fields": {"model": "certificategenerationconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 56}, {"fields": {"model": "certificatehtmlviewconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 57}, {"fields": {"model": "badgeassertion", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 58}, {"fields": {"model": "badgeimageconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 59}, {"fields": {"model": "certificatetemplate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 60}, {"fields": {"model": "certificatetemplateasset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 61}, {"fields": {"model": "instructortask", "app_label": "instructor_task"}, "model": "contenttypes.contenttype", "pk": 62}, {"fields": {"model": "courseusergroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 63}, {"fields": {"model": "cohortmembership", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 64}, {"fields": {"model": "courseusergrouppartitiongroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 65}, {"fields": {"model": "coursecohortssettings", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 66}, {"fields": {"model": "coursecohort", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 67}, {"fields": {"model": "courseemail", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 68}, {"fields": {"model": "optout", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 69}, {"fields": {"model": "courseemailtemplate", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 70}, {"fields": {"model": "courseauthorization", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 71}, {"fields": {"model": "brandinginfoconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 72}, {"fields": {"model": "brandingapiconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 73}, {"fields": {"model": "externalauthmap", "app_label": "external_auth"}, "model": "contenttypes.contenttype", "pk": 74}, {"fields": {"model": "nonce", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 75}, {"fields": {"model": "association", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 76}, {"fields": {"model": "useropenid", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 77}, {"fields": {"model": "client", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 78}, {"fields": {"model": "grant", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 79}, {"fields": {"model": "accesstoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 80}, {"fields": {"model": "refreshtoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 81}, {"fields": {"model": "trustedclient", "app_label": "oauth2_provider"}, "model": "contenttypes.contenttype", "pk": 82}, {"fields": {"model": "oauth2providerconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 83}, {"fields": {"model": "samlproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 84}, {"fields": {"model": "samlconfiguration", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 85}, {"fields": {"model": "samlproviderdata", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 86}, {"fields": {"model": "ltiproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 87}, {"fields": {"model": "providerapipermissions", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 88}, {"fields": {"model": "nonce", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 89}, {"fields": {"model": "scope", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 90}, {"fields": {"model": "consumer", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 91}, {"fields": {"model": "token", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 92}, {"fields": {"model": "resource", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 93}, {"fields": {"model": "article", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 94}, {"fields": {"model": "articleforobject", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 95}, {"fields": {"model": "articlerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 96}, {"fields": {"model": "urlpath", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 97}, {"fields": {"model": "articleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 98}, {"fields": {"model": "reusableplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 99}, {"fields": {"model": "simpleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 100}, {"fields": {"model": "revisionplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 101}, {"fields": {"model": "revisionpluginrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 102}, {"fields": {"model": "image", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 103}, {"fields": {"model": "imagerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 104}, {"fields": {"model": "attachment", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 105}, {"fields": {"model": "attachmentrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 106}, {"fields": {"model": "notificationtype", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 107}, {"fields": {"model": "settings", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 108}, {"fields": {"model": "subscription", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 109}, {"fields": {"model": "notification", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 110}, {"fields": {"model": "logentry", "app_label": "admin"}, "model": "contenttypes.contenttype", "pk": 111}, {"fields": {"model": "role", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 112}, {"fields": {"model": "permission", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 113}, {"fields": {"model": "note", "app_label": "notes"}, "model": "contenttypes.contenttype", "pk": 114}, {"fields": {"model": "splashconfig", "app_label": "splash"}, "model": "contenttypes.contenttype", "pk": 115}, {"fields": {"model": "userpreference", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 116}, {"fields": {"model": "usercoursetag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 117}, {"fields": {"model": "userorgtag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 118}, {"fields": {"model": "order", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 119}, {"fields": {"model": "orderitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 120}, {"fields": {"model": "invoice", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 121}, {"fields": {"model": "invoicetransaction", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 122}, {"fields": {"model": "invoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 123}, {"fields": {"model": "courseregistrationcodeinvoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 124}, {"fields": {"model": "invoicehistory", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 125}, {"fields": {"model": "courseregistrationcode", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 126}, {"fields": {"model": "registrationcoderedemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 127}, {"fields": {"model": "coupon", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 128}, {"fields": {"model": "couponredemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 129}, {"fields": {"model": "paidcourseregistration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 130}, {"fields": {"model": "courseregcodeitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 131}, {"fields": {"model": "courseregcodeitemannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 132}, {"fields": {"model": "paidcourseregistrationannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 133}, {"fields": {"model": "certificateitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 134}, {"fields": {"model": "donationconfiguration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 135}, {"fields": {"model": "donation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 136}, {"fields": {"model": "coursemode", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 137}, {"fields": {"model": "coursemodesarchive", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 138}, {"fields": {"model": "coursemodeexpirationconfig", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 139}, {"fields": {"model": "softwaresecurephotoverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 140}, {"fields": {"model": "historicalverificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 141}, {"fields": {"model": "verificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 142}, {"fields": {"model": "verificationcheckpoint", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 143}, {"fields": {"model": "verificationstatus", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 144}, {"fields": {"model": "incoursereverificationconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 145}, {"fields": {"model": "icrvstatusemailsconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 146}, {"fields": {"model": "skippedreverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 147}, {"fields": {"model": "darklangconfig", "app_label": "dark_lang"}, "model": "contenttypes.contenttype", "pk": 148}, {"fields": {"model": "microsite", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 149}, {"fields": {"model": "micrositehistory", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 150}, {"fields": {"model": "historicalmicrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 151}, {"fields": {"model": "micrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 152}, {"fields": {"model": "historicalmicrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 153}, {"fields": {"model": "micrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 154}, {"fields": {"model": "whitelistedrssurl", "app_label": "rss_proxy"}, "model": "contenttypes.contenttype", "pk": 155}, {"fields": {"model": "embargoedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 156}, {"fields": {"model": "embargoedstate", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 157}, {"fields": {"model": "restrictedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 158}, {"fields": {"model": "country", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 159}, {"fields": {"model": "countryaccessrule", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 160}, {"fields": {"model": "courseaccessrulehistory", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 161}, {"fields": {"model": "ipfilter", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 162}, {"fields": {"model": "coursererunstate", "app_label": "course_action_state"}, "model": "contenttypes.contenttype", "pk": 163}, {"fields": {"model": "mobileapiconfig", "app_label": "mobile_api"}, "model": "contenttypes.contenttype", "pk": 164}, {"fields": {"model": "usersocialauth", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 165}, {"fields": {"model": "nonce", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 166}, {"fields": {"model": "association", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 167}, {"fields": {"model": "code", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 168}, {"fields": {"model": "surveyform", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 169}, {"fields": {"model": "surveyanswer", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 170}, {"fields": {"model": "xblockasidesconfig", "app_label": "lms_xblock"}, "model": "contenttypes.contenttype", "pk": 171}, {"fields": {"model": "courseoverview", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 172}, {"fields": {"model": "courseoverviewtab", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 173}, {"fields": {"model": "courseoverviewimageset", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 174}, {"fields": {"model": "courseoverviewimageconfig", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 175}, {"fields": {"model": "coursestructure", "app_label": "course_structures"}, "model": "contenttypes.contenttype", "pk": 176}, {"fields": {"model": "corsmodel", "app_label": "corsheaders"}, "model": "contenttypes.contenttype", "pk": 177}, {"fields": {"model": "xdomainproxyconfiguration", "app_label": "cors_csrf"}, "model": "contenttypes.contenttype", "pk": 178}, {"fields": {"model": "creditprovider", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 179}, {"fields": {"model": "creditcourse", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 180}, {"fields": {"model": "creditrequirement", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 181}, {"fields": {"model": "historicalcreditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 182}, {"fields": {"model": "creditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 183}, {"fields": {"model": "crediteligibility", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 184}, {"fields": {"model": "historicalcreditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 185}, {"fields": {"model": "creditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 186}, {"fields": {"model": "courseteam", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 187}, {"fields": {"model": "courseteammembership", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 188}, {"fields": {"model": "xblockdisableconfig", "app_label": "xblock_django"}, "model": "contenttypes.contenttype", "pk": 189}, {"fields": {"model": "bookmark", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 190}, {"fields": {"model": "xblockcache", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 191}, {"fields": {"model": "programsapiconfig", "app_label": "programs"}, "model": "contenttypes.contenttype", "pk": 192}, {"fields": {"model": "selfpacedconfiguration", "app_label": "self_paced"}, "model": "contenttypes.contenttype", "pk": 193}, {"fields": {"model": "kvstore", "app_label": "thumbnail"}, "model": "contenttypes.contenttype", "pk": 194}, {"fields": {"model": "studentitem", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 195}, {"fields": {"model": "submission", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 196}, {"fields": {"model": "score", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 197}, {"fields": {"model": "scoresummary", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 198}, {"fields": {"model": "scoreannotation", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 199}, {"fields": {"model": "rubric", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 200}, {"fields": {"model": "criterion", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 201}, {"fields": {"model": "criterionoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 202}, {"fields": {"model": "assessment", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 203}, {"fields": {"model": "assessmentpart", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 204}, {"fields": {"model": "assessmentfeedbackoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 205}, {"fields": {"model": "assessmentfeedback", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 206}, {"fields": {"model": "peerworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 207}, {"fields": {"model": "peerworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 208}, {"fields": {"model": "trainingexample", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 209}, {"fields": {"model": "studenttrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 210}, {"fields": {"model": "studenttrainingworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 211}, {"fields": {"model": "aiclassifierset", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 212}, {"fields": {"model": "aiclassifier", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 213}, {"fields": {"model": "aitrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 214}, {"fields": {"model": "aigradingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 215}, {"fields": {"model": "staffworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 216}, {"fields": {"model": "assessmentworkflow", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 217}, {"fields": {"model": "assessmentworkflowstep", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 218}, {"fields": {"model": "assessmentworkflowcancellation", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 219}, {"fields": {"model": "profile", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 220}, {"fields": {"model": "video", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 221}, {"fields": {"model": "coursevideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 222}, {"fields": {"model": "encodedvideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 223}, {"fields": {"model": "subtitle", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 224}, {"fields": {"model": "milestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 225}, {"fields": {"model": "milestonerelationshiptype", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 226}, {"fields": {"model": "coursemilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 227}, {"fields": {"model": "coursecontentmilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 228}, {"fields": {"model": "usermilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 229}, {"fields": {"model": "proctoredexam", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 230}, {"fields": {"model": "proctoredexamreviewpolicy", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 231}, {"fields": {"model": "proctoredexamreviewpolicyhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 232}, {"fields": {"model": "proctoredexamstudentattempt", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 233}, {"fields": {"model": "proctoredexamstudentattempthistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 234}, {"fields": {"model": "proctoredexamstudentallowance", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 235}, {"fields": {"model": "proctoredexamstudentallowancehistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 236}, {"fields": {"model": "proctoredexamsoftwaresecurereview", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 237}, {"fields": {"model": "proctoredexamsoftwaresecurereviewhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 238}, {"fields": {"model": "proctoredexamsoftwaresecurecomment", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 239}, {"fields": {"model": "organization", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 240}, {"fields": {"model": "organizationcourse", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 241}, {"fields": {"model": "videouploadconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 242}, {"fields": {"model": "pushnotificationconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 243}, {"fields": {"model": "coursecreator", "app_label": "course_creators"}, "model": "contenttypes.contenttype", "pk": 244}, {"fields": {"model": "studioconfig", "app_label": "xblock_config"}, "model": "contenttypes.contenttype", "pk": 245}, {"fields": {"domain": "example.com", "name": "example.com"}, "model": "sites.site", "pk": 1}, {"fields": {"default": false, "mode": "honor", "icon": "badges/honor.png"}, "model": "certificates.badgeimageconfiguration", "pk": 1}, {"fields": {"default": false, "mode": "verified", "icon": "badges/verified.png"}, "model": "certificates.badgeimageconfiguration", "pk": 2}, {"fields": {"default": false, "mode": "professional", "icon": "badges/professional.png"}, "model": "certificates.badgeimageconfiguration", "pk": 3}, {"fields": {"plain_template": "{course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": null}, "model": "bulk_email.courseemailtemplate", "pk": 1}, {"fields": {"plain_template": "THIS IS A BRANDED TEXT TEMPLATE. {course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " THIS IS A BRANDED HTML TEMPLATE Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": "branded.template"}, "model": "bulk_email.courseemailtemplate", "pk": 2}, {"fields": {"country": "AF"}, "model": "embargo.country", "pk": 1}, {"fields": {"country": "AX"}, "model": "embargo.country", "pk": 2}, {"fields": {"country": "AL"}, "model": "embargo.country", "pk": 3}, {"fields": {"country": "DZ"}, "model": "embargo.country", "pk": 4}, {"fields": {"country": "AS"}, "model": "embargo.country", "pk": 5}, {"fields": {"country": "AD"}, "model": "embargo.country", "pk": 6}, {"fields": {"country": "AO"}, "model": "embargo.country", "pk": 7}, {"fields": {"country": "AI"}, "model": "embargo.country", "pk": 8}, {"fields": {"country": "AQ"}, "model": "embargo.country", "pk": 9}, {"fields": {"country": "AG"}, "model": "embargo.country", "pk": 10}, {"fields": {"country": "AR"}, "model": "embargo.country", "pk": 11}, {"fields": {"country": "AM"}, "model": "embargo.country", "pk": 12}, {"fields": {"country": "AW"}, "model": "embargo.country", "pk": 13}, {"fields": {"country": "AU"}, "model": "embargo.country", "pk": 14}, {"fields": {"country": "AT"}, "model": "embargo.country", "pk": 15}, {"fields": {"country": "AZ"}, "model": "embargo.country", "pk": 16}, {"fields": {"country": "BS"}, "model": "embargo.country", "pk": 17}, {"fields": {"country": "BH"}, "model": "embargo.country", "pk": 18}, {"fields": {"country": "BD"}, "model": "embargo.country", "pk": 19}, {"fields": {"country": "BB"}, "model": "embargo.country", "pk": 20}, {"fields": {"country": "BY"}, "model": "embargo.country", "pk": 21}, {"fields": {"country": "BE"}, "model": "embargo.country", "pk": 22}, {"fields": {"country": "BZ"}, "model": "embargo.country", "pk": 23}, {"fields": {"country": "BJ"}, "model": "embargo.country", "pk": 24}, {"fields": {"country": "BM"}, "model": "embargo.country", "pk": 25}, {"fields": {"country": "BT"}, "model": "embargo.country", "pk": 26}, {"fields": {"country": "BO"}, "model": "embargo.country", "pk": 27}, {"fields": {"country": "BQ"}, "model": "embargo.country", "pk": 28}, {"fields": {"country": "BA"}, "model": "embargo.country", "pk": 29}, {"fields": {"country": "BW"}, "model": "embargo.country", "pk": 30}, {"fields": {"country": "BV"}, "model": "embargo.country", "pk": 31}, {"fields": {"country": "BR"}, "model": "embargo.country", "pk": 32}, {"fields": {"country": "IO"}, "model": "embargo.country", "pk": 33}, {"fields": {"country": "BN"}, "model": "embargo.country", "pk": 34}, {"fields": {"country": "BG"}, "model": "embargo.country", "pk": 35}, {"fields": {"country": "BF"}, "model": "embargo.country", "pk": 36}, {"fields": {"country": "BI"}, "model": "embargo.country", "pk": 37}, {"fields": {"country": "CV"}, "model": "embargo.country", "pk": 38}, {"fields": {"country": "KH"}, "model": "embargo.country", "pk": 39}, {"fields": {"country": "CM"}, "model": "embargo.country", "pk": 40}, {"fields": {"country": "CA"}, "model": "embargo.country", "pk": 41}, {"fields": {"country": "KY"}, "model": "embargo.country", "pk": 42}, {"fields": {"country": "CF"}, "model": "embargo.country", "pk": 43}, {"fields": {"country": "TD"}, "model": "embargo.country", "pk": 44}, {"fields": {"country": "CL"}, "model": "embargo.country", "pk": 45}, {"fields": {"country": "CN"}, "model": "embargo.country", "pk": 46}, {"fields": {"country": "CX"}, "model": "embargo.country", "pk": 47}, {"fields": {"country": "CC"}, "model": "embargo.country", "pk": 48}, {"fields": {"country": "CO"}, "model": "embargo.country", "pk": 49}, {"fields": {"country": "KM"}, "model": "embargo.country", "pk": 50}, {"fields": {"country": "CG"}, "model": "embargo.country", "pk": 51}, {"fields": {"country": "CD"}, "model": "embargo.country", "pk": 52}, {"fields": {"country": "CK"}, "model": "embargo.country", "pk": 53}, {"fields": {"country": "CR"}, "model": "embargo.country", "pk": 54}, {"fields": {"country": "CI"}, "model": "embargo.country", "pk": 55}, {"fields": {"country": "HR"}, "model": "embargo.country", "pk": 56}, {"fields": {"country": "CU"}, "model": "embargo.country", "pk": 57}, {"fields": {"country": "CW"}, "model": "embargo.country", "pk": 58}, {"fields": {"country": "CY"}, "model": "embargo.country", "pk": 59}, {"fields": {"country": "CZ"}, "model": "embargo.country", "pk": 60}, {"fields": {"country": "DK"}, "model": "embargo.country", "pk": 61}, {"fields": {"country": "DJ"}, "model": "embargo.country", "pk": 62}, {"fields": {"country": "DM"}, "model": "embargo.country", "pk": 63}, {"fields": {"country": "DO"}, "model": "embargo.country", "pk": 64}, {"fields": {"country": "EC"}, "model": "embargo.country", "pk": 65}, {"fields": {"country": "EG"}, "model": "embargo.country", "pk": 66}, {"fields": {"country": "SV"}, "model": "embargo.country", "pk": 67}, {"fields": {"country": "GQ"}, "model": "embargo.country", "pk": 68}, {"fields": {"country": "ER"}, "model": "embargo.country", "pk": 69}, {"fields": {"country": "EE"}, "model": "embargo.country", "pk": 70}, {"fields": {"country": "ET"}, "model": "embargo.country", "pk": 71}, {"fields": {"country": "FK"}, "model": "embargo.country", "pk": 72}, {"fields": {"country": "FO"}, "model": "embargo.country", "pk": 73}, {"fields": {"country": "FJ"}, "model": "embargo.country", "pk": 74}, {"fields": {"country": "FI"}, "model": "embargo.country", "pk": 75}, {"fields": {"country": "FR"}, "model": "embargo.country", "pk": 76}, {"fields": {"country": "GF"}, "model": "embargo.country", "pk": 77}, {"fields": {"country": "PF"}, "model": "embargo.country", "pk": 78}, {"fields": {"country": "TF"}, "model": "embargo.country", "pk": 79}, {"fields": {"country": "GA"}, "model": "embargo.country", "pk": 80}, {"fields": {"country": "GM"}, "model": "embargo.country", "pk": 81}, {"fields": {"country": "GE"}, "model": "embargo.country", "pk": 82}, {"fields": {"country": "DE"}, "model": "embargo.country", "pk": 83}, {"fields": {"country": "GH"}, "model": "embargo.country", "pk": 84}, {"fields": {"country": "GI"}, "model": "embargo.country", "pk": 85}, {"fields": {"country": "GR"}, "model": "embargo.country", "pk": 86}, {"fields": {"country": "GL"}, "model": "embargo.country", "pk": 87}, {"fields": {"country": "GD"}, "model": "embargo.country", "pk": 88}, {"fields": {"country": "GP"}, "model": "embargo.country", "pk": 89}, {"fields": {"country": "GU"}, "model": "embargo.country", "pk": 90}, {"fields": {"country": "GT"}, "model": "embargo.country", "pk": 91}, {"fields": {"country": "GG"}, "model": "embargo.country", "pk": 92}, {"fields": {"country": "GN"}, "model": "embargo.country", "pk": 93}, {"fields": {"country": "GW"}, "model": "embargo.country", "pk": 94}, {"fields": {"country": "GY"}, "model": "embargo.country", "pk": 95}, {"fields": {"country": "HT"}, "model": "embargo.country", "pk": 96}, {"fields": {"country": "HM"}, "model": "embargo.country", "pk": 97}, {"fields": {"country": "VA"}, "model": "embargo.country", "pk": 98}, {"fields": {"country": "HN"}, "model": "embargo.country", "pk": 99}, {"fields": {"country": "HK"}, "model": "embargo.country", "pk": 100}, {"fields": {"country": "HU"}, "model": "embargo.country", "pk": 101}, {"fields": {"country": "IS"}, "model": "embargo.country", "pk": 102}, {"fields": {"country": "IN"}, "model": "embargo.country", "pk": 103}, {"fields": {"country": "ID"}, "model": "embargo.country", "pk": 104}, {"fields": {"country": "IR"}, "model": "embargo.country", "pk": 105}, {"fields": {"country": "IQ"}, "model": "embargo.country", "pk": 106}, {"fields": {"country": "IE"}, "model": "embargo.country", "pk": 107}, {"fields": {"country": "IM"}, "model": "embargo.country", "pk": 108}, {"fields": {"country": "IL"}, "model": "embargo.country", "pk": 109}, {"fields": {"country": "IT"}, "model": "embargo.country", "pk": 110}, {"fields": {"country": "JM"}, "model": "embargo.country", "pk": 111}, {"fields": {"country": "JP"}, "model": "embargo.country", "pk": 112}, {"fields": {"country": "JE"}, "model": "embargo.country", "pk": 113}, {"fields": {"country": "JO"}, "model": "embargo.country", "pk": 114}, {"fields": {"country": "KZ"}, "model": "embargo.country", "pk": 115}, {"fields": {"country": "KE"}, "model": "embargo.country", "pk": 116}, {"fields": {"country": "KI"}, "model": "embargo.country", "pk": 117}, {"fields": {"country": "KW"}, "model": "embargo.country", "pk": 118}, {"fields": {"country": "KG"}, "model": "embargo.country", "pk": 119}, {"fields": {"country": "LA"}, "model": "embargo.country", "pk": 120}, {"fields": {"country": "LV"}, "model": "embargo.country", "pk": 121}, {"fields": {"country": "LB"}, "model": "embargo.country", "pk": 122}, {"fields": {"country": "LS"}, "model": "embargo.country", "pk": 123}, {"fields": {"country": "LR"}, "model": "embargo.country", "pk": 124}, {"fields": {"country": "LY"}, "model": "embargo.country", "pk": 125}, {"fields": {"country": "LI"}, "model": "embargo.country", "pk": 126}, {"fields": {"country": "LT"}, "model": "embargo.country", "pk": 127}, {"fields": {"country": "LU"}, "model": "embargo.country", "pk": 128}, {"fields": {"country": "MO"}, "model": "embargo.country", "pk": 129}, {"fields": {"country": "MK"}, "model": "embargo.country", "pk": 130}, {"fields": {"country": "MG"}, "model": "embargo.country", "pk": 131}, {"fields": {"country": "MW"}, "model": "embargo.country", "pk": 132}, {"fields": {"country": "MY"}, "model": "embargo.country", "pk": 133}, {"fields": {"country": "MV"}, "model": "embargo.country", "pk": 134}, {"fields": {"country": "ML"}, "model": "embargo.country", "pk": 135}, {"fields": {"country": "MT"}, "model": "embargo.country", "pk": 136}, {"fields": {"country": "MH"}, "model": "embargo.country", "pk": 137}, {"fields": {"country": "MQ"}, "model": "embargo.country", "pk": 138}, {"fields": {"country": "MR"}, "model": "embargo.country", "pk": 139}, {"fields": {"country": "MU"}, "model": "embargo.country", "pk": 140}, {"fields": {"country": "YT"}, "model": "embargo.country", "pk": 141}, {"fields": {"country": "MX"}, "model": "embargo.country", "pk": 142}, {"fields": {"country": "FM"}, "model": "embargo.country", "pk": 143}, {"fields": {"country": "MD"}, "model": "embargo.country", "pk": 144}, {"fields": {"country": "MC"}, "model": "embargo.country", "pk": 145}, {"fields": {"country": "MN"}, "model": "embargo.country", "pk": 146}, {"fields": {"country": "ME"}, "model": "embargo.country", "pk": 147}, {"fields": {"country": "MS"}, "model": "embargo.country", "pk": 148}, {"fields": {"country": "MA"}, "model": "embargo.country", "pk": 149}, {"fields": {"country": "MZ"}, "model": "embargo.country", "pk": 150}, {"fields": {"country": "MM"}, "model": "embargo.country", "pk": 151}, {"fields": {"country": "NA"}, "model": "embargo.country", "pk": 152}, {"fields": {"country": "NR"}, "model": "embargo.country", "pk": 153}, {"fields": {"country": "NP"}, "model": "embargo.country", "pk": 154}, {"fields": {"country": "NL"}, "model": "embargo.country", "pk": 155}, {"fields": {"country": "NC"}, "model": "embargo.country", "pk": 156}, {"fields": {"country": "NZ"}, "model": "embargo.country", "pk": 157}, {"fields": {"country": "NI"}, "model": "embargo.country", "pk": 158}, {"fields": {"country": "NE"}, "model": "embargo.country", "pk": 159}, {"fields": {"country": "NG"}, "model": "embargo.country", "pk": 160}, {"fields": {"country": "NU"}, "model": "embargo.country", "pk": 161}, {"fields": {"country": "NF"}, "model": "embargo.country", "pk": 162}, {"fields": {"country": "KP"}, "model": "embargo.country", "pk": 163}, {"fields": {"country": "MP"}, "model": "embargo.country", "pk": 164}, {"fields": {"country": "NO"}, "model": "embargo.country", "pk": 165}, {"fields": {"country": "OM"}, "model": "embargo.country", "pk": 166}, {"fields": {"country": "PK"}, "model": "embargo.country", "pk": 167}, {"fields": {"country": "PW"}, "model": "embargo.country", "pk": 168}, {"fields": {"country": "PS"}, "model": "embargo.country", "pk": 169}, {"fields": {"country": "PA"}, "model": "embargo.country", "pk": 170}, {"fields": {"country": "PG"}, "model": "embargo.country", "pk": 171}, {"fields": {"country": "PY"}, "model": "embargo.country", "pk": 172}, {"fields": {"country": "PE"}, "model": "embargo.country", "pk": 173}, {"fields": {"country": "PH"}, "model": "embargo.country", "pk": 174}, {"fields": {"country": "PN"}, "model": "embargo.country", "pk": 175}, {"fields": {"country": "PL"}, "model": "embargo.country", "pk": 176}, {"fields": {"country": "PT"}, "model": "embargo.country", "pk": 177}, {"fields": {"country": "PR"}, "model": "embargo.country", "pk": 178}, {"fields": {"country": "QA"}, "model": "embargo.country", "pk": 179}, {"fields": {"country": "RE"}, "model": "embargo.country", "pk": 180}, {"fields": {"country": "RO"}, "model": "embargo.country", "pk": 181}, {"fields": {"country": "RU"}, "model": "embargo.country", "pk": 182}, {"fields": {"country": "RW"}, "model": "embargo.country", "pk": 183}, {"fields": {"country": "BL"}, "model": "embargo.country", "pk": 184}, {"fields": {"country": "SH"}, "model": "embargo.country", "pk": 185}, {"fields": {"country": "KN"}, "model": "embargo.country", "pk": 186}, {"fields": {"country": "LC"}, "model": "embargo.country", "pk": 187}, {"fields": {"country": "MF"}, "model": "embargo.country", "pk": 188}, {"fields": {"country": "PM"}, "model": "embargo.country", "pk": 189}, {"fields": {"country": "VC"}, "model": "embargo.country", "pk": 190}, {"fields": {"country": "WS"}, "model": "embargo.country", "pk": 191}, {"fields": {"country": "SM"}, "model": "embargo.country", "pk": 192}, {"fields": {"country": "ST"}, "model": "embargo.country", "pk": 193}, {"fields": {"country": "SA"}, "model": "embargo.country", "pk": 194}, {"fields": {"country": "SN"}, "model": "embargo.country", "pk": 195}, {"fields": {"country": "RS"}, "model": "embargo.country", "pk": 196}, {"fields": {"country": "SC"}, "model": "embargo.country", "pk": 197}, {"fields": {"country": "SL"}, "model": "embargo.country", "pk": 198}, {"fields": {"country": "SG"}, "model": "embargo.country", "pk": 199}, {"fields": {"country": "SX"}, "model": "embargo.country", "pk": 200}, {"fields": {"country": "SK"}, "model": "embargo.country", "pk": 201}, {"fields": {"country": "SI"}, "model": "embargo.country", "pk": 202}, {"fields": {"country": "SB"}, "model": "embargo.country", "pk": 203}, {"fields": {"country": "SO"}, "model": "embargo.country", "pk": 204}, {"fields": {"country": "ZA"}, "model": "embargo.country", "pk": 205}, {"fields": {"country": "GS"}, "model": "embargo.country", "pk": 206}, {"fields": {"country": "KR"}, "model": "embargo.country", "pk": 207}, {"fields": {"country": "SS"}, "model": "embargo.country", "pk": 208}, {"fields": {"country": "ES"}, "model": "embargo.country", "pk": 209}, {"fields": {"country": "LK"}, "model": "embargo.country", "pk": 210}, {"fields": {"country": "SD"}, "model": "embargo.country", "pk": 211}, {"fields": {"country": "SR"}, "model": "embargo.country", "pk": 212}, {"fields": {"country": "SJ"}, "model": "embargo.country", "pk": 213}, {"fields": {"country": "SZ"}, "model": "embargo.country", "pk": 214}, {"fields": {"country": "SE"}, "model": "embargo.country", "pk": 215}, {"fields": {"country": "CH"}, "model": "embargo.country", "pk": 216}, {"fields": {"country": "SY"}, "model": "embargo.country", "pk": 217}, {"fields": {"country": "TW"}, "model": "embargo.country", "pk": 218}, {"fields": {"country": "TJ"}, "model": "embargo.country", "pk": 219}, {"fields": {"country": "TZ"}, "model": "embargo.country", "pk": 220}, {"fields": {"country": "TH"}, "model": "embargo.country", "pk": 221}, {"fields": {"country": "TL"}, "model": "embargo.country", "pk": 222}, {"fields": {"country": "TG"}, "model": "embargo.country", "pk": 223}, {"fields": {"country": "TK"}, "model": "embargo.country", "pk": 224}, {"fields": {"country": "TO"}, "model": "embargo.country", "pk": 225}, {"fields": {"country": "TT"}, "model": "embargo.country", "pk": 226}, {"fields": {"country": "TN"}, "model": "embargo.country", "pk": 227}, {"fields": {"country": "TR"}, "model": "embargo.country", "pk": 228}, {"fields": {"country": "TM"}, "model": "embargo.country", "pk": 229}, {"fields": {"country": "TC"}, "model": "embargo.country", "pk": 230}, {"fields": {"country": "TV"}, "model": "embargo.country", "pk": 231}, {"fields": {"country": "UG"}, "model": "embargo.country", "pk": 232}, {"fields": {"country": "UA"}, "model": "embargo.country", "pk": 233}, {"fields": {"country": "AE"}, "model": "embargo.country", "pk": 234}, {"fields": {"country": "GB"}, "model": "embargo.country", "pk": 235}, {"fields": {"country": "UM"}, "model": "embargo.country", "pk": 236}, {"fields": {"country": "US"}, "model": "embargo.country", "pk": 237}, {"fields": {"country": "UY"}, "model": "embargo.country", "pk": 238}, {"fields": {"country": "UZ"}, "model": "embargo.country", "pk": 239}, {"fields": {"country": "VU"}, "model": "embargo.country", "pk": 240}, {"fields": {"country": "VE"}, "model": "embargo.country", "pk": 241}, {"fields": {"country": "VN"}, "model": "embargo.country", "pk": 242}, {"fields": {"country": "VG"}, "model": "embargo.country", "pk": 243}, {"fields": {"country": "VI"}, "model": "embargo.country", "pk": 244}, {"fields": {"country": "WF"}, "model": "embargo.country", "pk": 245}, {"fields": {"country": "EH"}, "model": "embargo.country", "pk": 246}, {"fields": {"country": "YE"}, "model": "embargo.country", "pk": 247}, {"fields": {"country": "ZM"}, "model": "embargo.country", "pk": 248}, {"fields": {"country": "ZW"}, "model": "embargo.country", "pk": 249}, {"fields": {"profile_name": "desktop_mp4"}, "model": "edxval.profile", "pk": 1}, {"fields": {"profile_name": "desktop_webm"}, "model": "edxval.profile", "pk": 2}, {"fields": {"profile_name": "mobile_high"}, "model": "edxval.profile", "pk": 3}, {"fields": {"profile_name": "mobile_low"}, "model": "edxval.profile", "pk": 4}, {"fields": {"profile_name": "youtube"}, "model": "edxval.profile", "pk": 5}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"fulfills\"", "modified": "2016-01-21T18:53:35.745Z", "name": "fulfills", "created": "2016-01-21T18:53:35.744Z"}, "model": "milestones.milestonerelationshiptype", "pk": 1}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"requires\"", "modified": "2016-01-21T18:53:35.747Z", "name": "requires", "created": "2016-01-21T18:53:35.747Z"}, "model": "milestones.milestonerelationshiptype", "pk": 2}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 1}, "model": "auth.permission", "pk": 1}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 1}, "model": "auth.permission", "pk": 2}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 1}, "model": "auth.permission", "pk": 3}, {"fields": {"codename": "add_group", "name": "Can add group", "content_type": 2}, "model": "auth.permission", "pk": 4}, {"fields": {"codename": "change_group", "name": "Can change group", "content_type": 2}, "model": "auth.permission", "pk": 5}, {"fields": {"codename": "delete_group", "name": "Can delete group", "content_type": 2}, "model": "auth.permission", "pk": 6}, {"fields": {"codename": "add_user", "name": "Can add user", "content_type": 3}, "model": "auth.permission", "pk": 7}, {"fields": {"codename": "change_user", "name": "Can change user", "content_type": 3}, "model": "auth.permission", "pk": 8}, {"fields": {"codename": "delete_user", "name": "Can delete user", "content_type": 3}, "model": "auth.permission", "pk": 9}, {"fields": {"codename": "add_contenttype", "name": "Can add content type", "content_type": 4}, "model": "auth.permission", "pk": 10}, {"fields": {"codename": "change_contenttype", "name": "Can change content type", "content_type": 4}, "model": "auth.permission", "pk": 11}, {"fields": {"codename": "delete_contenttype", "name": "Can delete content type", "content_type": 4}, "model": "auth.permission", "pk": 12}, {"fields": {"codename": "add_session", "name": "Can add session", "content_type": 5}, "model": "auth.permission", "pk": 13}, {"fields": {"codename": "change_session", "name": "Can change session", "content_type": 5}, "model": "auth.permission", "pk": 14}, {"fields": {"codename": "delete_session", "name": "Can delete session", "content_type": 5}, "model": "auth.permission", "pk": 15}, {"fields": {"codename": "add_site", "name": "Can add site", "content_type": 6}, "model": "auth.permission", "pk": 16}, {"fields": {"codename": "change_site", "name": "Can change site", "content_type": 6}, "model": "auth.permission", "pk": 17}, {"fields": {"codename": "delete_site", "name": "Can delete site", "content_type": 6}, "model": "auth.permission", "pk": 18}, {"fields": {"codename": "add_taskmeta", "name": "Can add task state", "content_type": 7}, "model": "auth.permission", "pk": 19}, {"fields": {"codename": "change_taskmeta", "name": "Can change task state", "content_type": 7}, "model": "auth.permission", "pk": 20}, {"fields": {"codename": "delete_taskmeta", "name": "Can delete task state", "content_type": 7}, "model": "auth.permission", "pk": 21}, {"fields": {"codename": "add_tasksetmeta", "name": "Can add saved group result", "content_type": 8}, "model": "auth.permission", "pk": 22}, {"fields": {"codename": "change_tasksetmeta", "name": "Can change saved group result", "content_type": 8}, "model": "auth.permission", "pk": 23}, {"fields": {"codename": "delete_tasksetmeta", "name": "Can delete saved group result", "content_type": 8}, "model": "auth.permission", "pk": 24}, {"fields": {"codename": "add_intervalschedule", "name": "Can add interval", "content_type": 9}, "model": "auth.permission", "pk": 25}, {"fields": {"codename": "change_intervalschedule", "name": "Can change interval", "content_type": 9}, "model": "auth.permission", "pk": 26}, {"fields": {"codename": "delete_intervalschedule", "name": "Can delete interval", "content_type": 9}, "model": "auth.permission", "pk": 27}, {"fields": {"codename": "add_crontabschedule", "name": "Can add crontab", "content_type": 10}, "model": "auth.permission", "pk": 28}, {"fields": {"codename": "change_crontabschedule", "name": "Can change crontab", "content_type": 10}, "model": "auth.permission", "pk": 29}, {"fields": {"codename": "delete_crontabschedule", "name": "Can delete crontab", "content_type": 10}, "model": "auth.permission", "pk": 30}, {"fields": {"codename": "add_periodictasks", "name": "Can add periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 31}, {"fields": {"codename": "change_periodictasks", "name": "Can change periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 32}, {"fields": {"codename": "delete_periodictasks", "name": "Can delete periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 33}, {"fields": {"codename": "add_periodictask", "name": "Can add periodic task", "content_type": 12}, "model": "auth.permission", "pk": 34}, {"fields": {"codename": "change_periodictask", "name": "Can change periodic task", "content_type": 12}, "model": "auth.permission", "pk": 35}, {"fields": {"codename": "delete_periodictask", "name": "Can delete periodic task", "content_type": 12}, "model": "auth.permission", "pk": 36}, {"fields": {"codename": "add_workerstate", "name": "Can add worker", "content_type": 13}, "model": "auth.permission", "pk": 37}, {"fields": {"codename": "change_workerstate", "name": "Can change worker", "content_type": 13}, "model": "auth.permission", "pk": 38}, {"fields": {"codename": "delete_workerstate", "name": "Can delete worker", "content_type": 13}, "model": "auth.permission", "pk": 39}, {"fields": {"codename": "add_taskstate", "name": "Can add task", "content_type": 14}, "model": "auth.permission", "pk": 40}, {"fields": {"codename": "change_taskstate", "name": "Can change task", "content_type": 14}, "model": "auth.permission", "pk": 41}, {"fields": {"codename": "delete_taskstate", "name": "Can delete task", "content_type": 14}, "model": "auth.permission", "pk": 42}, {"fields": {"codename": "add_globalstatusmessage", "name": "Can add global status message", "content_type": 15}, "model": "auth.permission", "pk": 43}, {"fields": {"codename": "change_globalstatusmessage", "name": "Can change global status message", "content_type": 15}, "model": "auth.permission", "pk": 44}, {"fields": {"codename": "delete_globalstatusmessage", "name": "Can delete global status message", "content_type": 15}, "model": "auth.permission", "pk": 45}, {"fields": {"codename": "add_coursemessage", "name": "Can add course message", "content_type": 16}, "model": "auth.permission", "pk": 46}, {"fields": {"codename": "change_coursemessage", "name": "Can change course message", "content_type": 16}, "model": "auth.permission", "pk": 47}, {"fields": {"codename": "delete_coursemessage", "name": "Can delete course message", "content_type": 16}, "model": "auth.permission", "pk": 48}, {"fields": {"codename": "add_assetbaseurlconfig", "name": "Can add asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 49}, {"fields": {"codename": "change_assetbaseurlconfig", "name": "Can change asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 50}, {"fields": {"codename": "delete_assetbaseurlconfig", "name": "Can delete asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 51}, {"fields": {"codename": "add_studentmodule", "name": "Can add student module", "content_type": 18}, "model": "auth.permission", "pk": 52}, {"fields": {"codename": "change_studentmodule", "name": "Can change student module", "content_type": 18}, "model": "auth.permission", "pk": 53}, {"fields": {"codename": "delete_studentmodule", "name": "Can delete student module", "content_type": 18}, "model": "auth.permission", "pk": 54}, {"fields": {"codename": "add_studentmodulehistory", "name": "Can add student module history", "content_type": 19}, "model": "auth.permission", "pk": 55}, {"fields": {"codename": "change_studentmodulehistory", "name": "Can change student module history", "content_type": 19}, "model": "auth.permission", "pk": 56}, {"fields": {"codename": "delete_studentmodulehistory", "name": "Can delete student module history", "content_type": 19}, "model": "auth.permission", "pk": 57}, {"fields": {"codename": "add_xmoduleuserstatesummaryfield", "name": "Can add x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 58}, {"fields": {"codename": "change_xmoduleuserstatesummaryfield", "name": "Can change x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 59}, {"fields": {"codename": "delete_xmoduleuserstatesummaryfield", "name": "Can delete x module user state summary field", "content_type": 20}, "model": "auth.permission", "pk": 60}, {"fields": {"codename": "add_xmodulestudentprefsfield", "name": "Can add x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 61}, {"fields": {"codename": "change_xmodulestudentprefsfield", "name": "Can change x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 62}, {"fields": {"codename": "delete_xmodulestudentprefsfield", "name": "Can delete x module student prefs field", "content_type": 21}, "model": "auth.permission", "pk": 63}, {"fields": {"codename": "add_xmodulestudentinfofield", "name": "Can add x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 64}, {"fields": {"codename": "change_xmodulestudentinfofield", "name": "Can change x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 65}, {"fields": {"codename": "delete_xmodulestudentinfofield", "name": "Can delete x module student info field", "content_type": 22}, "model": "auth.permission", "pk": 66}, {"fields": {"codename": "add_offlinecomputedgrade", "name": "Can add offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 67}, {"fields": {"codename": "change_offlinecomputedgrade", "name": "Can change offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 68}, {"fields": {"codename": "delete_offlinecomputedgrade", "name": "Can delete offline computed grade", "content_type": 23}, "model": "auth.permission", "pk": 69}, {"fields": {"codename": "add_offlinecomputedgradelog", "name": "Can add offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 70}, {"fields": {"codename": "change_offlinecomputedgradelog", "name": "Can change offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 71}, {"fields": {"codename": "delete_offlinecomputedgradelog", "name": "Can delete offline computed grade log", "content_type": 24}, "model": "auth.permission", "pk": 72}, {"fields": {"codename": "add_studentfieldoverride", "name": "Can add student field override", "content_type": 25}, "model": "auth.permission", "pk": 73}, {"fields": {"codename": "change_studentfieldoverride", "name": "Can change student field override", "content_type": 25}, "model": "auth.permission", "pk": 74}, {"fields": {"codename": "delete_studentfieldoverride", "name": "Can delete student field override", "content_type": 25}, "model": "auth.permission", "pk": 75}, {"fields": {"codename": "add_anonymoususerid", "name": "Can add anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 76}, {"fields": {"codename": "change_anonymoususerid", "name": "Can change anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 77}, {"fields": {"codename": "delete_anonymoususerid", "name": "Can delete anonymous user id", "content_type": 26}, "model": "auth.permission", "pk": 78}, {"fields": {"codename": "add_userstanding", "name": "Can add user standing", "content_type": 27}, "model": "auth.permission", "pk": 79}, {"fields": {"codename": "change_userstanding", "name": "Can change user standing", "content_type": 27}, "model": "auth.permission", "pk": 80}, {"fields": {"codename": "delete_userstanding", "name": "Can delete user standing", "content_type": 27}, "model": "auth.permission", "pk": 81}, {"fields": {"codename": "add_userprofile", "name": "Can add user profile", "content_type": 28}, "model": "auth.permission", "pk": 82}, {"fields": {"codename": "change_userprofile", "name": "Can change user profile", "content_type": 28}, "model": "auth.permission", "pk": 83}, {"fields": {"codename": "delete_userprofile", "name": "Can delete user profile", "content_type": 28}, "model": "auth.permission", "pk": 84}, {"fields": {"codename": "add_usersignupsource", "name": "Can add user signup source", "content_type": 29}, "model": "auth.permission", "pk": 85}, {"fields": {"codename": "change_usersignupsource", "name": "Can change user signup source", "content_type": 29}, "model": "auth.permission", "pk": 86}, {"fields": {"codename": "delete_usersignupsource", "name": "Can delete user signup source", "content_type": 29}, "model": "auth.permission", "pk": 87}, {"fields": {"codename": "add_usertestgroup", "name": "Can add user test group", "content_type": 30}, "model": "auth.permission", "pk": 88}, {"fields": {"codename": "change_usertestgroup", "name": "Can change user test group", "content_type": 30}, "model": "auth.permission", "pk": 89}, {"fields": {"codename": "delete_usertestgroup", "name": "Can delete user test group", "content_type": 30}, "model": "auth.permission", "pk": 90}, {"fields": {"codename": "add_registration", "name": "Can add registration", "content_type": 31}, "model": "auth.permission", "pk": 91}, {"fields": {"codename": "change_registration", "name": "Can change registration", "content_type": 31}, "model": "auth.permission", "pk": 92}, {"fields": {"codename": "delete_registration", "name": "Can delete registration", "content_type": 31}, "model": "auth.permission", "pk": 93}, {"fields": {"codename": "add_pendingnamechange", "name": "Can add pending name change", "content_type": 32}, "model": "auth.permission", "pk": 94}, {"fields": {"codename": "change_pendingnamechange", "name": "Can change pending name change", "content_type": 32}, "model": "auth.permission", "pk": 95}, {"fields": {"codename": "delete_pendingnamechange", "name": "Can delete pending name change", "content_type": 32}, "model": "auth.permission", "pk": 96}, {"fields": {"codename": "add_pendingemailchange", "name": "Can add pending email change", "content_type": 33}, "model": "auth.permission", "pk": 97}, {"fields": {"codename": "change_pendingemailchange", "name": "Can change pending email change", "content_type": 33}, "model": "auth.permission", "pk": 98}, {"fields": {"codename": "delete_pendingemailchange", "name": "Can delete pending email change", "content_type": 33}, "model": "auth.permission", "pk": 99}, {"fields": {"codename": "add_passwordhistory", "name": "Can add password history", "content_type": 34}, "model": "auth.permission", "pk": 100}, {"fields": {"codename": "change_passwordhistory", "name": "Can change password history", "content_type": 34}, "model": "auth.permission", "pk": 101}, {"fields": {"codename": "delete_passwordhistory", "name": "Can delete password history", "content_type": 34}, "model": "auth.permission", "pk": 102}, {"fields": {"codename": "add_loginfailures", "name": "Can add login failures", "content_type": 35}, "model": "auth.permission", "pk": 103}, {"fields": {"codename": "change_loginfailures", "name": "Can change login failures", "content_type": 35}, "model": "auth.permission", "pk": 104}, {"fields": {"codename": "delete_loginfailures", "name": "Can delete login failures", "content_type": 35}, "model": "auth.permission", "pk": 105}, {"fields": {"codename": "add_historicalcourseenrollment", "name": "Can add historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 106}, {"fields": {"codename": "change_historicalcourseenrollment", "name": "Can change historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 107}, {"fields": {"codename": "delete_historicalcourseenrollment", "name": "Can delete historical course enrollment", "content_type": 36}, "model": "auth.permission", "pk": 108}, {"fields": {"codename": "add_courseenrollment", "name": "Can add course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 109}, {"fields": {"codename": "change_courseenrollment", "name": "Can change course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 110}, {"fields": {"codename": "delete_courseenrollment", "name": "Can delete course enrollment", "content_type": 37}, "model": "auth.permission", "pk": 111}, {"fields": {"codename": "add_manualenrollmentaudit", "name": "Can add manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 112}, {"fields": {"codename": "change_manualenrollmentaudit", "name": "Can change manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 113}, {"fields": {"codename": "delete_manualenrollmentaudit", "name": "Can delete manual enrollment audit", "content_type": 38}, "model": "auth.permission", "pk": 114}, {"fields": {"codename": "add_courseenrollmentallowed", "name": "Can add course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 115}, {"fields": {"codename": "change_courseenrollmentallowed", "name": "Can change course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 116}, {"fields": {"codename": "delete_courseenrollmentallowed", "name": "Can delete course enrollment allowed", "content_type": 39}, "model": "auth.permission", "pk": 117}, {"fields": {"codename": "add_courseaccessrole", "name": "Can add course access role", "content_type": 40}, "model": "auth.permission", "pk": 118}, {"fields": {"codename": "change_courseaccessrole", "name": "Can change course access role", "content_type": 40}, "model": "auth.permission", "pk": 119}, {"fields": {"codename": "delete_courseaccessrole", "name": "Can delete course access role", "content_type": 40}, "model": "auth.permission", "pk": 120}, {"fields": {"codename": "add_dashboardconfiguration", "name": "Can add dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 121}, {"fields": {"codename": "change_dashboardconfiguration", "name": "Can change dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 122}, {"fields": {"codename": "delete_dashboardconfiguration", "name": "Can delete dashboard configuration", "content_type": 41}, "model": "auth.permission", "pk": 123}, {"fields": {"codename": "add_linkedinaddtoprofileconfiguration", "name": "Can add linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 124}, {"fields": {"codename": "change_linkedinaddtoprofileconfiguration", "name": "Can change linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 125}, {"fields": {"codename": "delete_linkedinaddtoprofileconfiguration", "name": "Can delete linked in add to profile configuration", "content_type": 42}, "model": "auth.permission", "pk": 126}, {"fields": {"codename": "add_entranceexamconfiguration", "name": "Can add entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 127}, {"fields": {"codename": "change_entranceexamconfiguration", "name": "Can change entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 128}, {"fields": {"codename": "delete_entranceexamconfiguration", "name": "Can delete entrance exam configuration", "content_type": 43}, "model": "auth.permission", "pk": 129}, {"fields": {"codename": "add_languageproficiency", "name": "Can add language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 130}, {"fields": {"codename": "change_languageproficiency", "name": "Can change language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 131}, {"fields": {"codename": "delete_languageproficiency", "name": "Can delete language proficiency", "content_type": 44}, "model": "auth.permission", "pk": 132}, {"fields": {"codename": "add_courseenrollmentattribute", "name": "Can add course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 133}, {"fields": {"codename": "change_courseenrollmentattribute", "name": "Can change course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 134}, {"fields": {"codename": "delete_courseenrollmentattribute", "name": "Can delete course enrollment attribute", "content_type": 45}, "model": "auth.permission", "pk": 135}, {"fields": {"codename": "add_enrollmentrefundconfiguration", "name": "Can add enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 136}, {"fields": {"codename": "change_enrollmentrefundconfiguration", "name": "Can change enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 137}, {"fields": {"codename": "delete_enrollmentrefundconfiguration", "name": "Can delete enrollment refund configuration", "content_type": 46}, "model": "auth.permission", "pk": 138}, {"fields": {"codename": "add_trackinglog", "name": "Can add tracking log", "content_type": 47}, "model": "auth.permission", "pk": 139}, {"fields": {"codename": "change_trackinglog", "name": "Can change tracking log", "content_type": 47}, "model": "auth.permission", "pk": 140}, {"fields": {"codename": "delete_trackinglog", "name": "Can delete tracking log", "content_type": 47}, "model": "auth.permission", "pk": 141}, {"fields": {"codename": "add_ratelimitconfiguration", "name": "Can add rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 142}, {"fields": {"codename": "change_ratelimitconfiguration", "name": "Can change rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 143}, {"fields": {"codename": "delete_ratelimitconfiguration", "name": "Can delete rate limit configuration", "content_type": 48}, "model": "auth.permission", "pk": 144}, {"fields": {"codename": "add_certificatewhitelist", "name": "Can add certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 145}, {"fields": {"codename": "change_certificatewhitelist", "name": "Can change certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 146}, {"fields": {"codename": "delete_certificatewhitelist", "name": "Can delete certificate whitelist", "content_type": 49}, "model": "auth.permission", "pk": 147}, {"fields": {"codename": "add_generatedcertificate", "name": "Can add generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 148}, {"fields": {"codename": "change_generatedcertificate", "name": "Can change generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 149}, {"fields": {"codename": "delete_generatedcertificate", "name": "Can delete generated certificate", "content_type": 50}, "model": "auth.permission", "pk": 150}, {"fields": {"codename": "add_certificategenerationhistory", "name": "Can add certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 151}, {"fields": {"codename": "change_certificategenerationhistory", "name": "Can change certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 152}, {"fields": {"codename": "delete_certificategenerationhistory", "name": "Can delete certificate generation history", "content_type": 51}, "model": "auth.permission", "pk": 153}, {"fields": {"codename": "add_certificateinvalidation", "name": "Can add certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 154}, {"fields": {"codename": "change_certificateinvalidation", "name": "Can change certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 155}, {"fields": {"codename": "delete_certificateinvalidation", "name": "Can delete certificate invalidation", "content_type": 52}, "model": "auth.permission", "pk": 156}, {"fields": {"codename": "add_examplecertificateset", "name": "Can add example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 157}, {"fields": {"codename": "change_examplecertificateset", "name": "Can change example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 158}, {"fields": {"codename": "delete_examplecertificateset", "name": "Can delete example certificate set", "content_type": 53}, "model": "auth.permission", "pk": 159}, {"fields": {"codename": "add_examplecertificate", "name": "Can add example certificate", "content_type": 54}, "model": "auth.permission", "pk": 160}, {"fields": {"codename": "change_examplecertificate", "name": "Can change example certificate", "content_type": 54}, "model": "auth.permission", "pk": 161}, {"fields": {"codename": "delete_examplecertificate", "name": "Can delete example certificate", "content_type": 54}, "model": "auth.permission", "pk": 162}, {"fields": {"codename": "add_certificategenerationcoursesetting", "name": "Can add certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 163}, {"fields": {"codename": "change_certificategenerationcoursesetting", "name": "Can change certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 164}, {"fields": {"codename": "delete_certificategenerationcoursesetting", "name": "Can delete certificate generation course setting", "content_type": 55}, "model": "auth.permission", "pk": 165}, {"fields": {"codename": "add_certificategenerationconfiguration", "name": "Can add certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 166}, {"fields": {"codename": "change_certificategenerationconfiguration", "name": "Can change certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 167}, {"fields": {"codename": "delete_certificategenerationconfiguration", "name": "Can delete certificate generation configuration", "content_type": 56}, "model": "auth.permission", "pk": 168}, {"fields": {"codename": "add_certificatehtmlviewconfiguration", "name": "Can add certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 169}, {"fields": {"codename": "change_certificatehtmlviewconfiguration", "name": "Can change certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 170}, {"fields": {"codename": "delete_certificatehtmlviewconfiguration", "name": "Can delete certificate html view configuration", "content_type": 57}, "model": "auth.permission", "pk": 171}, {"fields": {"codename": "add_badgeassertion", "name": "Can add badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 172}, {"fields": {"codename": "change_badgeassertion", "name": "Can change badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 173}, {"fields": {"codename": "delete_badgeassertion", "name": "Can delete badge assertion", "content_type": 58}, "model": "auth.permission", "pk": 174}, {"fields": {"codename": "add_badgeimageconfiguration", "name": "Can add badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 175}, {"fields": {"codename": "change_badgeimageconfiguration", "name": "Can change badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 176}, {"fields": {"codename": "delete_badgeimageconfiguration", "name": "Can delete badge image configuration", "content_type": 59}, "model": "auth.permission", "pk": 177}, {"fields": {"codename": "add_certificatetemplate", "name": "Can add certificate template", "content_type": 60}, "model": "auth.permission", "pk": 178}, {"fields": {"codename": "change_certificatetemplate", "name": "Can change certificate template", "content_type": 60}, "model": "auth.permission", "pk": 179}, {"fields": {"codename": "delete_certificatetemplate", "name": "Can delete certificate template", "content_type": 60}, "model": "auth.permission", "pk": 180}, {"fields": {"codename": "add_certificatetemplateasset", "name": "Can add certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 181}, {"fields": {"codename": "change_certificatetemplateasset", "name": "Can change certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 182}, {"fields": {"codename": "delete_certificatetemplateasset", "name": "Can delete certificate template asset", "content_type": 61}, "model": "auth.permission", "pk": 183}, {"fields": {"codename": "add_instructortask", "name": "Can add instructor task", "content_type": 62}, "model": "auth.permission", "pk": 184}, {"fields": {"codename": "change_instructortask", "name": "Can change instructor task", "content_type": 62}, "model": "auth.permission", "pk": 185}, {"fields": {"codename": "delete_instructortask", "name": "Can delete instructor task", "content_type": 62}, "model": "auth.permission", "pk": 186}, {"fields": {"codename": "add_courseusergroup", "name": "Can add course user group", "content_type": 63}, "model": "auth.permission", "pk": 187}, {"fields": {"codename": "change_courseusergroup", "name": "Can change course user group", "content_type": 63}, "model": "auth.permission", "pk": 188}, {"fields": {"codename": "delete_courseusergroup", "name": "Can delete course user group", "content_type": 63}, "model": "auth.permission", "pk": 189}, {"fields": {"codename": "add_cohortmembership", "name": "Can add cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 190}, {"fields": {"codename": "change_cohortmembership", "name": "Can change cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 191}, {"fields": {"codename": "delete_cohortmembership", "name": "Can delete cohort membership", "content_type": 64}, "model": "auth.permission", "pk": 192}, {"fields": {"codename": "add_courseusergrouppartitiongroup", "name": "Can add course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 193}, {"fields": {"codename": "change_courseusergrouppartitiongroup", "name": "Can change course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 194}, {"fields": {"codename": "delete_courseusergrouppartitiongroup", "name": "Can delete course user group partition group", "content_type": 65}, "model": "auth.permission", "pk": 195}, {"fields": {"codename": "add_coursecohortssettings", "name": "Can add course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 196}, {"fields": {"codename": "change_coursecohortssettings", "name": "Can change course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 197}, {"fields": {"codename": "delete_coursecohortssettings", "name": "Can delete course cohorts settings", "content_type": 66}, "model": "auth.permission", "pk": 198}, {"fields": {"codename": "add_coursecohort", "name": "Can add course cohort", "content_type": 67}, "model": "auth.permission", "pk": 199}, {"fields": {"codename": "change_coursecohort", "name": "Can change course cohort", "content_type": 67}, "model": "auth.permission", "pk": 200}, {"fields": {"codename": "delete_coursecohort", "name": "Can delete course cohort", "content_type": 67}, "model": "auth.permission", "pk": 201}, {"fields": {"codename": "add_courseemail", "name": "Can add course email", "content_type": 68}, "model": "auth.permission", "pk": 202}, {"fields": {"codename": "change_courseemail", "name": "Can change course email", "content_type": 68}, "model": "auth.permission", "pk": 203}, {"fields": {"codename": "delete_courseemail", "name": "Can delete course email", "content_type": 68}, "model": "auth.permission", "pk": 204}, {"fields": {"codename": "add_optout", "name": "Can add optout", "content_type": 69}, "model": "auth.permission", "pk": 205}, {"fields": {"codename": "change_optout", "name": "Can change optout", "content_type": 69}, "model": "auth.permission", "pk": 206}, {"fields": {"codename": "delete_optout", "name": "Can delete optout", "content_type": 69}, "model": "auth.permission", "pk": 207}, {"fields": {"codename": "add_courseemailtemplate", "name": "Can add course email template", "content_type": 70}, "model": "auth.permission", "pk": 208}, {"fields": {"codename": "change_courseemailtemplate", "name": "Can change course email template", "content_type": 70}, "model": "auth.permission", "pk": 209}, {"fields": {"codename": "delete_courseemailtemplate", "name": "Can delete course email template", "content_type": 70}, "model": "auth.permission", "pk": 210}, {"fields": {"codename": "add_courseauthorization", "name": "Can add course authorization", "content_type": 71}, "model": "auth.permission", "pk": 211}, {"fields": {"codename": "change_courseauthorization", "name": "Can change course authorization", "content_type": 71}, "model": "auth.permission", "pk": 212}, {"fields": {"codename": "delete_courseauthorization", "name": "Can delete course authorization", "content_type": 71}, "model": "auth.permission", "pk": 213}, {"fields": {"codename": "add_brandinginfoconfig", "name": "Can add branding info config", "content_type": 72}, "model": "auth.permission", "pk": 214}, {"fields": {"codename": "change_brandinginfoconfig", "name": "Can change branding info config", "content_type": 72}, "model": "auth.permission", "pk": 215}, {"fields": {"codename": "delete_brandinginfoconfig", "name": "Can delete branding info config", "content_type": 72}, "model": "auth.permission", "pk": 216}, {"fields": {"codename": "add_brandingapiconfig", "name": "Can add branding api config", "content_type": 73}, "model": "auth.permission", "pk": 217}, {"fields": {"codename": "change_brandingapiconfig", "name": "Can change branding api config", "content_type": 73}, "model": "auth.permission", "pk": 218}, {"fields": {"codename": "delete_brandingapiconfig", "name": "Can delete branding api config", "content_type": 73}, "model": "auth.permission", "pk": 219}, {"fields": {"codename": "add_externalauthmap", "name": "Can add external auth map", "content_type": 74}, "model": "auth.permission", "pk": 220}, {"fields": {"codename": "change_externalauthmap", "name": "Can change external auth map", "content_type": 74}, "model": "auth.permission", "pk": 221}, {"fields": {"codename": "delete_externalauthmap", "name": "Can delete external auth map", "content_type": 74}, "model": "auth.permission", "pk": 222}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 75}, "model": "auth.permission", "pk": 223}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 75}, "model": "auth.permission", "pk": 224}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 75}, "model": "auth.permission", "pk": 225}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 76}, "model": "auth.permission", "pk": 226}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 76}, "model": "auth.permission", "pk": 227}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 76}, "model": "auth.permission", "pk": 228}, {"fields": {"codename": "add_useropenid", "name": "Can add user open id", "content_type": 77}, "model": "auth.permission", "pk": 229}, {"fields": {"codename": "change_useropenid", "name": "Can change user open id", "content_type": 77}, "model": "auth.permission", "pk": 230}, {"fields": {"codename": "delete_useropenid", "name": "Can delete user open id", "content_type": 77}, "model": "auth.permission", "pk": 231}, {"fields": {"codename": "account_verified", "name": "The OpenID has been verified", "content_type": 77}, "model": "auth.permission", "pk": 232}, {"fields": {"codename": "add_client", "name": "Can add client", "content_type": 78}, "model": "auth.permission", "pk": 233}, {"fields": {"codename": "change_client", "name": "Can change client", "content_type": 78}, "model": "auth.permission", "pk": 234}, {"fields": {"codename": "delete_client", "name": "Can delete client", "content_type": 78}, "model": "auth.permission", "pk": 235}, {"fields": {"codename": "add_grant", "name": "Can add grant", "content_type": 79}, "model": "auth.permission", "pk": 236}, {"fields": {"codename": "change_grant", "name": "Can change grant", "content_type": 79}, "model": "auth.permission", "pk": 237}, {"fields": {"codename": "delete_grant", "name": "Can delete grant", "content_type": 79}, "model": "auth.permission", "pk": 238}, {"fields": {"codename": "add_accesstoken", "name": "Can add access token", "content_type": 80}, "model": "auth.permission", "pk": 239}, {"fields": {"codename": "change_accesstoken", "name": "Can change access token", "content_type": 80}, "model": "auth.permission", "pk": 240}, {"fields": {"codename": "delete_accesstoken", "name": "Can delete access token", "content_type": 80}, "model": "auth.permission", "pk": 241}, {"fields": {"codename": "add_refreshtoken", "name": "Can add refresh token", "content_type": 81}, "model": "auth.permission", "pk": 242}, {"fields": {"codename": "change_refreshtoken", "name": "Can change refresh token", "content_type": 81}, "model": "auth.permission", "pk": 243}, {"fields": {"codename": "delete_refreshtoken", "name": "Can delete refresh token", "content_type": 81}, "model": "auth.permission", "pk": 244}, {"fields": {"codename": "add_trustedclient", "name": "Can add trusted client", "content_type": 82}, "model": "auth.permission", "pk": 245}, {"fields": {"codename": "change_trustedclient", "name": "Can change trusted client", "content_type": 82}, "model": "auth.permission", "pk": 246}, {"fields": {"codename": "delete_trustedclient", "name": "Can delete trusted client", "content_type": 82}, "model": "auth.permission", "pk": 247}, {"fields": {"codename": "add_oauth2providerconfig", "name": "Can add Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 248}, {"fields": {"codename": "change_oauth2providerconfig", "name": "Can change Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 249}, {"fields": {"codename": "delete_oauth2providerconfig", "name": "Can delete Provider Configuration (OAuth)", "content_type": 83}, "model": "auth.permission", "pk": 250}, {"fields": {"codename": "add_samlproviderconfig", "name": "Can add Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 251}, {"fields": {"codename": "change_samlproviderconfig", "name": "Can change Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 252}, {"fields": {"codename": "delete_samlproviderconfig", "name": "Can delete Provider Configuration (SAML IdP)", "content_type": 84}, "model": "auth.permission", "pk": 253}, {"fields": {"codename": "add_samlconfiguration", "name": "Can add SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 254}, {"fields": {"codename": "change_samlconfiguration", "name": "Can change SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 255}, {"fields": {"codename": "delete_samlconfiguration", "name": "Can delete SAML Configuration", "content_type": 85}, "model": "auth.permission", "pk": 256}, {"fields": {"codename": "add_samlproviderdata", "name": "Can add SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 257}, {"fields": {"codename": "change_samlproviderdata", "name": "Can change SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 258}, {"fields": {"codename": "delete_samlproviderdata", "name": "Can delete SAML Provider Data", "content_type": 86}, "model": "auth.permission", "pk": 259}, {"fields": {"codename": "add_ltiproviderconfig", "name": "Can add Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 260}, {"fields": {"codename": "change_ltiproviderconfig", "name": "Can change Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 261}, {"fields": {"codename": "delete_ltiproviderconfig", "name": "Can delete Provider Configuration (LTI)", "content_type": 87}, "model": "auth.permission", "pk": 262}, {"fields": {"codename": "add_providerapipermissions", "name": "Can add Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 263}, {"fields": {"codename": "change_providerapipermissions", "name": "Can change Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 264}, {"fields": {"codename": "delete_providerapipermissions", "name": "Can delete Provider API Permission", "content_type": 88}, "model": "auth.permission", "pk": 265}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 89}, "model": "auth.permission", "pk": 266}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 89}, "model": "auth.permission", "pk": 267}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 89}, "model": "auth.permission", "pk": 268}, {"fields": {"codename": "add_scope", "name": "Can add scope", "content_type": 90}, "model": "auth.permission", "pk": 269}, {"fields": {"codename": "change_scope", "name": "Can change scope", "content_type": 90}, "model": "auth.permission", "pk": 270}, {"fields": {"codename": "delete_scope", "name": "Can delete scope", "content_type": 90}, "model": "auth.permission", "pk": 271}, {"fields": {"codename": "add_resource", "name": "Can add resource", "content_type": 90}, "model": "auth.permission", "pk": 272}, {"fields": {"codename": "change_resource", "name": "Can change resource", "content_type": 90}, "model": "auth.permission", "pk": 273}, {"fields": {"codename": "delete_resource", "name": "Can delete resource", "content_type": 90}, "model": "auth.permission", "pk": 274}, {"fields": {"codename": "add_consumer", "name": "Can add consumer", "content_type": 91}, "model": "auth.permission", "pk": 275}, {"fields": {"codename": "change_consumer", "name": "Can change consumer", "content_type": 91}, "model": "auth.permission", "pk": 276}, {"fields": {"codename": "delete_consumer", "name": "Can delete consumer", "content_type": 91}, "model": "auth.permission", "pk": 277}, {"fields": {"codename": "add_token", "name": "Can add token", "content_type": 92}, "model": "auth.permission", "pk": 278}, {"fields": {"codename": "change_token", "name": "Can change token", "content_type": 92}, "model": "auth.permission", "pk": 279}, {"fields": {"codename": "delete_token", "name": "Can delete token", "content_type": 92}, "model": "auth.permission", "pk": 280}, {"fields": {"codename": "add_article", "name": "Can add article", "content_type": 94}, "model": "auth.permission", "pk": 281}, {"fields": {"codename": "change_article", "name": "Can change article", "content_type": 94}, "model": "auth.permission", "pk": 282}, {"fields": {"codename": "delete_article", "name": "Can delete article", "content_type": 94}, "model": "auth.permission", "pk": 283}, {"fields": {"codename": "moderate", "name": "Can edit all articles and lock/unlock/restore", "content_type": 94}, "model": "auth.permission", "pk": 284}, {"fields": {"codename": "assign", "name": "Can change ownership of any article", "content_type": 94}, "model": "auth.permission", "pk": 285}, {"fields": {"codename": "grant", "name": "Can assign permissions to other users", "content_type": 94}, "model": "auth.permission", "pk": 286}, {"fields": {"codename": "add_articleforobject", "name": "Can add Article for object", "content_type": 95}, "model": "auth.permission", "pk": 287}, {"fields": {"codename": "change_articleforobject", "name": "Can change Article for object", "content_type": 95}, "model": "auth.permission", "pk": 288}, {"fields": {"codename": "delete_articleforobject", "name": "Can delete Article for object", "content_type": 95}, "model": "auth.permission", "pk": 289}, {"fields": {"codename": "add_articlerevision", "name": "Can add article revision", "content_type": 96}, "model": "auth.permission", "pk": 290}, {"fields": {"codename": "change_articlerevision", "name": "Can change article revision", "content_type": 96}, "model": "auth.permission", "pk": 291}, {"fields": {"codename": "delete_articlerevision", "name": "Can delete article revision", "content_type": 96}, "model": "auth.permission", "pk": 292}, {"fields": {"codename": "add_urlpath", "name": "Can add URL path", "content_type": 97}, "model": "auth.permission", "pk": 293}, {"fields": {"codename": "change_urlpath", "name": "Can change URL path", "content_type": 97}, "model": "auth.permission", "pk": 294}, {"fields": {"codename": "delete_urlpath", "name": "Can delete URL path", "content_type": 97}, "model": "auth.permission", "pk": 295}, {"fields": {"codename": "add_articleplugin", "name": "Can add article plugin", "content_type": 98}, "model": "auth.permission", "pk": 296}, {"fields": {"codename": "change_articleplugin", "name": "Can change article plugin", "content_type": 98}, "model": "auth.permission", "pk": 297}, {"fields": {"codename": "delete_articleplugin", "name": "Can delete article plugin", "content_type": 98}, "model": "auth.permission", "pk": 298}, {"fields": {"codename": "add_reusableplugin", "name": "Can add reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 299}, {"fields": {"codename": "change_reusableplugin", "name": "Can change reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 300}, {"fields": {"codename": "delete_reusableplugin", "name": "Can delete reusable plugin", "content_type": 99}, "model": "auth.permission", "pk": 301}, {"fields": {"codename": "add_simpleplugin", "name": "Can add simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 302}, {"fields": {"codename": "change_simpleplugin", "name": "Can change simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 303}, {"fields": {"codename": "delete_simpleplugin", "name": "Can delete simple plugin", "content_type": 100}, "model": "auth.permission", "pk": 304}, {"fields": {"codename": "add_revisionplugin", "name": "Can add revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 305}, {"fields": {"codename": "change_revisionplugin", "name": "Can change revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 306}, {"fields": {"codename": "delete_revisionplugin", "name": "Can delete revision plugin", "content_type": 101}, "model": "auth.permission", "pk": 307}, {"fields": {"codename": "add_revisionpluginrevision", "name": "Can add revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 308}, {"fields": {"codename": "change_revisionpluginrevision", "name": "Can change revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 309}, {"fields": {"codename": "delete_revisionpluginrevision", "name": "Can delete revision plugin revision", "content_type": 102}, "model": "auth.permission", "pk": 310}, {"fields": {"codename": "add_image", "name": "Can add image", "content_type": 103}, "model": "auth.permission", "pk": 311}, {"fields": {"codename": "change_image", "name": "Can change image", "content_type": 103}, "model": "auth.permission", "pk": 312}, {"fields": {"codename": "delete_image", "name": "Can delete image", "content_type": 103}, "model": "auth.permission", "pk": 313}, {"fields": {"codename": "add_imagerevision", "name": "Can add image revision", "content_type": 104}, "model": "auth.permission", "pk": 314}, {"fields": {"codename": "change_imagerevision", "name": "Can change image revision", "content_type": 104}, "model": "auth.permission", "pk": 315}, {"fields": {"codename": "delete_imagerevision", "name": "Can delete image revision", "content_type": 104}, "model": "auth.permission", "pk": 316}, {"fields": {"codename": "add_attachment", "name": "Can add attachment", "content_type": 105}, "model": "auth.permission", "pk": 317}, {"fields": {"codename": "change_attachment", "name": "Can change attachment", "content_type": 105}, "model": "auth.permission", "pk": 318}, {"fields": {"codename": "delete_attachment", "name": "Can delete attachment", "content_type": 105}, "model": "auth.permission", "pk": 319}, {"fields": {"codename": "add_attachmentrevision", "name": "Can add attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 320}, {"fields": {"codename": "change_attachmentrevision", "name": "Can change attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 321}, {"fields": {"codename": "delete_attachmentrevision", "name": "Can delete attachment revision", "content_type": 106}, "model": "auth.permission", "pk": 322}, {"fields": {"codename": "add_notificationtype", "name": "Can add type", "content_type": 107}, "model": "auth.permission", "pk": 323}, {"fields": {"codename": "change_notificationtype", "name": "Can change type", "content_type": 107}, "model": "auth.permission", "pk": 324}, {"fields": {"codename": "delete_notificationtype", "name": "Can delete type", "content_type": 107}, "model": "auth.permission", "pk": 325}, {"fields": {"codename": "add_settings", "name": "Can add settings", "content_type": 108}, "model": "auth.permission", "pk": 326}, {"fields": {"codename": "change_settings", "name": "Can change settings", "content_type": 108}, "model": "auth.permission", "pk": 327}, {"fields": {"codename": "delete_settings", "name": "Can delete settings", "content_type": 108}, "model": "auth.permission", "pk": 328}, {"fields": {"codename": "add_subscription", "name": "Can add subscription", "content_type": 109}, "model": "auth.permission", "pk": 329}, {"fields": {"codename": "change_subscription", "name": "Can change subscription", "content_type": 109}, "model": "auth.permission", "pk": 330}, {"fields": {"codename": "delete_subscription", "name": "Can delete subscription", "content_type": 109}, "model": "auth.permission", "pk": 331}, {"fields": {"codename": "add_notification", "name": "Can add notification", "content_type": 110}, "model": "auth.permission", "pk": 332}, {"fields": {"codename": "change_notification", "name": "Can change notification", "content_type": 110}, "model": "auth.permission", "pk": 333}, {"fields": {"codename": "delete_notification", "name": "Can delete notification", "content_type": 110}, "model": "auth.permission", "pk": 334}, {"fields": {"codename": "add_logentry", "name": "Can add log entry", "content_type": 111}, "model": "auth.permission", "pk": 335}, {"fields": {"codename": "change_logentry", "name": "Can change log entry", "content_type": 111}, "model": "auth.permission", "pk": 336}, {"fields": {"codename": "delete_logentry", "name": "Can delete log entry", "content_type": 111}, "model": "auth.permission", "pk": 337}, {"fields": {"codename": "add_role", "name": "Can add role", "content_type": 112}, "model": "auth.permission", "pk": 338}, {"fields": {"codename": "change_role", "name": "Can change role", "content_type": 112}, "model": "auth.permission", "pk": 339}, {"fields": {"codename": "delete_role", "name": "Can delete role", "content_type": 112}, "model": "auth.permission", "pk": 340}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 113}, "model": "auth.permission", "pk": 341}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 113}, "model": "auth.permission", "pk": 342}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 113}, "model": "auth.permission", "pk": 343}, {"fields": {"codename": "add_note", "name": "Can add note", "content_type": 114}, "model": "auth.permission", "pk": 344}, {"fields": {"codename": "change_note", "name": "Can change note", "content_type": 114}, "model": "auth.permission", "pk": 345}, {"fields": {"codename": "delete_note", "name": "Can delete note", "content_type": 114}, "model": "auth.permission", "pk": 346}, {"fields": {"codename": "add_splashconfig", "name": "Can add splash config", "content_type": 115}, "model": "auth.permission", "pk": 347}, {"fields": {"codename": "change_splashconfig", "name": "Can change splash config", "content_type": 115}, "model": "auth.permission", "pk": 348}, {"fields": {"codename": "delete_splashconfig", "name": "Can delete splash config", "content_type": 115}, "model": "auth.permission", "pk": 349}, {"fields": {"codename": "add_userpreference", "name": "Can add user preference", "content_type": 116}, "model": "auth.permission", "pk": 350}, {"fields": {"codename": "change_userpreference", "name": "Can change user preference", "content_type": 116}, "model": "auth.permission", "pk": 351}, {"fields": {"codename": "delete_userpreference", "name": "Can delete user preference", "content_type": 116}, "model": "auth.permission", "pk": 352}, {"fields": {"codename": "add_usercoursetag", "name": "Can add user course tag", "content_type": 117}, "model": "auth.permission", "pk": 353}, {"fields": {"codename": "change_usercoursetag", "name": "Can change user course tag", "content_type": 117}, "model": "auth.permission", "pk": 354}, {"fields": {"codename": "delete_usercoursetag", "name": "Can delete user course tag", "content_type": 117}, "model": "auth.permission", "pk": 355}, {"fields": {"codename": "add_userorgtag", "name": "Can add user org tag", "content_type": 118}, "model": "auth.permission", "pk": 356}, {"fields": {"codename": "change_userorgtag", "name": "Can change user org tag", "content_type": 118}, "model": "auth.permission", "pk": 357}, {"fields": {"codename": "delete_userorgtag", "name": "Can delete user org tag", "content_type": 118}, "model": "auth.permission", "pk": 358}, {"fields": {"codename": "add_order", "name": "Can add order", "content_type": 119}, "model": "auth.permission", "pk": 359}, {"fields": {"codename": "change_order", "name": "Can change order", "content_type": 119}, "model": "auth.permission", "pk": 360}, {"fields": {"codename": "delete_order", "name": "Can delete order", "content_type": 119}, "model": "auth.permission", "pk": 361}, {"fields": {"codename": "add_orderitem", "name": "Can add order item", "content_type": 120}, "model": "auth.permission", "pk": 362}, {"fields": {"codename": "change_orderitem", "name": "Can change order item", "content_type": 120}, "model": "auth.permission", "pk": 363}, {"fields": {"codename": "delete_orderitem", "name": "Can delete order item", "content_type": 120}, "model": "auth.permission", "pk": 364}, {"fields": {"codename": "add_invoice", "name": "Can add invoice", "content_type": 121}, "model": "auth.permission", "pk": 365}, {"fields": {"codename": "change_invoice", "name": "Can change invoice", "content_type": 121}, "model": "auth.permission", "pk": 366}, {"fields": {"codename": "delete_invoice", "name": "Can delete invoice", "content_type": 121}, "model": "auth.permission", "pk": 367}, {"fields": {"codename": "add_invoicetransaction", "name": "Can add invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 368}, {"fields": {"codename": "change_invoicetransaction", "name": "Can change invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 369}, {"fields": {"codename": "delete_invoicetransaction", "name": "Can delete invoice transaction", "content_type": 122}, "model": "auth.permission", "pk": 370}, {"fields": {"codename": "add_invoiceitem", "name": "Can add invoice item", "content_type": 123}, "model": "auth.permission", "pk": 371}, {"fields": {"codename": "change_invoiceitem", "name": "Can change invoice item", "content_type": 123}, "model": "auth.permission", "pk": 372}, {"fields": {"codename": "delete_invoiceitem", "name": "Can delete invoice item", "content_type": 123}, "model": "auth.permission", "pk": 373}, {"fields": {"codename": "add_courseregistrationcodeinvoiceitem", "name": "Can add course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 374}, {"fields": {"codename": "change_courseregistrationcodeinvoiceitem", "name": "Can change course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 375}, {"fields": {"codename": "delete_courseregistrationcodeinvoiceitem", "name": "Can delete course registration code invoice item", "content_type": 124}, "model": "auth.permission", "pk": 376}, {"fields": {"codename": "add_invoicehistory", "name": "Can add invoice history", "content_type": 125}, "model": "auth.permission", "pk": 377}, {"fields": {"codename": "change_invoicehistory", "name": "Can change invoice history", "content_type": 125}, "model": "auth.permission", "pk": 378}, {"fields": {"codename": "delete_invoicehistory", "name": "Can delete invoice history", "content_type": 125}, "model": "auth.permission", "pk": 379}, {"fields": {"codename": "add_courseregistrationcode", "name": "Can add course registration code", "content_type": 126}, "model": "auth.permission", "pk": 380}, {"fields": {"codename": "change_courseregistrationcode", "name": "Can change course registration code", "content_type": 126}, "model": "auth.permission", "pk": 381}, {"fields": {"codename": "delete_courseregistrationcode", "name": "Can delete course registration code", "content_type": 126}, "model": "auth.permission", "pk": 382}, {"fields": {"codename": "add_registrationcoderedemption", "name": "Can add registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 383}, {"fields": {"codename": "change_registrationcoderedemption", "name": "Can change registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 384}, {"fields": {"codename": "delete_registrationcoderedemption", "name": "Can delete registration code redemption", "content_type": 127}, "model": "auth.permission", "pk": 385}, {"fields": {"codename": "add_coupon", "name": "Can add coupon", "content_type": 128}, "model": "auth.permission", "pk": 386}, {"fields": {"codename": "change_coupon", "name": "Can change coupon", "content_type": 128}, "model": "auth.permission", "pk": 387}, {"fields": {"codename": "delete_coupon", "name": "Can delete coupon", "content_type": 128}, "model": "auth.permission", "pk": 388}, {"fields": {"codename": "add_couponredemption", "name": "Can add coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 389}, {"fields": {"codename": "change_couponredemption", "name": "Can change coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 390}, {"fields": {"codename": "delete_couponredemption", "name": "Can delete coupon redemption", "content_type": 129}, "model": "auth.permission", "pk": 391}, {"fields": {"codename": "add_paidcourseregistration", "name": "Can add paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 392}, {"fields": {"codename": "change_paidcourseregistration", "name": "Can change paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 393}, {"fields": {"codename": "delete_paidcourseregistration", "name": "Can delete paid course registration", "content_type": 130}, "model": "auth.permission", "pk": 394}, {"fields": {"codename": "add_courseregcodeitem", "name": "Can add course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 395}, {"fields": {"codename": "change_courseregcodeitem", "name": "Can change course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 396}, {"fields": {"codename": "delete_courseregcodeitem", "name": "Can delete course reg code item", "content_type": 131}, "model": "auth.permission", "pk": 397}, {"fields": {"codename": "add_courseregcodeitemannotation", "name": "Can add course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 398}, {"fields": {"codename": "change_courseregcodeitemannotation", "name": "Can change course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 399}, {"fields": {"codename": "delete_courseregcodeitemannotation", "name": "Can delete course reg code item annotation", "content_type": 132}, "model": "auth.permission", "pk": 400}, {"fields": {"codename": "add_paidcourseregistrationannotation", "name": "Can add paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 401}, {"fields": {"codename": "change_paidcourseregistrationannotation", "name": "Can change paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 402}, {"fields": {"codename": "delete_paidcourseregistrationannotation", "name": "Can delete paid course registration annotation", "content_type": 133}, "model": "auth.permission", "pk": 403}, {"fields": {"codename": "add_certificateitem", "name": "Can add certificate item", "content_type": 134}, "model": "auth.permission", "pk": 404}, {"fields": {"codename": "change_certificateitem", "name": "Can change certificate item", "content_type": 134}, "model": "auth.permission", "pk": 405}, {"fields": {"codename": "delete_certificateitem", "name": "Can delete certificate item", "content_type": 134}, "model": "auth.permission", "pk": 406}, {"fields": {"codename": "add_donationconfiguration", "name": "Can add donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 407}, {"fields": {"codename": "change_donationconfiguration", "name": "Can change donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 408}, {"fields": {"codename": "delete_donationconfiguration", "name": "Can delete donation configuration", "content_type": 135}, "model": "auth.permission", "pk": 409}, {"fields": {"codename": "add_donation", "name": "Can add donation", "content_type": 136}, "model": "auth.permission", "pk": 410}, {"fields": {"codename": "change_donation", "name": "Can change donation", "content_type": 136}, "model": "auth.permission", "pk": 411}, {"fields": {"codename": "delete_donation", "name": "Can delete donation", "content_type": 136}, "model": "auth.permission", "pk": 412}, {"fields": {"codename": "add_coursemode", "name": "Can add course mode", "content_type": 137}, "model": "auth.permission", "pk": 413}, {"fields": {"codename": "change_coursemode", "name": "Can change course mode", "content_type": 137}, "model": "auth.permission", "pk": 414}, {"fields": {"codename": "delete_coursemode", "name": "Can delete course mode", "content_type": 137}, "model": "auth.permission", "pk": 415}, {"fields": {"codename": "add_coursemodesarchive", "name": "Can add course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 416}, {"fields": {"codename": "change_coursemodesarchive", "name": "Can change course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 417}, {"fields": {"codename": "delete_coursemodesarchive", "name": "Can delete course modes archive", "content_type": 138}, "model": "auth.permission", "pk": 418}, {"fields": {"codename": "add_coursemodeexpirationconfig", "name": "Can add course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 419}, {"fields": {"codename": "change_coursemodeexpirationconfig", "name": "Can change course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 420}, {"fields": {"codename": "delete_coursemodeexpirationconfig", "name": "Can delete course mode expiration config", "content_type": 139}, "model": "auth.permission", "pk": 421}, {"fields": {"codename": "add_softwaresecurephotoverification", "name": "Can add software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 422}, {"fields": {"codename": "change_softwaresecurephotoverification", "name": "Can change software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 423}, {"fields": {"codename": "delete_softwaresecurephotoverification", "name": "Can delete software secure photo verification", "content_type": 140}, "model": "auth.permission", "pk": 424}, {"fields": {"codename": "add_historicalverificationdeadline", "name": "Can add historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 425}, {"fields": {"codename": "change_historicalverificationdeadline", "name": "Can change historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 426}, {"fields": {"codename": "delete_historicalverificationdeadline", "name": "Can delete historical verification deadline", "content_type": 141}, "model": "auth.permission", "pk": 427}, {"fields": {"codename": "add_verificationdeadline", "name": "Can add verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 428}, {"fields": {"codename": "change_verificationdeadline", "name": "Can change verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 429}, {"fields": {"codename": "delete_verificationdeadline", "name": "Can delete verification deadline", "content_type": 142}, "model": "auth.permission", "pk": 430}, {"fields": {"codename": "add_verificationcheckpoint", "name": "Can add verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 431}, {"fields": {"codename": "change_verificationcheckpoint", "name": "Can change verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 432}, {"fields": {"codename": "delete_verificationcheckpoint", "name": "Can delete verification checkpoint", "content_type": 143}, "model": "auth.permission", "pk": 433}, {"fields": {"codename": "add_verificationstatus", "name": "Can add Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 434}, {"fields": {"codename": "change_verificationstatus", "name": "Can change Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 435}, {"fields": {"codename": "delete_verificationstatus", "name": "Can delete Verification Status", "content_type": 144}, "model": "auth.permission", "pk": 436}, {"fields": {"codename": "add_incoursereverificationconfiguration", "name": "Can add in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 437}, {"fields": {"codename": "change_incoursereverificationconfiguration", "name": "Can change in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 438}, {"fields": {"codename": "delete_incoursereverificationconfiguration", "name": "Can delete in course reverification configuration", "content_type": 145}, "model": "auth.permission", "pk": 439}, {"fields": {"codename": "add_icrvstatusemailsconfiguration", "name": "Can add icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 440}, {"fields": {"codename": "change_icrvstatusemailsconfiguration", "name": "Can change icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 441}, {"fields": {"codename": "delete_icrvstatusemailsconfiguration", "name": "Can delete icrv status emails configuration", "content_type": 146}, "model": "auth.permission", "pk": 442}, {"fields": {"codename": "add_skippedreverification", "name": "Can add skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 443}, {"fields": {"codename": "change_skippedreverification", "name": "Can change skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 444}, {"fields": {"codename": "delete_skippedreverification", "name": "Can delete skipped reverification", "content_type": 147}, "model": "auth.permission", "pk": 445}, {"fields": {"codename": "add_darklangconfig", "name": "Can add dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 446}, {"fields": {"codename": "change_darklangconfig", "name": "Can change dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 447}, {"fields": {"codename": "delete_darklangconfig", "name": "Can delete dark lang config", "content_type": 148}, "model": "auth.permission", "pk": 448}, {"fields": {"codename": "add_microsite", "name": "Can add microsite", "content_type": 149}, "model": "auth.permission", "pk": 449}, {"fields": {"codename": "change_microsite", "name": "Can change microsite", "content_type": 149}, "model": "auth.permission", "pk": 450}, {"fields": {"codename": "delete_microsite", "name": "Can delete microsite", "content_type": 149}, "model": "auth.permission", "pk": 451}, {"fields": {"codename": "add_micrositehistory", "name": "Can add microsite history", "content_type": 150}, "model": "auth.permission", "pk": 452}, {"fields": {"codename": "change_micrositehistory", "name": "Can change microsite history", "content_type": 150}, "model": "auth.permission", "pk": 453}, {"fields": {"codename": "delete_micrositehistory", "name": "Can delete microsite history", "content_type": 150}, "model": "auth.permission", "pk": 454}, {"fields": {"codename": "add_historicalmicrositeorganizationmapping", "name": "Can add historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 455}, {"fields": {"codename": "change_historicalmicrositeorganizationmapping", "name": "Can change historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 456}, {"fields": {"codename": "delete_historicalmicrositeorganizationmapping", "name": "Can delete historical microsite organization mapping", "content_type": 151}, "model": "auth.permission", "pk": 457}, {"fields": {"codename": "add_micrositeorganizationmapping", "name": "Can add microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 458}, {"fields": {"codename": "change_micrositeorganizationmapping", "name": "Can change microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 459}, {"fields": {"codename": "delete_micrositeorganizationmapping", "name": "Can delete microsite organization mapping", "content_type": 152}, "model": "auth.permission", "pk": 460}, {"fields": {"codename": "add_historicalmicrositetemplate", "name": "Can add historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 461}, {"fields": {"codename": "change_historicalmicrositetemplate", "name": "Can change historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 462}, {"fields": {"codename": "delete_historicalmicrositetemplate", "name": "Can delete historical microsite template", "content_type": 153}, "model": "auth.permission", "pk": 463}, {"fields": {"codename": "add_micrositetemplate", "name": "Can add microsite template", "content_type": 154}, "model": "auth.permission", "pk": 464}, {"fields": {"codename": "change_micrositetemplate", "name": "Can change microsite template", "content_type": 154}, "model": "auth.permission", "pk": 465}, {"fields": {"codename": "delete_micrositetemplate", "name": "Can delete microsite template", "content_type": 154}, "model": "auth.permission", "pk": 466}, {"fields": {"codename": "add_whitelistedrssurl", "name": "Can add whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 467}, {"fields": {"codename": "change_whitelistedrssurl", "name": "Can change whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 468}, {"fields": {"codename": "delete_whitelistedrssurl", "name": "Can delete whitelisted rss url", "content_type": 155}, "model": "auth.permission", "pk": 469}, {"fields": {"codename": "add_embargoedcourse", "name": "Can add embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 470}, {"fields": {"codename": "change_embargoedcourse", "name": "Can change embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 471}, {"fields": {"codename": "delete_embargoedcourse", "name": "Can delete embargoed course", "content_type": 156}, "model": "auth.permission", "pk": 472}, {"fields": {"codename": "add_embargoedstate", "name": "Can add embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 473}, {"fields": {"codename": "change_embargoedstate", "name": "Can change embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 474}, {"fields": {"codename": "delete_embargoedstate", "name": "Can delete embargoed state", "content_type": 157}, "model": "auth.permission", "pk": 475}, {"fields": {"codename": "add_restrictedcourse", "name": "Can add restricted course", "content_type": 158}, "model": "auth.permission", "pk": 476}, {"fields": {"codename": "change_restrictedcourse", "name": "Can change restricted course", "content_type": 158}, "model": "auth.permission", "pk": 477}, {"fields": {"codename": "delete_restrictedcourse", "name": "Can delete restricted course", "content_type": 158}, "model": "auth.permission", "pk": 478}, {"fields": {"codename": "add_country", "name": "Can add country", "content_type": 159}, "model": "auth.permission", "pk": 479}, {"fields": {"codename": "change_country", "name": "Can change country", "content_type": 159}, "model": "auth.permission", "pk": 480}, {"fields": {"codename": "delete_country", "name": "Can delete country", "content_type": 159}, "model": "auth.permission", "pk": 481}, {"fields": {"codename": "add_countryaccessrule", "name": "Can add country access rule", "content_type": 160}, "model": "auth.permission", "pk": 482}, {"fields": {"codename": "change_countryaccessrule", "name": "Can change country access rule", "content_type": 160}, "model": "auth.permission", "pk": 483}, {"fields": {"codename": "delete_countryaccessrule", "name": "Can delete country access rule", "content_type": 160}, "model": "auth.permission", "pk": 484}, {"fields": {"codename": "add_courseaccessrulehistory", "name": "Can add course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 485}, {"fields": {"codename": "change_courseaccessrulehistory", "name": "Can change course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 486}, {"fields": {"codename": "delete_courseaccessrulehistory", "name": "Can delete course access rule history", "content_type": 161}, "model": "auth.permission", "pk": 487}, {"fields": {"codename": "add_ipfilter", "name": "Can add ip filter", "content_type": 162}, "model": "auth.permission", "pk": 488}, {"fields": {"codename": "change_ipfilter", "name": "Can change ip filter", "content_type": 162}, "model": "auth.permission", "pk": 489}, {"fields": {"codename": "delete_ipfilter", "name": "Can delete ip filter", "content_type": 162}, "model": "auth.permission", "pk": 490}, {"fields": {"codename": "add_coursererunstate", "name": "Can add course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 491}, {"fields": {"codename": "change_coursererunstate", "name": "Can change course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 492}, {"fields": {"codename": "delete_coursererunstate", "name": "Can delete course rerun state", "content_type": 163}, "model": "auth.permission", "pk": 493}, {"fields": {"codename": "add_mobileapiconfig", "name": "Can add mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 494}, {"fields": {"codename": "change_mobileapiconfig", "name": "Can change mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 495}, {"fields": {"codename": "delete_mobileapiconfig", "name": "Can delete mobile api config", "content_type": 164}, "model": "auth.permission", "pk": 496}, {"fields": {"codename": "add_usersocialauth", "name": "Can add user social auth", "content_type": 165}, "model": "auth.permission", "pk": 497}, {"fields": {"codename": "change_usersocialauth", "name": "Can change user social auth", "content_type": 165}, "model": "auth.permission", "pk": 498}, {"fields": {"codename": "delete_usersocialauth", "name": "Can delete user social auth", "content_type": 165}, "model": "auth.permission", "pk": 499}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 166}, "model": "auth.permission", "pk": 500}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 166}, "model": "auth.permission", "pk": 501}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 166}, "model": "auth.permission", "pk": 502}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 167}, "model": "auth.permission", "pk": 503}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 167}, "model": "auth.permission", "pk": 504}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 167}, "model": "auth.permission", "pk": 505}, {"fields": {"codename": "add_code", "name": "Can add code", "content_type": 168}, "model": "auth.permission", "pk": 506}, {"fields": {"codename": "change_code", "name": "Can change code", "content_type": 168}, "model": "auth.permission", "pk": 507}, {"fields": {"codename": "delete_code", "name": "Can delete code", "content_type": 168}, "model": "auth.permission", "pk": 508}, {"fields": {"codename": "add_surveyform", "name": "Can add survey form", "content_type": 169}, "model": "auth.permission", "pk": 509}, {"fields": {"codename": "change_surveyform", "name": "Can change survey form", "content_type": 169}, "model": "auth.permission", "pk": 510}, {"fields": {"codename": "delete_surveyform", "name": "Can delete survey form", "content_type": 169}, "model": "auth.permission", "pk": 511}, {"fields": {"codename": "add_surveyanswer", "name": "Can add survey answer", "content_type": 170}, "model": "auth.permission", "pk": 512}, {"fields": {"codename": "change_surveyanswer", "name": "Can change survey answer", "content_type": 170}, "model": "auth.permission", "pk": 513}, {"fields": {"codename": "delete_surveyanswer", "name": "Can delete survey answer", "content_type": 170}, "model": "auth.permission", "pk": 514}, {"fields": {"codename": "add_xblockasidesconfig", "name": "Can add x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 515}, {"fields": {"codename": "change_xblockasidesconfig", "name": "Can change x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 516}, {"fields": {"codename": "delete_xblockasidesconfig", "name": "Can delete x block asides config", "content_type": 171}, "model": "auth.permission", "pk": 517}, {"fields": {"codename": "add_courseoverview", "name": "Can add course overview", "content_type": 172}, "model": "auth.permission", "pk": 518}, {"fields": {"codename": "change_courseoverview", "name": "Can change course overview", "content_type": 172}, "model": "auth.permission", "pk": 519}, {"fields": {"codename": "delete_courseoverview", "name": "Can delete course overview", "content_type": 172}, "model": "auth.permission", "pk": 520}, {"fields": {"codename": "add_courseoverviewtab", "name": "Can add course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 521}, {"fields": {"codename": "change_courseoverviewtab", "name": "Can change course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 522}, {"fields": {"codename": "delete_courseoverviewtab", "name": "Can delete course overview tab", "content_type": 173}, "model": "auth.permission", "pk": 523}, {"fields": {"codename": "add_courseoverviewimageset", "name": "Can add course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 524}, {"fields": {"codename": "change_courseoverviewimageset", "name": "Can change course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 525}, {"fields": {"codename": "delete_courseoverviewimageset", "name": "Can delete course overview image set", "content_type": 174}, "model": "auth.permission", "pk": 526}, {"fields": {"codename": "add_courseoverviewimageconfig", "name": "Can add course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 527}, {"fields": {"codename": "change_courseoverviewimageconfig", "name": "Can change course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 528}, {"fields": {"codename": "delete_courseoverviewimageconfig", "name": "Can delete course overview image config", "content_type": 175}, "model": "auth.permission", "pk": 529}, {"fields": {"codename": "add_coursestructure", "name": "Can add course structure", "content_type": 176}, "model": "auth.permission", "pk": 530}, {"fields": {"codename": "change_coursestructure", "name": "Can change course structure", "content_type": 176}, "model": "auth.permission", "pk": 531}, {"fields": {"codename": "delete_coursestructure", "name": "Can delete course structure", "content_type": 176}, "model": "auth.permission", "pk": 532}, {"fields": {"codename": "add_corsmodel", "name": "Can add cors model", "content_type": 177}, "model": "auth.permission", "pk": 533}, {"fields": {"codename": "change_corsmodel", "name": "Can change cors model", "content_type": 177}, "model": "auth.permission", "pk": 534}, {"fields": {"codename": "delete_corsmodel", "name": "Can delete cors model", "content_type": 177}, "model": "auth.permission", "pk": 535}, {"fields": {"codename": "add_xdomainproxyconfiguration", "name": "Can add x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 536}, {"fields": {"codename": "change_xdomainproxyconfiguration", "name": "Can change x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 537}, {"fields": {"codename": "delete_xdomainproxyconfiguration", "name": "Can delete x domain proxy configuration", "content_type": 178}, "model": "auth.permission", "pk": 538}, {"fields": {"codename": "add_creditprovider", "name": "Can add credit provider", "content_type": 179}, "model": "auth.permission", "pk": 539}, {"fields": {"codename": "change_creditprovider", "name": "Can change credit provider", "content_type": 179}, "model": "auth.permission", "pk": 540}, {"fields": {"codename": "delete_creditprovider", "name": "Can delete credit provider", "content_type": 179}, "model": "auth.permission", "pk": 541}, {"fields": {"codename": "add_creditcourse", "name": "Can add credit course", "content_type": 180}, "model": "auth.permission", "pk": 542}, {"fields": {"codename": "change_creditcourse", "name": "Can change credit course", "content_type": 180}, "model": "auth.permission", "pk": 543}, {"fields": {"codename": "delete_creditcourse", "name": "Can delete credit course", "content_type": 180}, "model": "auth.permission", "pk": 544}, {"fields": {"codename": "add_creditrequirement", "name": "Can add credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 545}, {"fields": {"codename": "change_creditrequirement", "name": "Can change credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 546}, {"fields": {"codename": "delete_creditrequirement", "name": "Can delete credit requirement", "content_type": 181}, "model": "auth.permission", "pk": 547}, {"fields": {"codename": "add_historicalcreditrequirementstatus", "name": "Can add historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 548}, {"fields": {"codename": "change_historicalcreditrequirementstatus", "name": "Can change historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 549}, {"fields": {"codename": "delete_historicalcreditrequirementstatus", "name": "Can delete historical credit requirement status", "content_type": 182}, "model": "auth.permission", "pk": 550}, {"fields": {"codename": "add_creditrequirementstatus", "name": "Can add credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 551}, {"fields": {"codename": "change_creditrequirementstatus", "name": "Can change credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 552}, {"fields": {"codename": "delete_creditrequirementstatus", "name": "Can delete credit requirement status", "content_type": 183}, "model": "auth.permission", "pk": 553}, {"fields": {"codename": "add_crediteligibility", "name": "Can add credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 554}, {"fields": {"codename": "change_crediteligibility", "name": "Can change credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 555}, {"fields": {"codename": "delete_crediteligibility", "name": "Can delete credit eligibility", "content_type": 184}, "model": "auth.permission", "pk": 556}, {"fields": {"codename": "add_historicalcreditrequest", "name": "Can add historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 557}, {"fields": {"codename": "change_historicalcreditrequest", "name": "Can change historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 558}, {"fields": {"codename": "delete_historicalcreditrequest", "name": "Can delete historical credit request", "content_type": 185}, "model": "auth.permission", "pk": 559}, {"fields": {"codename": "add_creditrequest", "name": "Can add credit request", "content_type": 186}, "model": "auth.permission", "pk": 560}, {"fields": {"codename": "change_creditrequest", "name": "Can change credit request", "content_type": 186}, "model": "auth.permission", "pk": 561}, {"fields": {"codename": "delete_creditrequest", "name": "Can delete credit request", "content_type": 186}, "model": "auth.permission", "pk": 562}, {"fields": {"codename": "add_courseteam", "name": "Can add course team", "content_type": 187}, "model": "auth.permission", "pk": 563}, {"fields": {"codename": "change_courseteam", "name": "Can change course team", "content_type": 187}, "model": "auth.permission", "pk": 564}, {"fields": {"codename": "delete_courseteam", "name": "Can delete course team", "content_type": 187}, "model": "auth.permission", "pk": 565}, {"fields": {"codename": "add_courseteammembership", "name": "Can add course team membership", "content_type": 188}, "model": "auth.permission", "pk": 566}, {"fields": {"codename": "change_courseteammembership", "name": "Can change course team membership", "content_type": 188}, "model": "auth.permission", "pk": 567}, {"fields": {"codename": "delete_courseteammembership", "name": "Can delete course team membership", "content_type": 188}, "model": "auth.permission", "pk": 568}, {"fields": {"codename": "add_xblockdisableconfig", "name": "Can add x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 569}, {"fields": {"codename": "change_xblockdisableconfig", "name": "Can change x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 570}, {"fields": {"codename": "delete_xblockdisableconfig", "name": "Can delete x block disable config", "content_type": 189}, "model": "auth.permission", "pk": 571}, {"fields": {"codename": "add_bookmark", "name": "Can add bookmark", "content_type": 190}, "model": "auth.permission", "pk": 572}, {"fields": {"codename": "change_bookmark", "name": "Can change bookmark", "content_type": 190}, "model": "auth.permission", "pk": 573}, {"fields": {"codename": "delete_bookmark", "name": "Can delete bookmark", "content_type": 190}, "model": "auth.permission", "pk": 574}, {"fields": {"codename": "add_xblockcache", "name": "Can add x block cache", "content_type": 191}, "model": "auth.permission", "pk": 575}, {"fields": {"codename": "change_xblockcache", "name": "Can change x block cache", "content_type": 191}, "model": "auth.permission", "pk": 576}, {"fields": {"codename": "delete_xblockcache", "name": "Can delete x block cache", "content_type": 191}, "model": "auth.permission", "pk": 577}, {"fields": {"codename": "add_programsapiconfig", "name": "Can add programs api config", "content_type": 192}, "model": "auth.permission", "pk": 578}, {"fields": {"codename": "change_programsapiconfig", "name": "Can change programs api config", "content_type": 192}, "model": "auth.permission", "pk": 579}, {"fields": {"codename": "delete_programsapiconfig", "name": "Can delete programs api config", "content_type": 192}, "model": "auth.permission", "pk": 580}, {"fields": {"codename": "add_selfpacedconfiguration", "name": "Can add self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 581}, {"fields": {"codename": "change_selfpacedconfiguration", "name": "Can change self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 582}, {"fields": {"codename": "delete_selfpacedconfiguration", "name": "Can delete self paced configuration", "content_type": 193}, "model": "auth.permission", "pk": 583}, {"fields": {"codename": "add_kvstore", "name": "Can add kv store", "content_type": 194}, "model": "auth.permission", "pk": 584}, {"fields": {"codename": "change_kvstore", "name": "Can change kv store", "content_type": 194}, "model": "auth.permission", "pk": 585}, {"fields": {"codename": "delete_kvstore", "name": "Can delete kv store", "content_type": 194}, "model": "auth.permission", "pk": 586}, {"fields": {"codename": "add_studentitem", "name": "Can add student item", "content_type": 195}, "model": "auth.permission", "pk": 587}, {"fields": {"codename": "change_studentitem", "name": "Can change student item", "content_type": 195}, "model": "auth.permission", "pk": 588}, {"fields": {"codename": "delete_studentitem", "name": "Can delete student item", "content_type": 195}, "model": "auth.permission", "pk": 589}, {"fields": {"codename": "add_submission", "name": "Can add submission", "content_type": 196}, "model": "auth.permission", "pk": 590}, {"fields": {"codename": "change_submission", "name": "Can change submission", "content_type": 196}, "model": "auth.permission", "pk": 591}, {"fields": {"codename": "delete_submission", "name": "Can delete submission", "content_type": 196}, "model": "auth.permission", "pk": 592}, {"fields": {"codename": "add_score", "name": "Can add score", "content_type": 197}, "model": "auth.permission", "pk": 593}, {"fields": {"codename": "change_score", "name": "Can change score", "content_type": 197}, "model": "auth.permission", "pk": 594}, {"fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 197}, "model": "auth.permission", "pk": 595}, {"fields": {"codename": "add_scoresummary", "name": "Can add score summary", "content_type": 198}, "model": "auth.permission", "pk": 596}, {"fields": {"codename": "change_scoresummary", "name": "Can change score summary", "content_type": 198}, "model": "auth.permission", "pk": 597}, {"fields": {"codename": "delete_scoresummary", "name": "Can delete score summary", "content_type": 198}, "model": "auth.permission", "pk": 598}, {"fields": {"codename": "add_scoreannotation", "name": "Can add score annotation", "content_type": 199}, "model": "auth.permission", "pk": 599}, {"fields": {"codename": "change_scoreannotation", "name": "Can change score annotation", "content_type": 199}, "model": "auth.permission", "pk": 600}, {"fields": {"codename": "delete_scoreannotation", "name": "Can delete score annotation", "content_type": 199}, "model": "auth.permission", "pk": 601}, {"fields": {"codename": "add_rubric", "name": "Can add rubric", "content_type": 200}, "model": "auth.permission", "pk": 602}, {"fields": {"codename": "change_rubric", "name": "Can change rubric", "content_type": 200}, "model": "auth.permission", "pk": 603}, {"fields": {"codename": "delete_rubric", "name": "Can delete rubric", "content_type": 200}, "model": "auth.permission", "pk": 604}, {"fields": {"codename": "add_criterion", "name": "Can add criterion", "content_type": 201}, "model": "auth.permission", "pk": 605}, {"fields": {"codename": "change_criterion", "name": "Can change criterion", "content_type": 201}, "model": "auth.permission", "pk": 606}, {"fields": {"codename": "delete_criterion", "name": "Can delete criterion", "content_type": 201}, "model": "auth.permission", "pk": 607}, {"fields": {"codename": "add_criterionoption", "name": "Can add criterion option", "content_type": 202}, "model": "auth.permission", "pk": 608}, {"fields": {"codename": "change_criterionoption", "name": "Can change criterion option", "content_type": 202}, "model": "auth.permission", "pk": 609}, {"fields": {"codename": "delete_criterionoption", "name": "Can delete criterion option", "content_type": 202}, "model": "auth.permission", "pk": 610}, {"fields": {"codename": "add_assessment", "name": "Can add assessment", "content_type": 203}, "model": "auth.permission", "pk": 611}, {"fields": {"codename": "change_assessment", "name": "Can change assessment", "content_type": 203}, "model": "auth.permission", "pk": 612}, {"fields": {"codename": "delete_assessment", "name": "Can delete assessment", "content_type": 203}, "model": "auth.permission", "pk": 613}, {"fields": {"codename": "add_assessmentpart", "name": "Can add assessment part", "content_type": 204}, "model": "auth.permission", "pk": 614}, {"fields": {"codename": "change_assessmentpart", "name": "Can change assessment part", "content_type": 204}, "model": "auth.permission", "pk": 615}, {"fields": {"codename": "delete_assessmentpart", "name": "Can delete assessment part", "content_type": 204}, "model": "auth.permission", "pk": 616}, {"fields": {"codename": "add_assessmentfeedbackoption", "name": "Can add assessment feedback option", "content_type": 205}, "model": "auth.permission", "pk": 617}, {"fields": {"codename": "change_assessmentfeedbackoption", "name": "Can change assessment feedback option", "content_type": 205}, "model": "auth.permission", "pk": 618}, {"fields": {"codename": "delete_assessmentfeedbackoption", "name": "Can delete assessment feedback option", "content_type": 205}, "model": "auth.permission", "pk": 619}, {"fields": {"codename": "add_assessmentfeedback", "name": "Can add assessment feedback", "content_type": 206}, "model": "auth.permission", "pk": 620}, {"fields": {"codename": "change_assessmentfeedback", "name": "Can change assessment feedback", "content_type": 206}, "model": "auth.permission", "pk": 621}, {"fields": {"codename": "delete_assessmentfeedback", "name": "Can delete assessment feedback", "content_type": 206}, "model": "auth.permission", "pk": 622}, {"fields": {"codename": "add_peerworkflow", "name": "Can add peer workflow", "content_type": 207}, "model": "auth.permission", "pk": 623}, {"fields": {"codename": "change_peerworkflow", "name": "Can change peer workflow", "content_type": 207}, "model": "auth.permission", "pk": 624}, {"fields": {"codename": "delete_peerworkflow", "name": "Can delete peer workflow", "content_type": 207}, "model": "auth.permission", "pk": 625}, {"fields": {"codename": "add_peerworkflowitem", "name": "Can add peer workflow item", "content_type": 208}, "model": "auth.permission", "pk": 626}, {"fields": {"codename": "change_peerworkflowitem", "name": "Can change peer workflow item", "content_type": 208}, "model": "auth.permission", "pk": 627}, {"fields": {"codename": "delete_peerworkflowitem", "name": "Can delete peer workflow item", "content_type": 208}, "model": "auth.permission", "pk": 628}, {"fields": {"codename": "add_trainingexample", "name": "Can add training example", "content_type": 209}, "model": "auth.permission", "pk": 629}, {"fields": {"codename": "change_trainingexample", "name": "Can change training example", "content_type": 209}, "model": "auth.permission", "pk": 630}, {"fields": {"codename": "delete_trainingexample", "name": "Can delete training example", "content_type": 209}, "model": "auth.permission", "pk": 631}, {"fields": {"codename": "add_studenttrainingworkflow", "name": "Can add student training workflow", "content_type": 210}, "model": "auth.permission", "pk": 632}, {"fields": {"codename": "change_studenttrainingworkflow", "name": "Can change student training workflow", "content_type": 210}, "model": "auth.permission", "pk": 633}, {"fields": {"codename": "delete_studenttrainingworkflow", "name": "Can delete student training workflow", "content_type": 210}, "model": "auth.permission", "pk": 634}, {"fields": {"codename": "add_studenttrainingworkflowitem", "name": "Can add student training workflow item", "content_type": 211}, "model": "auth.permission", "pk": 635}, {"fields": {"codename": "change_studenttrainingworkflowitem", "name": "Can change student training workflow item", "content_type": 211}, "model": "auth.permission", "pk": 636}, {"fields": {"codename": "delete_studenttrainingworkflowitem", "name": "Can delete student training workflow item", "content_type": 211}, "model": "auth.permission", "pk": 637}, {"fields": {"codename": "add_aiclassifierset", "name": "Can add ai classifier set", "content_type": 212}, "model": "auth.permission", "pk": 638}, {"fields": {"codename": "change_aiclassifierset", "name": "Can change ai classifier set", "content_type": 212}, "model": "auth.permission", "pk": 639}, {"fields": {"codename": "delete_aiclassifierset", "name": "Can delete ai classifier set", "content_type": 212}, "model": "auth.permission", "pk": 640}, {"fields": {"codename": "add_aiclassifier", "name": "Can add ai classifier", "content_type": 213}, "model": "auth.permission", "pk": 641}, {"fields": {"codename": "change_aiclassifier", "name": "Can change ai classifier", "content_type": 213}, "model": "auth.permission", "pk": 642}, {"fields": {"codename": "delete_aiclassifier", "name": "Can delete ai classifier", "content_type": 213}, "model": "auth.permission", "pk": 643}, {"fields": {"codename": "add_aitrainingworkflow", "name": "Can add ai training workflow", "content_type": 214}, "model": "auth.permission", "pk": 644}, {"fields": {"codename": "change_aitrainingworkflow", "name": "Can change ai training workflow", "content_type": 214}, "model": "auth.permission", "pk": 645}, {"fields": {"codename": "delete_aitrainingworkflow", "name": "Can delete ai training workflow", "content_type": 214}, "model": "auth.permission", "pk": 646}, {"fields": {"codename": "add_aigradingworkflow", "name": "Can add ai grading workflow", "content_type": 215}, "model": "auth.permission", "pk": 647}, {"fields": {"codename": "change_aigradingworkflow", "name": "Can change ai grading workflow", "content_type": 215}, "model": "auth.permission", "pk": 648}, {"fields": {"codename": "delete_aigradingworkflow", "name": "Can delete ai grading workflow", "content_type": 215}, "model": "auth.permission", "pk": 649}, {"fields": {"codename": "add_staffworkflow", "name": "Can add staff workflow", "content_type": 216}, "model": "auth.permission", "pk": 650}, {"fields": {"codename": "change_staffworkflow", "name": "Can change staff workflow", "content_type": 216}, "model": "auth.permission", "pk": 651}, {"fields": {"codename": "delete_staffworkflow", "name": "Can delete staff workflow", "content_type": 216}, "model": "auth.permission", "pk": 652}, {"fields": {"codename": "add_assessmentworkflow", "name": "Can add assessment workflow", "content_type": 217}, "model": "auth.permission", "pk": 653}, {"fields": {"codename": "change_assessmentworkflow", "name": "Can change assessment workflow", "content_type": 217}, "model": "auth.permission", "pk": 654}, {"fields": {"codename": "delete_assessmentworkflow", "name": "Can delete assessment workflow", "content_type": 217}, "model": "auth.permission", "pk": 655}, {"fields": {"codename": "add_assessmentworkflowstep", "name": "Can add assessment workflow step", "content_type": 218}, "model": "auth.permission", "pk": 656}, {"fields": {"codename": "change_assessmentworkflowstep", "name": "Can change assessment workflow step", "content_type": 218}, "model": "auth.permission", "pk": 657}, {"fields": {"codename": "delete_assessmentworkflowstep", "name": "Can delete assessment workflow step", "content_type": 218}, "model": "auth.permission", "pk": 658}, {"fields": {"codename": "add_assessmentworkflowcancellation", "name": "Can add assessment workflow cancellation", "content_type": 219}, "model": "auth.permission", "pk": 659}, {"fields": {"codename": "change_assessmentworkflowcancellation", "name": "Can change assessment workflow cancellation", "content_type": 219}, "model": "auth.permission", "pk": 660}, {"fields": {"codename": "delete_assessmentworkflowcancellation", "name": "Can delete assessment workflow cancellation", "content_type": 219}, "model": "auth.permission", "pk": 661}, {"fields": {"codename": "add_profile", "name": "Can add profile", "content_type": 220}, "model": "auth.permission", "pk": 662}, {"fields": {"codename": "change_profile", "name": "Can change profile", "content_type": 220}, "model": "auth.permission", "pk": 663}, {"fields": {"codename": "delete_profile", "name": "Can delete profile", "content_type": 220}, "model": "auth.permission", "pk": 664}, {"fields": {"codename": "add_video", "name": "Can add video", "content_type": 221}, "model": "auth.permission", "pk": 665}, {"fields": {"codename": "change_video", "name": "Can change video", "content_type": 221}, "model": "auth.permission", "pk": 666}, {"fields": {"codename": "delete_video", "name": "Can delete video", "content_type": 221}, "model": "auth.permission", "pk": 667}, {"fields": {"codename": "add_coursevideo", "name": "Can add course video", "content_type": 222}, "model": "auth.permission", "pk": 668}, {"fields": {"codename": "change_coursevideo", "name": "Can change course video", "content_type": 222}, "model": "auth.permission", "pk": 669}, {"fields": {"codename": "delete_coursevideo", "name": "Can delete course video", "content_type": 222}, "model": "auth.permission", "pk": 670}, {"fields": {"codename": "add_encodedvideo", "name": "Can add encoded video", "content_type": 223}, "model": "auth.permission", "pk": 671}, {"fields": {"codename": "change_encodedvideo", "name": "Can change encoded video", "content_type": 223}, "model": "auth.permission", "pk": 672}, {"fields": {"codename": "delete_encodedvideo", "name": "Can delete encoded video", "content_type": 223}, "model": "auth.permission", "pk": 673}, {"fields": {"codename": "add_subtitle", "name": "Can add subtitle", "content_type": 224}, "model": "auth.permission", "pk": 674}, {"fields": {"codename": "change_subtitle", "name": "Can change subtitle", "content_type": 224}, "model": "auth.permission", "pk": 675}, {"fields": {"codename": "delete_subtitle", "name": "Can delete subtitle", "content_type": 224}, "model": "auth.permission", "pk": 676}, {"fields": {"codename": "add_milestone", "name": "Can add milestone", "content_type": 225}, "model": "auth.permission", "pk": 677}, {"fields": {"codename": "change_milestone", "name": "Can change milestone", "content_type": 225}, "model": "auth.permission", "pk": 678}, {"fields": {"codename": "delete_milestone", "name": "Can delete milestone", "content_type": 225}, "model": "auth.permission", "pk": 679}, {"fields": {"codename": "add_milestonerelationshiptype", "name": "Can add milestone relationship type", "content_type": 226}, "model": "auth.permission", "pk": 680}, {"fields": {"codename": "change_milestonerelationshiptype", "name": "Can change milestone relationship type", "content_type": 226}, "model": "auth.permission", "pk": 681}, {"fields": {"codename": "delete_milestonerelationshiptype", "name": "Can delete milestone relationship type", "content_type": 226}, "model": "auth.permission", "pk": 682}, {"fields": {"codename": "add_coursemilestone", "name": "Can add course milestone", "content_type": 227}, "model": "auth.permission", "pk": 683}, {"fields": {"codename": "change_coursemilestone", "name": "Can change course milestone", "content_type": 227}, "model": "auth.permission", "pk": 684}, {"fields": {"codename": "delete_coursemilestone", "name": "Can delete course milestone", "content_type": 227}, "model": "auth.permission", "pk": 685}, {"fields": {"codename": "add_coursecontentmilestone", "name": "Can add course content milestone", "content_type": 228}, "model": "auth.permission", "pk": 686}, {"fields": {"codename": "change_coursecontentmilestone", "name": "Can change course content milestone", "content_type": 228}, "model": "auth.permission", "pk": 687}, {"fields": {"codename": "delete_coursecontentmilestone", "name": "Can delete course content milestone", "content_type": 228}, "model": "auth.permission", "pk": 688}, {"fields": {"codename": "add_usermilestone", "name": "Can add user milestone", "content_type": 229}, "model": "auth.permission", "pk": 689}, {"fields": {"codename": "change_usermilestone", "name": "Can change user milestone", "content_type": 229}, "model": "auth.permission", "pk": 690}, {"fields": {"codename": "delete_usermilestone", "name": "Can delete user milestone", "content_type": 229}, "model": "auth.permission", "pk": 691}, {"fields": {"codename": "add_proctoredexam", "name": "Can add proctored exam", "content_type": 230}, "model": "auth.permission", "pk": 692}, {"fields": {"codename": "change_proctoredexam", "name": "Can change proctored exam", "content_type": 230}, "model": "auth.permission", "pk": 693}, {"fields": {"codename": "delete_proctoredexam", "name": "Can delete proctored exam", "content_type": 230}, "model": "auth.permission", "pk": 694}, {"fields": {"codename": "add_proctoredexamreviewpolicy", "name": "Can add Proctored exam review policy", "content_type": 231}, "model": "auth.permission", "pk": 695}, {"fields": {"codename": "change_proctoredexamreviewpolicy", "name": "Can change Proctored exam review policy", "content_type": 231}, "model": "auth.permission", "pk": 696}, {"fields": {"codename": "delete_proctoredexamreviewpolicy", "name": "Can delete Proctored exam review policy", "content_type": 231}, "model": "auth.permission", "pk": 697}, {"fields": {"codename": "add_proctoredexamreviewpolicyhistory", "name": "Can add proctored exam review policy history", "content_type": 232}, "model": "auth.permission", "pk": 698}, {"fields": {"codename": "change_proctoredexamreviewpolicyhistory", "name": "Can change proctored exam review policy history", "content_type": 232}, "model": "auth.permission", "pk": 699}, {"fields": {"codename": "delete_proctoredexamreviewpolicyhistory", "name": "Can delete proctored exam review policy history", "content_type": 232}, "model": "auth.permission", "pk": 700}, {"fields": {"codename": "add_proctoredexamstudentattempt", "name": "Can add proctored exam attempt", "content_type": 233}, "model": "auth.permission", "pk": 701}, {"fields": {"codename": "change_proctoredexamstudentattempt", "name": "Can change proctored exam attempt", "content_type": 233}, "model": "auth.permission", "pk": 702}, {"fields": {"codename": "delete_proctoredexamstudentattempt", "name": "Can delete proctored exam attempt", "content_type": 233}, "model": "auth.permission", "pk": 703}, {"fields": {"codename": "add_proctoredexamstudentattempthistory", "name": "Can add proctored exam attempt history", "content_type": 234}, "model": "auth.permission", "pk": 704}, {"fields": {"codename": "change_proctoredexamstudentattempthistory", "name": "Can change proctored exam attempt history", "content_type": 234}, "model": "auth.permission", "pk": 705}, {"fields": {"codename": "delete_proctoredexamstudentattempthistory", "name": "Can delete proctored exam attempt history", "content_type": 234}, "model": "auth.permission", "pk": 706}, {"fields": {"codename": "add_proctoredexamstudentallowance", "name": "Can add proctored allowance", "content_type": 235}, "model": "auth.permission", "pk": 707}, {"fields": {"codename": "change_proctoredexamstudentallowance", "name": "Can change proctored allowance", "content_type": 235}, "model": "auth.permission", "pk": 708}, {"fields": {"codename": "delete_proctoredexamstudentallowance", "name": "Can delete proctored allowance", "content_type": 235}, "model": "auth.permission", "pk": 709}, {"fields": {"codename": "add_proctoredexamstudentallowancehistory", "name": "Can add proctored allowance history", "content_type": 236}, "model": "auth.permission", "pk": 710}, {"fields": {"codename": "change_proctoredexamstudentallowancehistory", "name": "Can change proctored allowance history", "content_type": 236}, "model": "auth.permission", "pk": 711}, {"fields": {"codename": "delete_proctoredexamstudentallowancehistory", "name": "Can delete proctored allowance history", "content_type": 236}, "model": "auth.permission", "pk": 712}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereview", "name": "Can add Proctored exam software secure review", "content_type": 237}, "model": "auth.permission", "pk": 713}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereview", "name": "Can change Proctored exam software secure review", "content_type": 237}, "model": "auth.permission", "pk": 714}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereview", "name": "Can delete Proctored exam software secure review", "content_type": 237}, "model": "auth.permission", "pk": 715}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereviewhistory", "name": "Can add Proctored exam review archive", "content_type": 238}, "model": "auth.permission", "pk": 716}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereviewhistory", "name": "Can change Proctored exam review archive", "content_type": 238}, "model": "auth.permission", "pk": 717}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereviewhistory", "name": "Can delete Proctored exam review archive", "content_type": 238}, "model": "auth.permission", "pk": 718}, {"fields": {"codename": "add_proctoredexamsoftwaresecurecomment", "name": "Can add proctored exam software secure comment", "content_type": 239}, "model": "auth.permission", "pk": 719}, {"fields": {"codename": "change_proctoredexamsoftwaresecurecomment", "name": "Can change proctored exam software secure comment", "content_type": 239}, "model": "auth.permission", "pk": 720}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurecomment", "name": "Can delete proctored exam software secure comment", "content_type": 239}, "model": "auth.permission", "pk": 721}, {"fields": {"codename": "add_organization", "name": "Can add organization", "content_type": 240}, "model": "auth.permission", "pk": 722}, {"fields": {"codename": "change_organization", "name": "Can change organization", "content_type": 240}, "model": "auth.permission", "pk": 723}, {"fields": {"codename": "delete_organization", "name": "Can delete organization", "content_type": 240}, "model": "auth.permission", "pk": 724}, {"fields": {"codename": "add_organizationcourse", "name": "Can add Link Course", "content_type": 241}, "model": "auth.permission", "pk": 725}, {"fields": {"codename": "change_organizationcourse", "name": "Can change Link Course", "content_type": 241}, "model": "auth.permission", "pk": 726}, {"fields": {"codename": "delete_organizationcourse", "name": "Can delete Link Course", "content_type": 241}, "model": "auth.permission", "pk": 727}, {"fields": {"codename": "add_videouploadconfig", "name": "Can add video upload config", "content_type": 242}, "model": "auth.permission", "pk": 728}, {"fields": {"codename": "change_videouploadconfig", "name": "Can change video upload config", "content_type": 242}, "model": "auth.permission", "pk": 729}, {"fields": {"codename": "delete_videouploadconfig", "name": "Can delete video upload config", "content_type": 242}, "model": "auth.permission", "pk": 730}, {"fields": {"codename": "add_pushnotificationconfig", "name": "Can add push notification config", "content_type": 243}, "model": "auth.permission", "pk": 731}, {"fields": {"codename": "change_pushnotificationconfig", "name": "Can change push notification config", "content_type": 243}, "model": "auth.permission", "pk": 732}, {"fields": {"codename": "delete_pushnotificationconfig", "name": "Can delete push notification config", "content_type": 243}, "model": "auth.permission", "pk": 733}, {"fields": {"codename": "add_coursecreator", "name": "Can add course creator", "content_type": 244}, "model": "auth.permission", "pk": 734}, {"fields": {"codename": "change_coursecreator", "name": "Can change course creator", "content_type": 244}, "model": "auth.permission", "pk": 735}, {"fields": {"codename": "delete_coursecreator", "name": "Can delete course creator", "content_type": 244}, "model": "auth.permission", "pk": 736}, {"fields": {"codename": "add_studioconfig", "name": "Can add studio config", "content_type": 245}, "model": "auth.permission", "pk": 737}, {"fields": {"codename": "change_studioconfig", "name": "Can change studio config", "content_type": 245}, "model": "auth.permission", "pk": 738}, {"fields": {"codename": "delete_studioconfig", "name": "Can delete studio config", "content_type": 245}, "model": "auth.permission", "pk": 739}, {"fields": {"username": "ecommerce_worker", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": null, "groups": [], "user_permissions": [], "password": "!a7SudZ8tSftyXEVQPKpBHG2rj6ZOmcr0VCpboorI", "email": "ecommerce_worker@fake.email", "date_joined": "2016-01-21T18:53:18.229Z"}, "model": "auth.user", "pk": 1}, {"fields": {"change_date": "2016-01-21T18:54:25.176Z", "changed_by": null, "enabled": true}, "model": "util.ratelimitconfiguration", "pk": 1}, {"fields": {"change_date": "2016-01-21T18:53:13.524Z", "changed_by": null, "configuration": "{\"default\": {\"accomplishment_class_append\": \"accomplishment-certificate\", \"platform_name\": \"Your Platform Name Here\", \"logo_src\": \"/static/certificates/images/logo.png\", \"logo_url\": \"http://www.example.com\", \"company_verified_certificate_url\": \"http://www.example.com/verified-certificate\", \"company_privacy_url\": \"http://www.example.com/privacy-policy\", \"company_tos_url\": \"http://www.example.com/terms-service\", \"company_about_url\": \"http://www.example.com/about-us\"}, \"verified\": {\"certificate_type\": \"Verified\", \"certificate_title\": \"Verified Certificate of Achievement\"}, \"honor\": {\"certificate_type\": \"Honor Code\", \"certificate_title\": \"Certificate of Achievement\"}}", "enabled": false}, "model": "certificates.certificatehtmlviewconfiguration", "pk": 1}, {"fields": {"change_date": "2016-01-21T18:53:24.176Z", "changed_by": null, "enabled": true, "released_languages": ""}, "model": "dark_lang.darklangconfig", "pk": 1}] \ No newline at end of file +[{"fields": {"model": "permission", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 1}, {"fields": {"model": "group", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 2}, {"fields": {"model": "user", "app_label": "auth"}, "model": "contenttypes.contenttype", "pk": 3}, {"fields": {"model": "contenttype", "app_label": "contenttypes"}, "model": "contenttypes.contenttype", "pk": 4}, {"fields": {"model": "session", "app_label": "sessions"}, "model": "contenttypes.contenttype", "pk": 5}, {"fields": {"model": "site", "app_label": "sites"}, "model": "contenttypes.contenttype", "pk": 6}, {"fields": {"model": "taskmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 7}, {"fields": {"model": "tasksetmeta", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 8}, {"fields": {"model": "intervalschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 9}, {"fields": {"model": "crontabschedule", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 10}, {"fields": {"model": "periodictasks", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 11}, {"fields": {"model": "periodictask", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 12}, {"fields": {"model": "workerstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 13}, {"fields": {"model": "taskstate", "app_label": "djcelery"}, "model": "contenttypes.contenttype", "pk": 14}, {"fields": {"model": "globalstatusmessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 15}, {"fields": {"model": "coursemessage", "app_label": "status"}, "model": "contenttypes.contenttype", "pk": 16}, {"fields": {"model": "assetbaseurlconfig", "app_label": "static_replace"}, "model": "contenttypes.contenttype", "pk": 17}, {"fields": {"model": "assetexcludedextensionsconfig", "app_label": "static_replace"}, "model": "contenttypes.contenttype", "pk": 18}, {"fields": {"model": "courseassetcachettlconfig", "app_label": "contentserver"}, "model": "contenttypes.contenttype", "pk": 19}, {"fields": {"model": "studentmodule", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 20}, {"fields": {"model": "studentmodulehistory", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 21}, {"fields": {"model": "xmoduleuserstatesummaryfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 22}, {"fields": {"model": "xmodulestudentprefsfield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 23}, {"fields": {"model": "xmodulestudentinfofield", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 24}, {"fields": {"model": "offlinecomputedgrade", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 25}, {"fields": {"model": "offlinecomputedgradelog", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 26}, {"fields": {"model": "studentfieldoverride", "app_label": "courseware"}, "model": "contenttypes.contenttype", "pk": 27}, {"fields": {"model": "anonymoususerid", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 28}, {"fields": {"model": "userstanding", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 29}, {"fields": {"model": "userprofile", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 30}, {"fields": {"model": "usersignupsource", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 31}, {"fields": {"model": "usertestgroup", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 32}, {"fields": {"model": "registration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 33}, {"fields": {"model": "pendingnamechange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 34}, {"fields": {"model": "pendingemailchange", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 35}, {"fields": {"model": "passwordhistory", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 36}, {"fields": {"model": "loginfailures", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 37}, {"fields": {"model": "historicalcourseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 38}, {"fields": {"model": "courseenrollment", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 39}, {"fields": {"model": "manualenrollmentaudit", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 40}, {"fields": {"model": "courseenrollmentallowed", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 41}, {"fields": {"model": "courseaccessrole", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 42}, {"fields": {"model": "dashboardconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 43}, {"fields": {"model": "linkedinaddtoprofileconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 44}, {"fields": {"model": "entranceexamconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 45}, {"fields": {"model": "languageproficiency", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 46}, {"fields": {"model": "courseenrollmentattribute", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 47}, {"fields": {"model": "enrollmentrefundconfiguration", "app_label": "student"}, "model": "contenttypes.contenttype", "pk": 48}, {"fields": {"model": "trackinglog", "app_label": "track"}, "model": "contenttypes.contenttype", "pk": 49}, {"fields": {"model": "ratelimitconfiguration", "app_label": "util"}, "model": "contenttypes.contenttype", "pk": 50}, {"fields": {"model": "certificatewhitelist", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 51}, {"fields": {"model": "generatedcertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 52}, {"fields": {"model": "certificategenerationhistory", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 53}, {"fields": {"model": "certificateinvalidation", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 54}, {"fields": {"model": "examplecertificateset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 55}, {"fields": {"model": "examplecertificate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 56}, {"fields": {"model": "certificategenerationcoursesetting", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 57}, {"fields": {"model": "certificategenerationconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 58}, {"fields": {"model": "certificatehtmlviewconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 59}, {"fields": {"model": "badgeassertion", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 60}, {"fields": {"model": "badgeimageconfiguration", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 61}, {"fields": {"model": "certificatetemplate", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 62}, {"fields": {"model": "certificatetemplateasset", "app_label": "certificates"}, "model": "contenttypes.contenttype", "pk": 63}, {"fields": {"model": "instructortask", "app_label": "instructor_task"}, "model": "contenttypes.contenttype", "pk": 64}, {"fields": {"model": "courseusergroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 65}, {"fields": {"model": "cohortmembership", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 66}, {"fields": {"model": "courseusergrouppartitiongroup", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 67}, {"fields": {"model": "coursecohortssettings", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 68}, {"fields": {"model": "coursecohort", "app_label": "course_groups"}, "model": "contenttypes.contenttype", "pk": 69}, {"fields": {"model": "courseemail", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 70}, {"fields": {"model": "optout", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 71}, {"fields": {"model": "courseemailtemplate", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 72}, {"fields": {"model": "courseauthorization", "app_label": "bulk_email"}, "model": "contenttypes.contenttype", "pk": 73}, {"fields": {"model": "brandinginfoconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 74}, {"fields": {"model": "brandingapiconfig", "app_label": "branding"}, "model": "contenttypes.contenttype", "pk": 75}, {"fields": {"model": "externalauthmap", "app_label": "external_auth"}, "model": "contenttypes.contenttype", "pk": 76}, {"fields": {"model": "nonce", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 77}, {"fields": {"model": "association", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 78}, {"fields": {"model": "useropenid", "app_label": "django_openid_auth"}, "model": "contenttypes.contenttype", "pk": 79}, {"fields": {"model": "client", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 80}, {"fields": {"model": "grant", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 81}, {"fields": {"model": "accesstoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 82}, {"fields": {"model": "refreshtoken", "app_label": "oauth2"}, "model": "contenttypes.contenttype", "pk": 83}, {"fields": {"model": "trustedclient", "app_label": "oauth2_provider"}, "model": "contenttypes.contenttype", "pk": 84}, {"fields": {"model": "oauth2providerconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 85}, {"fields": {"model": "samlproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 86}, {"fields": {"model": "samlconfiguration", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 87}, {"fields": {"model": "samlproviderdata", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 88}, {"fields": {"model": "ltiproviderconfig", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 89}, {"fields": {"model": "providerapipermissions", "app_label": "third_party_auth"}, "model": "contenttypes.contenttype", "pk": 90}, {"fields": {"model": "nonce", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 91}, {"fields": {"model": "scope", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 92}, {"fields": {"model": "consumer", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 93}, {"fields": {"model": "token", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 94}, {"fields": {"model": "resource", "app_label": "oauth_provider"}, "model": "contenttypes.contenttype", "pk": 95}, {"fields": {"model": "article", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 96}, {"fields": {"model": "articleforobject", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 97}, {"fields": {"model": "articlerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 98}, {"fields": {"model": "urlpath", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 99}, {"fields": {"model": "articleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 100}, {"fields": {"model": "reusableplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 101}, {"fields": {"model": "simpleplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 102}, {"fields": {"model": "revisionplugin", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 103}, {"fields": {"model": "revisionpluginrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 104}, {"fields": {"model": "image", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 105}, {"fields": {"model": "imagerevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 106}, {"fields": {"model": "attachment", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 107}, {"fields": {"model": "attachmentrevision", "app_label": "wiki"}, "model": "contenttypes.contenttype", "pk": 108}, {"fields": {"model": "notificationtype", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 109}, {"fields": {"model": "settings", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 110}, {"fields": {"model": "subscription", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 111}, {"fields": {"model": "notification", "app_label": "django_notify"}, "model": "contenttypes.contenttype", "pk": 112}, {"fields": {"model": "logentry", "app_label": "admin"}, "model": "contenttypes.contenttype", "pk": 113}, {"fields": {"model": "role", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 114}, {"fields": {"model": "permission", "app_label": "django_comment_common"}, "model": "contenttypes.contenttype", "pk": 115}, {"fields": {"model": "note", "app_label": "notes"}, "model": "contenttypes.contenttype", "pk": 116}, {"fields": {"model": "splashconfig", "app_label": "splash"}, "model": "contenttypes.contenttype", "pk": 117}, {"fields": {"model": "userpreference", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 118}, {"fields": {"model": "usercoursetag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 119}, {"fields": {"model": "userorgtag", "app_label": "user_api"}, "model": "contenttypes.contenttype", "pk": 120}, {"fields": {"model": "order", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 121}, {"fields": {"model": "orderitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 122}, {"fields": {"model": "invoice", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 123}, {"fields": {"model": "invoicetransaction", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 124}, {"fields": {"model": "invoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 125}, {"fields": {"model": "courseregistrationcodeinvoiceitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 126}, {"fields": {"model": "invoicehistory", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 127}, {"fields": {"model": "courseregistrationcode", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 128}, {"fields": {"model": "registrationcoderedemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 129}, {"fields": {"model": "coupon", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 130}, {"fields": {"model": "couponredemption", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 131}, {"fields": {"model": "paidcourseregistration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 132}, {"fields": {"model": "courseregcodeitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 133}, {"fields": {"model": "courseregcodeitemannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 134}, {"fields": {"model": "paidcourseregistrationannotation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 135}, {"fields": {"model": "certificateitem", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 136}, {"fields": {"model": "donationconfiguration", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 137}, {"fields": {"model": "donation", "app_label": "shoppingcart"}, "model": "contenttypes.contenttype", "pk": 138}, {"fields": {"model": "coursemode", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 139}, {"fields": {"model": "coursemodesarchive", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 140}, {"fields": {"model": "coursemodeexpirationconfig", "app_label": "course_modes"}, "model": "contenttypes.contenttype", "pk": 141}, {"fields": {"model": "softwaresecurephotoverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 142}, {"fields": {"model": "historicalverificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 143}, {"fields": {"model": "verificationdeadline", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 144}, {"fields": {"model": "verificationcheckpoint", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 145}, {"fields": {"model": "verificationstatus", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 146}, {"fields": {"model": "incoursereverificationconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 147}, {"fields": {"model": "icrvstatusemailsconfiguration", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 148}, {"fields": {"model": "skippedreverification", "app_label": "verify_student"}, "model": "contenttypes.contenttype", "pk": 149}, {"fields": {"model": "darklangconfig", "app_label": "dark_lang"}, "model": "contenttypes.contenttype", "pk": 150}, {"fields": {"model": "microsite", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 151}, {"fields": {"model": "micrositehistory", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 152}, {"fields": {"model": "historicalmicrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 153}, {"fields": {"model": "micrositeorganizationmapping", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 154}, {"fields": {"model": "historicalmicrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 155}, {"fields": {"model": "micrositetemplate", "app_label": "microsite_configuration"}, "model": "contenttypes.contenttype", "pk": 156}, {"fields": {"model": "whitelistedrssurl", "app_label": "rss_proxy"}, "model": "contenttypes.contenttype", "pk": 157}, {"fields": {"model": "embargoedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 158}, {"fields": {"model": "embargoedstate", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 159}, {"fields": {"model": "restrictedcourse", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 160}, {"fields": {"model": "country", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 161}, {"fields": {"model": "countryaccessrule", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 162}, {"fields": {"model": "courseaccessrulehistory", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 163}, {"fields": {"model": "ipfilter", "app_label": "embargo"}, "model": "contenttypes.contenttype", "pk": 164}, {"fields": {"model": "coursererunstate", "app_label": "course_action_state"}, "model": "contenttypes.contenttype", "pk": 165}, {"fields": {"model": "mobileapiconfig", "app_label": "mobile_api"}, "model": "contenttypes.contenttype", "pk": 166}, {"fields": {"model": "usersocialauth", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 167}, {"fields": {"model": "nonce", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 168}, {"fields": {"model": "association", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 169}, {"fields": {"model": "code", "app_label": "default"}, "model": "contenttypes.contenttype", "pk": 170}, {"fields": {"model": "surveyform", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 171}, {"fields": {"model": "surveyanswer", "app_label": "survey"}, "model": "contenttypes.contenttype", "pk": 172}, {"fields": {"model": "xblockasidesconfig", "app_label": "lms_xblock"}, "model": "contenttypes.contenttype", "pk": 173}, {"fields": {"model": "courseoverview", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 174}, {"fields": {"model": "courseoverviewtab", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 175}, {"fields": {"model": "courseoverviewimageset", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 176}, {"fields": {"model": "courseoverviewimageconfig", "app_label": "course_overviews"}, "model": "contenttypes.contenttype", "pk": 177}, {"fields": {"model": "coursestructure", "app_label": "course_structures"}, "model": "contenttypes.contenttype", "pk": 178}, {"fields": {"model": "corsmodel", "app_label": "corsheaders"}, "model": "contenttypes.contenttype", "pk": 179}, {"fields": {"model": "xdomainproxyconfiguration", "app_label": "cors_csrf"}, "model": "contenttypes.contenttype", "pk": 180}, {"fields": {"model": "commerceconfiguration", "app_label": "commerce"}, "model": "contenttypes.contenttype", "pk": 181}, {"fields": {"model": "creditprovider", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 182}, {"fields": {"model": "creditcourse", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 183}, {"fields": {"model": "creditrequirement", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 184}, {"fields": {"model": "historicalcreditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 185}, {"fields": {"model": "creditrequirementstatus", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 186}, {"fields": {"model": "crediteligibility", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 187}, {"fields": {"model": "historicalcreditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 188}, {"fields": {"model": "creditrequest", "app_label": "credit"}, "model": "contenttypes.contenttype", "pk": 189}, {"fields": {"model": "courseteam", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 190}, {"fields": {"model": "courseteammembership", "app_label": "teams"}, "model": "contenttypes.contenttype", "pk": 191}, {"fields": {"model": "xblockdisableconfig", "app_label": "xblock_django"}, "model": "contenttypes.contenttype", "pk": 192}, {"fields": {"model": "bookmark", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 193}, {"fields": {"model": "xblockcache", "app_label": "bookmarks"}, "model": "contenttypes.contenttype", "pk": 194}, {"fields": {"model": "programsapiconfig", "app_label": "programs"}, "model": "contenttypes.contenttype", "pk": 195}, {"fields": {"model": "selfpacedconfiguration", "app_label": "self_paced"}, "model": "contenttypes.contenttype", "pk": 196}, {"fields": {"model": "kvstore", "app_label": "thumbnail"}, "model": "contenttypes.contenttype", "pk": 197}, {"fields": {"model": "credentialsapiconfig", "app_label": "credentials"}, "model": "contenttypes.contenttype", "pk": 198}, {"fields": {"model": "milestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 199}, {"fields": {"model": "milestonerelationshiptype", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 200}, {"fields": {"model": "coursemilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 201}, {"fields": {"model": "coursecontentmilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 202}, {"fields": {"model": "usermilestone", "app_label": "milestones"}, "model": "contenttypes.contenttype", "pk": 203}, {"fields": {"model": "studentitem", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 204}, {"fields": {"model": "submission", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 205}, {"fields": {"model": "score", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 206}, {"fields": {"model": "scoresummary", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 207}, {"fields": {"model": "scoreannotation", "app_label": "submissions"}, "model": "contenttypes.contenttype", "pk": 208}, {"fields": {"model": "rubric", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 209}, {"fields": {"model": "criterion", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 210}, {"fields": {"model": "criterionoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 211}, {"fields": {"model": "assessment", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 212}, {"fields": {"model": "assessmentpart", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 213}, {"fields": {"model": "assessmentfeedbackoption", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 214}, {"fields": {"model": "assessmentfeedback", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 215}, {"fields": {"model": "peerworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 216}, {"fields": {"model": "peerworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 217}, {"fields": {"model": "trainingexample", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 218}, {"fields": {"model": "studenttrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 219}, {"fields": {"model": "studenttrainingworkflowitem", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 220}, {"fields": {"model": "aiclassifierset", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 221}, {"fields": {"model": "aiclassifier", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 222}, {"fields": {"model": "aitrainingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 223}, {"fields": {"model": "aigradingworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 224}, {"fields": {"model": "staffworkflow", "app_label": "assessment"}, "model": "contenttypes.contenttype", "pk": 225}, {"fields": {"model": "assessmentworkflow", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 226}, {"fields": {"model": "assessmentworkflowstep", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 227}, {"fields": {"model": "assessmentworkflowcancellation", "app_label": "workflow"}, "model": "contenttypes.contenttype", "pk": 228}, {"fields": {"model": "profile", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 229}, {"fields": {"model": "video", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 230}, {"fields": {"model": "coursevideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 231}, {"fields": {"model": "encodedvideo", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 232}, {"fields": {"model": "subtitle", "app_label": "edxval"}, "model": "contenttypes.contenttype", "pk": 233}, {"fields": {"model": "proctoredexam", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 234}, {"fields": {"model": "proctoredexamreviewpolicy", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 235}, {"fields": {"model": "proctoredexamreviewpolicyhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 236}, {"fields": {"model": "proctoredexamstudentattempt", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 237}, {"fields": {"model": "proctoredexamstudentattempthistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 238}, {"fields": {"model": "proctoredexamstudentallowance", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 239}, {"fields": {"model": "proctoredexamstudentallowancehistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 240}, {"fields": {"model": "proctoredexamsoftwaresecurereview", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 241}, {"fields": {"model": "proctoredexamsoftwaresecurereviewhistory", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 242}, {"fields": {"model": "proctoredexamsoftwaresecurecomment", "app_label": "edx_proctoring"}, "model": "contenttypes.contenttype", "pk": 243}, {"fields": {"model": "organization", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 244}, {"fields": {"model": "organizationcourse", "app_label": "organizations"}, "model": "contenttypes.contenttype", "pk": 245}, {"fields": {"model": "studentmodulehistoryextended", "app_label": "coursewarehistoryextended"}, "model": "contenttypes.contenttype", "pk": 246}, {"fields": {"model": "videouploadconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 247}, {"fields": {"model": "pushnotificationconfig", "app_label": "contentstore"}, "model": "contenttypes.contenttype", "pk": 248}, {"fields": {"model": "coursecreator", "app_label": "course_creators"}, "model": "contenttypes.contenttype", "pk": 249}, {"fields": {"model": "studioconfig", "app_label": "xblock_config"}, "model": "contenttypes.contenttype", "pk": 250}, {"fields": {"domain": "example.com", "name": "example.com"}, "model": "sites.site", "pk": 1}, {"fields": {"default": false, "mode": "honor", "icon": "badges/honor.png"}, "model": "certificates.badgeimageconfiguration", "pk": 1}, {"fields": {"default": false, "mode": "verified", "icon": "badges/verified.png"}, "model": "certificates.badgeimageconfiguration", "pk": 2}, {"fields": {"default": false, "mode": "professional", "icon": "badges/professional.png"}, "model": "certificates.badgeimageconfiguration", "pk": 3}, {"fields": {"plain_template": "{course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": null}, "model": "bulk_email.courseemailtemplate", "pk": 1}, {"fields": {"plain_template": "THIS IS A BRANDED TEXT TEMPLATE. {course_title}\n\n{{message_body}}\r\n----\r\nCopyright 2013 edX, All rights reserved.\r\n----\r\nConnect with edX:\r\nFacebook (http://facebook.com/edxonline)\r\nTwitter (http://twitter.com/edxonline)\r\nGoogle+ (https://plus.google.com/108235383044095082735)\r\nMeetup (http://www.meetup.com/edX-Communities/)\r\n----\r\nThis email was automatically sent from {platform_name}.\r\nYou are receiving this email at address {email} because you are enrolled in {course_title}\r\n(URL: {course_url} ).\r\nTo stop receiving email like this, update your course email settings at {email_settings_url}.\r\n", "html_template": " THIS IS A BRANDED HTML TEMPLATE Update from {course_title}

edX
Connect with edX:        

{course_title}


{{message_body}}
       
Copyright \u00a9 2013 edX, All rights reserved.


Our mailing address is:
edX
11 Cambridge Center, Suite 101
Cambridge, MA, USA 02142


This email was automatically sent from {platform_name}.
You are receiving this email at address {email} because you are enrolled in {course_title}.
To stop receiving email like this, update your course email settings here.
", "name": "branded.template"}, "model": "bulk_email.courseemailtemplate", "pk": 2}, {"fields": {"country": "AF"}, "model": "embargo.country", "pk": 1}, {"fields": {"country": "AX"}, "model": "embargo.country", "pk": 2}, {"fields": {"country": "AL"}, "model": "embargo.country", "pk": 3}, {"fields": {"country": "DZ"}, "model": "embargo.country", "pk": 4}, {"fields": {"country": "AS"}, "model": "embargo.country", "pk": 5}, {"fields": {"country": "AD"}, "model": "embargo.country", "pk": 6}, {"fields": {"country": "AO"}, "model": "embargo.country", "pk": 7}, {"fields": {"country": "AI"}, "model": "embargo.country", "pk": 8}, {"fields": {"country": "AQ"}, "model": "embargo.country", "pk": 9}, {"fields": {"country": "AG"}, "model": "embargo.country", "pk": 10}, {"fields": {"country": "AR"}, "model": "embargo.country", "pk": 11}, {"fields": {"country": "AM"}, "model": "embargo.country", "pk": 12}, {"fields": {"country": "AW"}, "model": "embargo.country", "pk": 13}, {"fields": {"country": "AU"}, "model": "embargo.country", "pk": 14}, {"fields": {"country": "AT"}, "model": "embargo.country", "pk": 15}, {"fields": {"country": "AZ"}, "model": "embargo.country", "pk": 16}, {"fields": {"country": "BS"}, "model": "embargo.country", "pk": 17}, {"fields": {"country": "BH"}, "model": "embargo.country", "pk": 18}, {"fields": {"country": "BD"}, "model": "embargo.country", "pk": 19}, {"fields": {"country": "BB"}, "model": "embargo.country", "pk": 20}, {"fields": {"country": "BY"}, "model": "embargo.country", "pk": 21}, {"fields": {"country": "BE"}, "model": "embargo.country", "pk": 22}, {"fields": {"country": "BZ"}, "model": "embargo.country", "pk": 23}, {"fields": {"country": "BJ"}, "model": "embargo.country", "pk": 24}, {"fields": {"country": "BM"}, "model": "embargo.country", "pk": 25}, {"fields": {"country": "BT"}, "model": "embargo.country", "pk": 26}, {"fields": {"country": "BO"}, "model": "embargo.country", "pk": 27}, {"fields": {"country": "BQ"}, "model": "embargo.country", "pk": 28}, {"fields": {"country": "BA"}, "model": "embargo.country", "pk": 29}, {"fields": {"country": "BW"}, "model": "embargo.country", "pk": 30}, {"fields": {"country": "BV"}, "model": "embargo.country", "pk": 31}, {"fields": {"country": "BR"}, "model": "embargo.country", "pk": 32}, {"fields": {"country": "IO"}, "model": "embargo.country", "pk": 33}, {"fields": {"country": "BN"}, "model": "embargo.country", "pk": 34}, {"fields": {"country": "BG"}, "model": "embargo.country", "pk": 35}, {"fields": {"country": "BF"}, "model": "embargo.country", "pk": 36}, {"fields": {"country": "BI"}, "model": "embargo.country", "pk": 37}, {"fields": {"country": "CV"}, "model": "embargo.country", "pk": 38}, {"fields": {"country": "KH"}, "model": "embargo.country", "pk": 39}, {"fields": {"country": "CM"}, "model": "embargo.country", "pk": 40}, {"fields": {"country": "CA"}, "model": "embargo.country", "pk": 41}, {"fields": {"country": "KY"}, "model": "embargo.country", "pk": 42}, {"fields": {"country": "CF"}, "model": "embargo.country", "pk": 43}, {"fields": {"country": "TD"}, "model": "embargo.country", "pk": 44}, {"fields": {"country": "CL"}, "model": "embargo.country", "pk": 45}, {"fields": {"country": "CN"}, "model": "embargo.country", "pk": 46}, {"fields": {"country": "CX"}, "model": "embargo.country", "pk": 47}, {"fields": {"country": "CC"}, "model": "embargo.country", "pk": 48}, {"fields": {"country": "CO"}, "model": "embargo.country", "pk": 49}, {"fields": {"country": "KM"}, "model": "embargo.country", "pk": 50}, {"fields": {"country": "CG"}, "model": "embargo.country", "pk": 51}, {"fields": {"country": "CD"}, "model": "embargo.country", "pk": 52}, {"fields": {"country": "CK"}, "model": "embargo.country", "pk": 53}, {"fields": {"country": "CR"}, "model": "embargo.country", "pk": 54}, {"fields": {"country": "CI"}, "model": "embargo.country", "pk": 55}, {"fields": {"country": "HR"}, "model": "embargo.country", "pk": 56}, {"fields": {"country": "CU"}, "model": "embargo.country", "pk": 57}, {"fields": {"country": "CW"}, "model": "embargo.country", "pk": 58}, {"fields": {"country": "CY"}, "model": "embargo.country", "pk": 59}, {"fields": {"country": "CZ"}, "model": "embargo.country", "pk": 60}, {"fields": {"country": "DK"}, "model": "embargo.country", "pk": 61}, {"fields": {"country": "DJ"}, "model": "embargo.country", "pk": 62}, {"fields": {"country": "DM"}, "model": "embargo.country", "pk": 63}, {"fields": {"country": "DO"}, "model": "embargo.country", "pk": 64}, {"fields": {"country": "EC"}, "model": "embargo.country", "pk": 65}, {"fields": {"country": "EG"}, "model": "embargo.country", "pk": 66}, {"fields": {"country": "SV"}, "model": "embargo.country", "pk": 67}, {"fields": {"country": "GQ"}, "model": "embargo.country", "pk": 68}, {"fields": {"country": "ER"}, "model": "embargo.country", "pk": 69}, {"fields": {"country": "EE"}, "model": "embargo.country", "pk": 70}, {"fields": {"country": "ET"}, "model": "embargo.country", "pk": 71}, {"fields": {"country": "FK"}, "model": "embargo.country", "pk": 72}, {"fields": {"country": "FO"}, "model": "embargo.country", "pk": 73}, {"fields": {"country": "FJ"}, "model": "embargo.country", "pk": 74}, {"fields": {"country": "FI"}, "model": "embargo.country", "pk": 75}, {"fields": {"country": "FR"}, "model": "embargo.country", "pk": 76}, {"fields": {"country": "GF"}, "model": "embargo.country", "pk": 77}, {"fields": {"country": "PF"}, "model": "embargo.country", "pk": 78}, {"fields": {"country": "TF"}, "model": "embargo.country", "pk": 79}, {"fields": {"country": "GA"}, "model": "embargo.country", "pk": 80}, {"fields": {"country": "GM"}, "model": "embargo.country", "pk": 81}, {"fields": {"country": "GE"}, "model": "embargo.country", "pk": 82}, {"fields": {"country": "DE"}, "model": "embargo.country", "pk": 83}, {"fields": {"country": "GH"}, "model": "embargo.country", "pk": 84}, {"fields": {"country": "GI"}, "model": "embargo.country", "pk": 85}, {"fields": {"country": "GR"}, "model": "embargo.country", "pk": 86}, {"fields": {"country": "GL"}, "model": "embargo.country", "pk": 87}, {"fields": {"country": "GD"}, "model": "embargo.country", "pk": 88}, {"fields": {"country": "GP"}, "model": "embargo.country", "pk": 89}, {"fields": {"country": "GU"}, "model": "embargo.country", "pk": 90}, {"fields": {"country": "GT"}, "model": "embargo.country", "pk": 91}, {"fields": {"country": "GG"}, "model": "embargo.country", "pk": 92}, {"fields": {"country": "GN"}, "model": "embargo.country", "pk": 93}, {"fields": {"country": "GW"}, "model": "embargo.country", "pk": 94}, {"fields": {"country": "GY"}, "model": "embargo.country", "pk": 95}, {"fields": {"country": "HT"}, "model": "embargo.country", "pk": 96}, {"fields": {"country": "HM"}, "model": "embargo.country", "pk": 97}, {"fields": {"country": "VA"}, "model": "embargo.country", "pk": 98}, {"fields": {"country": "HN"}, "model": "embargo.country", "pk": 99}, {"fields": {"country": "HK"}, "model": "embargo.country", "pk": 100}, {"fields": {"country": "HU"}, "model": "embargo.country", "pk": 101}, {"fields": {"country": "IS"}, "model": "embargo.country", "pk": 102}, {"fields": {"country": "IN"}, "model": "embargo.country", "pk": 103}, {"fields": {"country": "ID"}, "model": "embargo.country", "pk": 104}, {"fields": {"country": "IR"}, "model": "embargo.country", "pk": 105}, {"fields": {"country": "IQ"}, "model": "embargo.country", "pk": 106}, {"fields": {"country": "IE"}, "model": "embargo.country", "pk": 107}, {"fields": {"country": "IM"}, "model": "embargo.country", "pk": 108}, {"fields": {"country": "IL"}, "model": "embargo.country", "pk": 109}, {"fields": {"country": "IT"}, "model": "embargo.country", "pk": 110}, {"fields": {"country": "JM"}, "model": "embargo.country", "pk": 111}, {"fields": {"country": "JP"}, "model": "embargo.country", "pk": 112}, {"fields": {"country": "JE"}, "model": "embargo.country", "pk": 113}, {"fields": {"country": "JO"}, "model": "embargo.country", "pk": 114}, {"fields": {"country": "KZ"}, "model": "embargo.country", "pk": 115}, {"fields": {"country": "KE"}, "model": "embargo.country", "pk": 116}, {"fields": {"country": "KI"}, "model": "embargo.country", "pk": 117}, {"fields": {"country": "KW"}, "model": "embargo.country", "pk": 118}, {"fields": {"country": "KG"}, "model": "embargo.country", "pk": 119}, {"fields": {"country": "LA"}, "model": "embargo.country", "pk": 120}, {"fields": {"country": "LV"}, "model": "embargo.country", "pk": 121}, {"fields": {"country": "LB"}, "model": "embargo.country", "pk": 122}, {"fields": {"country": "LS"}, "model": "embargo.country", "pk": 123}, {"fields": {"country": "LR"}, "model": "embargo.country", "pk": 124}, {"fields": {"country": "LY"}, "model": "embargo.country", "pk": 125}, {"fields": {"country": "LI"}, "model": "embargo.country", "pk": 126}, {"fields": {"country": "LT"}, "model": "embargo.country", "pk": 127}, {"fields": {"country": "LU"}, "model": "embargo.country", "pk": 128}, {"fields": {"country": "MO"}, "model": "embargo.country", "pk": 129}, {"fields": {"country": "MK"}, "model": "embargo.country", "pk": 130}, {"fields": {"country": "MG"}, "model": "embargo.country", "pk": 131}, {"fields": {"country": "MW"}, "model": "embargo.country", "pk": 132}, {"fields": {"country": "MY"}, "model": "embargo.country", "pk": 133}, {"fields": {"country": "MV"}, "model": "embargo.country", "pk": 134}, {"fields": {"country": "ML"}, "model": "embargo.country", "pk": 135}, {"fields": {"country": "MT"}, "model": "embargo.country", "pk": 136}, {"fields": {"country": "MH"}, "model": "embargo.country", "pk": 137}, {"fields": {"country": "MQ"}, "model": "embargo.country", "pk": 138}, {"fields": {"country": "MR"}, "model": "embargo.country", "pk": 139}, {"fields": {"country": "MU"}, "model": "embargo.country", "pk": 140}, {"fields": {"country": "YT"}, "model": "embargo.country", "pk": 141}, {"fields": {"country": "MX"}, "model": "embargo.country", "pk": 142}, {"fields": {"country": "FM"}, "model": "embargo.country", "pk": 143}, {"fields": {"country": "MD"}, "model": "embargo.country", "pk": 144}, {"fields": {"country": "MC"}, "model": "embargo.country", "pk": 145}, {"fields": {"country": "MN"}, "model": "embargo.country", "pk": 146}, {"fields": {"country": "ME"}, "model": "embargo.country", "pk": 147}, {"fields": {"country": "MS"}, "model": "embargo.country", "pk": 148}, {"fields": {"country": "MA"}, "model": "embargo.country", "pk": 149}, {"fields": {"country": "MZ"}, "model": "embargo.country", "pk": 150}, {"fields": {"country": "MM"}, "model": "embargo.country", "pk": 151}, {"fields": {"country": "NA"}, "model": "embargo.country", "pk": 152}, {"fields": {"country": "NR"}, "model": "embargo.country", "pk": 153}, {"fields": {"country": "NP"}, "model": "embargo.country", "pk": 154}, {"fields": {"country": "NL"}, "model": "embargo.country", "pk": 155}, {"fields": {"country": "NC"}, "model": "embargo.country", "pk": 156}, {"fields": {"country": "NZ"}, "model": "embargo.country", "pk": 157}, {"fields": {"country": "NI"}, "model": "embargo.country", "pk": 158}, {"fields": {"country": "NE"}, "model": "embargo.country", "pk": 159}, {"fields": {"country": "NG"}, "model": "embargo.country", "pk": 160}, {"fields": {"country": "NU"}, "model": "embargo.country", "pk": 161}, {"fields": {"country": "NF"}, "model": "embargo.country", "pk": 162}, {"fields": {"country": "KP"}, "model": "embargo.country", "pk": 163}, {"fields": {"country": "MP"}, "model": "embargo.country", "pk": 164}, {"fields": {"country": "NO"}, "model": "embargo.country", "pk": 165}, {"fields": {"country": "OM"}, "model": "embargo.country", "pk": 166}, {"fields": {"country": "PK"}, "model": "embargo.country", "pk": 167}, {"fields": {"country": "PW"}, "model": "embargo.country", "pk": 168}, {"fields": {"country": "PS"}, "model": "embargo.country", "pk": 169}, {"fields": {"country": "PA"}, "model": "embargo.country", "pk": 170}, {"fields": {"country": "PG"}, "model": "embargo.country", "pk": 171}, {"fields": {"country": "PY"}, "model": "embargo.country", "pk": 172}, {"fields": {"country": "PE"}, "model": "embargo.country", "pk": 173}, {"fields": {"country": "PH"}, "model": "embargo.country", "pk": 174}, {"fields": {"country": "PN"}, "model": "embargo.country", "pk": 175}, {"fields": {"country": "PL"}, "model": "embargo.country", "pk": 176}, {"fields": {"country": "PT"}, "model": "embargo.country", "pk": 177}, {"fields": {"country": "PR"}, "model": "embargo.country", "pk": 178}, {"fields": {"country": "QA"}, "model": "embargo.country", "pk": 179}, {"fields": {"country": "RE"}, "model": "embargo.country", "pk": 180}, {"fields": {"country": "RO"}, "model": "embargo.country", "pk": 181}, {"fields": {"country": "RU"}, "model": "embargo.country", "pk": 182}, {"fields": {"country": "RW"}, "model": "embargo.country", "pk": 183}, {"fields": {"country": "BL"}, "model": "embargo.country", "pk": 184}, {"fields": {"country": "SH"}, "model": "embargo.country", "pk": 185}, {"fields": {"country": "KN"}, "model": "embargo.country", "pk": 186}, {"fields": {"country": "LC"}, "model": "embargo.country", "pk": 187}, {"fields": {"country": "MF"}, "model": "embargo.country", "pk": 188}, {"fields": {"country": "PM"}, "model": "embargo.country", "pk": 189}, {"fields": {"country": "VC"}, "model": "embargo.country", "pk": 190}, {"fields": {"country": "WS"}, "model": "embargo.country", "pk": 191}, {"fields": {"country": "SM"}, "model": "embargo.country", "pk": 192}, {"fields": {"country": "ST"}, "model": "embargo.country", "pk": 193}, {"fields": {"country": "SA"}, "model": "embargo.country", "pk": 194}, {"fields": {"country": "SN"}, "model": "embargo.country", "pk": 195}, {"fields": {"country": "RS"}, "model": "embargo.country", "pk": 196}, {"fields": {"country": "SC"}, "model": "embargo.country", "pk": 197}, {"fields": {"country": "SL"}, "model": "embargo.country", "pk": 198}, {"fields": {"country": "SG"}, "model": "embargo.country", "pk": 199}, {"fields": {"country": "SX"}, "model": "embargo.country", "pk": 200}, {"fields": {"country": "SK"}, "model": "embargo.country", "pk": 201}, {"fields": {"country": "SI"}, "model": "embargo.country", "pk": 202}, {"fields": {"country": "SB"}, "model": "embargo.country", "pk": 203}, {"fields": {"country": "SO"}, "model": "embargo.country", "pk": 204}, {"fields": {"country": "ZA"}, "model": "embargo.country", "pk": 205}, {"fields": {"country": "GS"}, "model": "embargo.country", "pk": 206}, {"fields": {"country": "KR"}, "model": "embargo.country", "pk": 207}, {"fields": {"country": "SS"}, "model": "embargo.country", "pk": 208}, {"fields": {"country": "ES"}, "model": "embargo.country", "pk": 209}, {"fields": {"country": "LK"}, "model": "embargo.country", "pk": 210}, {"fields": {"country": "SD"}, "model": "embargo.country", "pk": 211}, {"fields": {"country": "SR"}, "model": "embargo.country", "pk": 212}, {"fields": {"country": "SJ"}, "model": "embargo.country", "pk": 213}, {"fields": {"country": "SZ"}, "model": "embargo.country", "pk": 214}, {"fields": {"country": "SE"}, "model": "embargo.country", "pk": 215}, {"fields": {"country": "CH"}, "model": "embargo.country", "pk": 216}, {"fields": {"country": "SY"}, "model": "embargo.country", "pk": 217}, {"fields": {"country": "TW"}, "model": "embargo.country", "pk": 218}, {"fields": {"country": "TJ"}, "model": "embargo.country", "pk": 219}, {"fields": {"country": "TZ"}, "model": "embargo.country", "pk": 220}, {"fields": {"country": "TH"}, "model": "embargo.country", "pk": 221}, {"fields": {"country": "TL"}, "model": "embargo.country", "pk": 222}, {"fields": {"country": "TG"}, "model": "embargo.country", "pk": 223}, {"fields": {"country": "TK"}, "model": "embargo.country", "pk": 224}, {"fields": {"country": "TO"}, "model": "embargo.country", "pk": 225}, {"fields": {"country": "TT"}, "model": "embargo.country", "pk": 226}, {"fields": {"country": "TN"}, "model": "embargo.country", "pk": 227}, {"fields": {"country": "TR"}, "model": "embargo.country", "pk": 228}, {"fields": {"country": "TM"}, "model": "embargo.country", "pk": 229}, {"fields": {"country": "TC"}, "model": "embargo.country", "pk": 230}, {"fields": {"country": "TV"}, "model": "embargo.country", "pk": 231}, {"fields": {"country": "UG"}, "model": "embargo.country", "pk": 232}, {"fields": {"country": "UA"}, "model": "embargo.country", "pk": 233}, {"fields": {"country": "AE"}, "model": "embargo.country", "pk": 234}, {"fields": {"country": "GB"}, "model": "embargo.country", "pk": 235}, {"fields": {"country": "UM"}, "model": "embargo.country", "pk": 236}, {"fields": {"country": "US"}, "model": "embargo.country", "pk": 237}, {"fields": {"country": "UY"}, "model": "embargo.country", "pk": 238}, {"fields": {"country": "UZ"}, "model": "embargo.country", "pk": 239}, {"fields": {"country": "VU"}, "model": "embargo.country", "pk": 240}, {"fields": {"country": "VE"}, "model": "embargo.country", "pk": 241}, {"fields": {"country": "VN"}, "model": "embargo.country", "pk": 242}, {"fields": {"country": "VG"}, "model": "embargo.country", "pk": 243}, {"fields": {"country": "VI"}, "model": "embargo.country", "pk": 244}, {"fields": {"country": "WF"}, "model": "embargo.country", "pk": 245}, {"fields": {"country": "EH"}, "model": "embargo.country", "pk": 246}, {"fields": {"country": "YE"}, "model": "embargo.country", "pk": 247}, {"fields": {"country": "ZM"}, "model": "embargo.country", "pk": 248}, {"fields": {"country": "ZW"}, "model": "embargo.country", "pk": 249}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"fulfills\"", "modified": "2016-02-29T17:58:32.233Z", "name": "fulfills", "created": "2016-02-29T17:58:32.232Z"}, "model": "milestones.milestonerelationshiptype", "pk": 1}, {"fields": {"active": true, "description": "Autogenerated milestone relationship type \"requires\"", "modified": "2016-02-29T17:58:32.234Z", "name": "requires", "created": "2016-02-29T17:58:32.234Z"}, "model": "milestones.milestonerelationshiptype", "pk": 2}, {"fields": {"profile_name": "desktop_mp4"}, "model": "edxval.profile", "pk": 1}, {"fields": {"profile_name": "desktop_webm"}, "model": "edxval.profile", "pk": 2}, {"fields": {"profile_name": "mobile_high"}, "model": "edxval.profile", "pk": 3}, {"fields": {"profile_name": "mobile_low"}, "model": "edxval.profile", "pk": 4}, {"fields": {"profile_name": "youtube"}, "model": "edxval.profile", "pk": 5}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 1}, "model": "auth.permission", "pk": 1}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 1}, "model": "auth.permission", "pk": 2}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 1}, "model": "auth.permission", "pk": 3}, {"fields": {"codename": "add_group", "name": "Can add group", "content_type": 2}, "model": "auth.permission", "pk": 4}, {"fields": {"codename": "change_group", "name": "Can change group", "content_type": 2}, "model": "auth.permission", "pk": 5}, {"fields": {"codename": "delete_group", "name": "Can delete group", "content_type": 2}, "model": "auth.permission", "pk": 6}, {"fields": {"codename": "add_user", "name": "Can add user", "content_type": 3}, "model": "auth.permission", "pk": 7}, {"fields": {"codename": "change_user", "name": "Can change user", "content_type": 3}, "model": "auth.permission", "pk": 8}, {"fields": {"codename": "delete_user", "name": "Can delete user", "content_type": 3}, "model": "auth.permission", "pk": 9}, {"fields": {"codename": "add_contenttype", "name": "Can add content type", "content_type": 4}, "model": "auth.permission", "pk": 10}, {"fields": {"codename": "change_contenttype", "name": "Can change content type", "content_type": 4}, "model": "auth.permission", "pk": 11}, {"fields": {"codename": "delete_contenttype", "name": "Can delete content type", "content_type": 4}, "model": "auth.permission", "pk": 12}, {"fields": {"codename": "add_session", "name": "Can add session", "content_type": 5}, "model": "auth.permission", "pk": 13}, {"fields": {"codename": "change_session", "name": "Can change session", "content_type": 5}, "model": "auth.permission", "pk": 14}, {"fields": {"codename": "delete_session", "name": "Can delete session", "content_type": 5}, "model": "auth.permission", "pk": 15}, {"fields": {"codename": "add_site", "name": "Can add site", "content_type": 6}, "model": "auth.permission", "pk": 16}, {"fields": {"codename": "change_site", "name": "Can change site", "content_type": 6}, "model": "auth.permission", "pk": 17}, {"fields": {"codename": "delete_site", "name": "Can delete site", "content_type": 6}, "model": "auth.permission", "pk": 18}, {"fields": {"codename": "add_taskmeta", "name": "Can add task state", "content_type": 7}, "model": "auth.permission", "pk": 19}, {"fields": {"codename": "change_taskmeta", "name": "Can change task state", "content_type": 7}, "model": "auth.permission", "pk": 20}, {"fields": {"codename": "delete_taskmeta", "name": "Can delete task state", "content_type": 7}, "model": "auth.permission", "pk": 21}, {"fields": {"codename": "add_tasksetmeta", "name": "Can add saved group result", "content_type": 8}, "model": "auth.permission", "pk": 22}, {"fields": {"codename": "change_tasksetmeta", "name": "Can change saved group result", "content_type": 8}, "model": "auth.permission", "pk": 23}, {"fields": {"codename": "delete_tasksetmeta", "name": "Can delete saved group result", "content_type": 8}, "model": "auth.permission", "pk": 24}, {"fields": {"codename": "add_intervalschedule", "name": "Can add interval", "content_type": 9}, "model": "auth.permission", "pk": 25}, {"fields": {"codename": "change_intervalschedule", "name": "Can change interval", "content_type": 9}, "model": "auth.permission", "pk": 26}, {"fields": {"codename": "delete_intervalschedule", "name": "Can delete interval", "content_type": 9}, "model": "auth.permission", "pk": 27}, {"fields": {"codename": "add_crontabschedule", "name": "Can add crontab", "content_type": 10}, "model": "auth.permission", "pk": 28}, {"fields": {"codename": "change_crontabschedule", "name": "Can change crontab", "content_type": 10}, "model": "auth.permission", "pk": 29}, {"fields": {"codename": "delete_crontabschedule", "name": "Can delete crontab", "content_type": 10}, "model": "auth.permission", "pk": 30}, {"fields": {"codename": "add_periodictasks", "name": "Can add periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 31}, {"fields": {"codename": "change_periodictasks", "name": "Can change periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 32}, {"fields": {"codename": "delete_periodictasks", "name": "Can delete periodic tasks", "content_type": 11}, "model": "auth.permission", "pk": 33}, {"fields": {"codename": "add_periodictask", "name": "Can add periodic task", "content_type": 12}, "model": "auth.permission", "pk": 34}, {"fields": {"codename": "change_periodictask", "name": "Can change periodic task", "content_type": 12}, "model": "auth.permission", "pk": 35}, {"fields": {"codename": "delete_periodictask", "name": "Can delete periodic task", "content_type": 12}, "model": "auth.permission", "pk": 36}, {"fields": {"codename": "add_workerstate", "name": "Can add worker", "content_type": 13}, "model": "auth.permission", "pk": 37}, {"fields": {"codename": "change_workerstate", "name": "Can change worker", "content_type": 13}, "model": "auth.permission", "pk": 38}, {"fields": {"codename": "delete_workerstate", "name": "Can delete worker", "content_type": 13}, "model": "auth.permission", "pk": 39}, {"fields": {"codename": "add_taskstate", "name": "Can add task", "content_type": 14}, "model": "auth.permission", "pk": 40}, {"fields": {"codename": "change_taskstate", "name": "Can change task", "content_type": 14}, "model": "auth.permission", "pk": 41}, {"fields": {"codename": "delete_taskstate", "name": "Can delete task", "content_type": 14}, "model": "auth.permission", "pk": 42}, {"fields": {"codename": "add_globalstatusmessage", "name": "Can add global status message", "content_type": 15}, "model": "auth.permission", "pk": 43}, {"fields": {"codename": "change_globalstatusmessage", "name": "Can change global status message", "content_type": 15}, "model": "auth.permission", "pk": 44}, {"fields": {"codename": "delete_globalstatusmessage", "name": "Can delete global status message", "content_type": 15}, "model": "auth.permission", "pk": 45}, {"fields": {"codename": "add_coursemessage", "name": "Can add course message", "content_type": 16}, "model": "auth.permission", "pk": 46}, {"fields": {"codename": "change_coursemessage", "name": "Can change course message", "content_type": 16}, "model": "auth.permission", "pk": 47}, {"fields": {"codename": "delete_coursemessage", "name": "Can delete course message", "content_type": 16}, "model": "auth.permission", "pk": 48}, {"fields": {"codename": "add_assetbaseurlconfig", "name": "Can add asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 49}, {"fields": {"codename": "change_assetbaseurlconfig", "name": "Can change asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 50}, {"fields": {"codename": "delete_assetbaseurlconfig", "name": "Can delete asset base url config", "content_type": 17}, "model": "auth.permission", "pk": 51}, {"fields": {"codename": "add_assetexcludedextensionsconfig", "name": "Can add asset excluded extensions config", "content_type": 18}, "model": "auth.permission", "pk": 52}, {"fields": {"codename": "change_assetexcludedextensionsconfig", "name": "Can change asset excluded extensions config", "content_type": 18}, "model": "auth.permission", "pk": 53}, {"fields": {"codename": "delete_assetexcludedextensionsconfig", "name": "Can delete asset excluded extensions config", "content_type": 18}, "model": "auth.permission", "pk": 54}, {"fields": {"codename": "add_courseassetcachettlconfig", "name": "Can add course asset cache ttl config", "content_type": 19}, "model": "auth.permission", "pk": 55}, {"fields": {"codename": "change_courseassetcachettlconfig", "name": "Can change course asset cache ttl config", "content_type": 19}, "model": "auth.permission", "pk": 56}, {"fields": {"codename": "delete_courseassetcachettlconfig", "name": "Can delete course asset cache ttl config", "content_type": 19}, "model": "auth.permission", "pk": 57}, {"fields": {"codename": "add_studentmodule", "name": "Can add student module", "content_type": 20}, "model": "auth.permission", "pk": 58}, {"fields": {"codename": "change_studentmodule", "name": "Can change student module", "content_type": 20}, "model": "auth.permission", "pk": 59}, {"fields": {"codename": "delete_studentmodule", "name": "Can delete student module", "content_type": 20}, "model": "auth.permission", "pk": 60}, {"fields": {"codename": "add_studentmodulehistory", "name": "Can add student module history", "content_type": 21}, "model": "auth.permission", "pk": 61}, {"fields": {"codename": "change_studentmodulehistory", "name": "Can change student module history", "content_type": 21}, "model": "auth.permission", "pk": 62}, {"fields": {"codename": "delete_studentmodulehistory", "name": "Can delete student module history", "content_type": 21}, "model": "auth.permission", "pk": 63}, {"fields": {"codename": "add_xmoduleuserstatesummaryfield", "name": "Can add x module user state summary field", "content_type": 22}, "model": "auth.permission", "pk": 64}, {"fields": {"codename": "change_xmoduleuserstatesummaryfield", "name": "Can change x module user state summary field", "content_type": 22}, "model": "auth.permission", "pk": 65}, {"fields": {"codename": "delete_xmoduleuserstatesummaryfield", "name": "Can delete x module user state summary field", "content_type": 22}, "model": "auth.permission", "pk": 66}, {"fields": {"codename": "add_xmodulestudentprefsfield", "name": "Can add x module student prefs field", "content_type": 23}, "model": "auth.permission", "pk": 67}, {"fields": {"codename": "change_xmodulestudentprefsfield", "name": "Can change x module student prefs field", "content_type": 23}, "model": "auth.permission", "pk": 68}, {"fields": {"codename": "delete_xmodulestudentprefsfield", "name": "Can delete x module student prefs field", "content_type": 23}, "model": "auth.permission", "pk": 69}, {"fields": {"codename": "add_xmodulestudentinfofield", "name": "Can add x module student info field", "content_type": 24}, "model": "auth.permission", "pk": 70}, {"fields": {"codename": "change_xmodulestudentinfofield", "name": "Can change x module student info field", "content_type": 24}, "model": "auth.permission", "pk": 71}, {"fields": {"codename": "delete_xmodulestudentinfofield", "name": "Can delete x module student info field", "content_type": 24}, "model": "auth.permission", "pk": 72}, {"fields": {"codename": "add_offlinecomputedgrade", "name": "Can add offline computed grade", "content_type": 25}, "model": "auth.permission", "pk": 73}, {"fields": {"codename": "change_offlinecomputedgrade", "name": "Can change offline computed grade", "content_type": 25}, "model": "auth.permission", "pk": 74}, {"fields": {"codename": "delete_offlinecomputedgrade", "name": "Can delete offline computed grade", "content_type": 25}, "model": "auth.permission", "pk": 75}, {"fields": {"codename": "add_offlinecomputedgradelog", "name": "Can add offline computed grade log", "content_type": 26}, "model": "auth.permission", "pk": 76}, {"fields": {"codename": "change_offlinecomputedgradelog", "name": "Can change offline computed grade log", "content_type": 26}, "model": "auth.permission", "pk": 77}, {"fields": {"codename": "delete_offlinecomputedgradelog", "name": "Can delete offline computed grade log", "content_type": 26}, "model": "auth.permission", "pk": 78}, {"fields": {"codename": "add_studentfieldoverride", "name": "Can add student field override", "content_type": 27}, "model": "auth.permission", "pk": 79}, {"fields": {"codename": "change_studentfieldoverride", "name": "Can change student field override", "content_type": 27}, "model": "auth.permission", "pk": 80}, {"fields": {"codename": "delete_studentfieldoverride", "name": "Can delete student field override", "content_type": 27}, "model": "auth.permission", "pk": 81}, {"fields": {"codename": "add_anonymoususerid", "name": "Can add anonymous user id", "content_type": 28}, "model": "auth.permission", "pk": 82}, {"fields": {"codename": "change_anonymoususerid", "name": "Can change anonymous user id", "content_type": 28}, "model": "auth.permission", "pk": 83}, {"fields": {"codename": "delete_anonymoususerid", "name": "Can delete anonymous user id", "content_type": 28}, "model": "auth.permission", "pk": 84}, {"fields": {"codename": "add_userstanding", "name": "Can add user standing", "content_type": 29}, "model": "auth.permission", "pk": 85}, {"fields": {"codename": "change_userstanding", "name": "Can change user standing", "content_type": 29}, "model": "auth.permission", "pk": 86}, {"fields": {"codename": "delete_userstanding", "name": "Can delete user standing", "content_type": 29}, "model": "auth.permission", "pk": 87}, {"fields": {"codename": "add_userprofile", "name": "Can add user profile", "content_type": 30}, "model": "auth.permission", "pk": 88}, {"fields": {"codename": "change_userprofile", "name": "Can change user profile", "content_type": 30}, "model": "auth.permission", "pk": 89}, {"fields": {"codename": "delete_userprofile", "name": "Can delete user profile", "content_type": 30}, "model": "auth.permission", "pk": 90}, {"fields": {"codename": "add_usersignupsource", "name": "Can add user signup source", "content_type": 31}, "model": "auth.permission", "pk": 91}, {"fields": {"codename": "change_usersignupsource", "name": "Can change user signup source", "content_type": 31}, "model": "auth.permission", "pk": 92}, {"fields": {"codename": "delete_usersignupsource", "name": "Can delete user signup source", "content_type": 31}, "model": "auth.permission", "pk": 93}, {"fields": {"codename": "add_usertestgroup", "name": "Can add user test group", "content_type": 32}, "model": "auth.permission", "pk": 94}, {"fields": {"codename": "change_usertestgroup", "name": "Can change user test group", "content_type": 32}, "model": "auth.permission", "pk": 95}, {"fields": {"codename": "delete_usertestgroup", "name": "Can delete user test group", "content_type": 32}, "model": "auth.permission", "pk": 96}, {"fields": {"codename": "add_registration", "name": "Can add registration", "content_type": 33}, "model": "auth.permission", "pk": 97}, {"fields": {"codename": "change_registration", "name": "Can change registration", "content_type": 33}, "model": "auth.permission", "pk": 98}, {"fields": {"codename": "delete_registration", "name": "Can delete registration", "content_type": 33}, "model": "auth.permission", "pk": 99}, {"fields": {"codename": "add_pendingnamechange", "name": "Can add pending name change", "content_type": 34}, "model": "auth.permission", "pk": 100}, {"fields": {"codename": "change_pendingnamechange", "name": "Can change pending name change", "content_type": 34}, "model": "auth.permission", "pk": 101}, {"fields": {"codename": "delete_pendingnamechange", "name": "Can delete pending name change", "content_type": 34}, "model": "auth.permission", "pk": 102}, {"fields": {"codename": "add_pendingemailchange", "name": "Can add pending email change", "content_type": 35}, "model": "auth.permission", "pk": 103}, {"fields": {"codename": "change_pendingemailchange", "name": "Can change pending email change", "content_type": 35}, "model": "auth.permission", "pk": 104}, {"fields": {"codename": "delete_pendingemailchange", "name": "Can delete pending email change", "content_type": 35}, "model": "auth.permission", "pk": 105}, {"fields": {"codename": "add_passwordhistory", "name": "Can add password history", "content_type": 36}, "model": "auth.permission", "pk": 106}, {"fields": {"codename": "change_passwordhistory", "name": "Can change password history", "content_type": 36}, "model": "auth.permission", "pk": 107}, {"fields": {"codename": "delete_passwordhistory", "name": "Can delete password history", "content_type": 36}, "model": "auth.permission", "pk": 108}, {"fields": {"codename": "add_loginfailures", "name": "Can add login failures", "content_type": 37}, "model": "auth.permission", "pk": 109}, {"fields": {"codename": "change_loginfailures", "name": "Can change login failures", "content_type": 37}, "model": "auth.permission", "pk": 110}, {"fields": {"codename": "delete_loginfailures", "name": "Can delete login failures", "content_type": 37}, "model": "auth.permission", "pk": 111}, {"fields": {"codename": "add_historicalcourseenrollment", "name": "Can add historical course enrollment", "content_type": 38}, "model": "auth.permission", "pk": 112}, {"fields": {"codename": "change_historicalcourseenrollment", "name": "Can change historical course enrollment", "content_type": 38}, "model": "auth.permission", "pk": 113}, {"fields": {"codename": "delete_historicalcourseenrollment", "name": "Can delete historical course enrollment", "content_type": 38}, "model": "auth.permission", "pk": 114}, {"fields": {"codename": "add_courseenrollment", "name": "Can add course enrollment", "content_type": 39}, "model": "auth.permission", "pk": 115}, {"fields": {"codename": "change_courseenrollment", "name": "Can change course enrollment", "content_type": 39}, "model": "auth.permission", "pk": 116}, {"fields": {"codename": "delete_courseenrollment", "name": "Can delete course enrollment", "content_type": 39}, "model": "auth.permission", "pk": 117}, {"fields": {"codename": "add_manualenrollmentaudit", "name": "Can add manual enrollment audit", "content_type": 40}, "model": "auth.permission", "pk": 118}, {"fields": {"codename": "change_manualenrollmentaudit", "name": "Can change manual enrollment audit", "content_type": 40}, "model": "auth.permission", "pk": 119}, {"fields": {"codename": "delete_manualenrollmentaudit", "name": "Can delete manual enrollment audit", "content_type": 40}, "model": "auth.permission", "pk": 120}, {"fields": {"codename": "add_courseenrollmentallowed", "name": "Can add course enrollment allowed", "content_type": 41}, "model": "auth.permission", "pk": 121}, {"fields": {"codename": "change_courseenrollmentallowed", "name": "Can change course enrollment allowed", "content_type": 41}, "model": "auth.permission", "pk": 122}, {"fields": {"codename": "delete_courseenrollmentallowed", "name": "Can delete course enrollment allowed", "content_type": 41}, "model": "auth.permission", "pk": 123}, {"fields": {"codename": "add_courseaccessrole", "name": "Can add course access role", "content_type": 42}, "model": "auth.permission", "pk": 124}, {"fields": {"codename": "change_courseaccessrole", "name": "Can change course access role", "content_type": 42}, "model": "auth.permission", "pk": 125}, {"fields": {"codename": "delete_courseaccessrole", "name": "Can delete course access role", "content_type": 42}, "model": "auth.permission", "pk": 126}, {"fields": {"codename": "add_dashboardconfiguration", "name": "Can add dashboard configuration", "content_type": 43}, "model": "auth.permission", "pk": 127}, {"fields": {"codename": "change_dashboardconfiguration", "name": "Can change dashboard configuration", "content_type": 43}, "model": "auth.permission", "pk": 128}, {"fields": {"codename": "delete_dashboardconfiguration", "name": "Can delete dashboard configuration", "content_type": 43}, "model": "auth.permission", "pk": 129}, {"fields": {"codename": "add_linkedinaddtoprofileconfiguration", "name": "Can add linked in add to profile configuration", "content_type": 44}, "model": "auth.permission", "pk": 130}, {"fields": {"codename": "change_linkedinaddtoprofileconfiguration", "name": "Can change linked in add to profile configuration", "content_type": 44}, "model": "auth.permission", "pk": 131}, {"fields": {"codename": "delete_linkedinaddtoprofileconfiguration", "name": "Can delete linked in add to profile configuration", "content_type": 44}, "model": "auth.permission", "pk": 132}, {"fields": {"codename": "add_entranceexamconfiguration", "name": "Can add entrance exam configuration", "content_type": 45}, "model": "auth.permission", "pk": 133}, {"fields": {"codename": "change_entranceexamconfiguration", "name": "Can change entrance exam configuration", "content_type": 45}, "model": "auth.permission", "pk": 134}, {"fields": {"codename": "delete_entranceexamconfiguration", "name": "Can delete entrance exam configuration", "content_type": 45}, "model": "auth.permission", "pk": 135}, {"fields": {"codename": "add_languageproficiency", "name": "Can add language proficiency", "content_type": 46}, "model": "auth.permission", "pk": 136}, {"fields": {"codename": "change_languageproficiency", "name": "Can change language proficiency", "content_type": 46}, "model": "auth.permission", "pk": 137}, {"fields": {"codename": "delete_languageproficiency", "name": "Can delete language proficiency", "content_type": 46}, "model": "auth.permission", "pk": 138}, {"fields": {"codename": "add_courseenrollmentattribute", "name": "Can add course enrollment attribute", "content_type": 47}, "model": "auth.permission", "pk": 139}, {"fields": {"codename": "change_courseenrollmentattribute", "name": "Can change course enrollment attribute", "content_type": 47}, "model": "auth.permission", "pk": 140}, {"fields": {"codename": "delete_courseenrollmentattribute", "name": "Can delete course enrollment attribute", "content_type": 47}, "model": "auth.permission", "pk": 141}, {"fields": {"codename": "add_enrollmentrefundconfiguration", "name": "Can add enrollment refund configuration", "content_type": 48}, "model": "auth.permission", "pk": 142}, {"fields": {"codename": "change_enrollmentrefundconfiguration", "name": "Can change enrollment refund configuration", "content_type": 48}, "model": "auth.permission", "pk": 143}, {"fields": {"codename": "delete_enrollmentrefundconfiguration", "name": "Can delete enrollment refund configuration", "content_type": 48}, "model": "auth.permission", "pk": 144}, {"fields": {"codename": "add_trackinglog", "name": "Can add tracking log", "content_type": 49}, "model": "auth.permission", "pk": 145}, {"fields": {"codename": "change_trackinglog", "name": "Can change tracking log", "content_type": 49}, "model": "auth.permission", "pk": 146}, {"fields": {"codename": "delete_trackinglog", "name": "Can delete tracking log", "content_type": 49}, "model": "auth.permission", "pk": 147}, {"fields": {"codename": "add_ratelimitconfiguration", "name": "Can add rate limit configuration", "content_type": 50}, "model": "auth.permission", "pk": 148}, {"fields": {"codename": "change_ratelimitconfiguration", "name": "Can change rate limit configuration", "content_type": 50}, "model": "auth.permission", "pk": 149}, {"fields": {"codename": "delete_ratelimitconfiguration", "name": "Can delete rate limit configuration", "content_type": 50}, "model": "auth.permission", "pk": 150}, {"fields": {"codename": "add_certificatewhitelist", "name": "Can add certificate whitelist", "content_type": 51}, "model": "auth.permission", "pk": 151}, {"fields": {"codename": "change_certificatewhitelist", "name": "Can change certificate whitelist", "content_type": 51}, "model": "auth.permission", "pk": 152}, {"fields": {"codename": "delete_certificatewhitelist", "name": "Can delete certificate whitelist", "content_type": 51}, "model": "auth.permission", "pk": 153}, {"fields": {"codename": "add_generatedcertificate", "name": "Can add generated certificate", "content_type": 52}, "model": "auth.permission", "pk": 154}, {"fields": {"codename": "change_generatedcertificate", "name": "Can change generated certificate", "content_type": 52}, "model": "auth.permission", "pk": 155}, {"fields": {"codename": "delete_generatedcertificate", "name": "Can delete generated certificate", "content_type": 52}, "model": "auth.permission", "pk": 156}, {"fields": {"codename": "add_certificategenerationhistory", "name": "Can add certificate generation history", "content_type": 53}, "model": "auth.permission", "pk": 157}, {"fields": {"codename": "change_certificategenerationhistory", "name": "Can change certificate generation history", "content_type": 53}, "model": "auth.permission", "pk": 158}, {"fields": {"codename": "delete_certificategenerationhistory", "name": "Can delete certificate generation history", "content_type": 53}, "model": "auth.permission", "pk": 159}, {"fields": {"codename": "add_certificateinvalidation", "name": "Can add certificate invalidation", "content_type": 54}, "model": "auth.permission", "pk": 160}, {"fields": {"codename": "change_certificateinvalidation", "name": "Can change certificate invalidation", "content_type": 54}, "model": "auth.permission", "pk": 161}, {"fields": {"codename": "delete_certificateinvalidation", "name": "Can delete certificate invalidation", "content_type": 54}, "model": "auth.permission", "pk": 162}, {"fields": {"codename": "add_examplecertificateset", "name": "Can add example certificate set", "content_type": 55}, "model": "auth.permission", "pk": 163}, {"fields": {"codename": "change_examplecertificateset", "name": "Can change example certificate set", "content_type": 55}, "model": "auth.permission", "pk": 164}, {"fields": {"codename": "delete_examplecertificateset", "name": "Can delete example certificate set", "content_type": 55}, "model": "auth.permission", "pk": 165}, {"fields": {"codename": "add_examplecertificate", "name": "Can add example certificate", "content_type": 56}, "model": "auth.permission", "pk": 166}, {"fields": {"codename": "change_examplecertificate", "name": "Can change example certificate", "content_type": 56}, "model": "auth.permission", "pk": 167}, {"fields": {"codename": "delete_examplecertificate", "name": "Can delete example certificate", "content_type": 56}, "model": "auth.permission", "pk": 168}, {"fields": {"codename": "add_certificategenerationcoursesetting", "name": "Can add certificate generation course setting", "content_type": 57}, "model": "auth.permission", "pk": 169}, {"fields": {"codename": "change_certificategenerationcoursesetting", "name": "Can change certificate generation course setting", "content_type": 57}, "model": "auth.permission", "pk": 170}, {"fields": {"codename": "delete_certificategenerationcoursesetting", "name": "Can delete certificate generation course setting", "content_type": 57}, "model": "auth.permission", "pk": 171}, {"fields": {"codename": "add_certificategenerationconfiguration", "name": "Can add certificate generation configuration", "content_type": 58}, "model": "auth.permission", "pk": 172}, {"fields": {"codename": "change_certificategenerationconfiguration", "name": "Can change certificate generation configuration", "content_type": 58}, "model": "auth.permission", "pk": 173}, {"fields": {"codename": "delete_certificategenerationconfiguration", "name": "Can delete certificate generation configuration", "content_type": 58}, "model": "auth.permission", "pk": 174}, {"fields": {"codename": "add_certificatehtmlviewconfiguration", "name": "Can add certificate html view configuration", "content_type": 59}, "model": "auth.permission", "pk": 175}, {"fields": {"codename": "change_certificatehtmlviewconfiguration", "name": "Can change certificate html view configuration", "content_type": 59}, "model": "auth.permission", "pk": 176}, {"fields": {"codename": "delete_certificatehtmlviewconfiguration", "name": "Can delete certificate html view configuration", "content_type": 59}, "model": "auth.permission", "pk": 177}, {"fields": {"codename": "add_badgeassertion", "name": "Can add badge assertion", "content_type": 60}, "model": "auth.permission", "pk": 178}, {"fields": {"codename": "change_badgeassertion", "name": "Can change badge assertion", "content_type": 60}, "model": "auth.permission", "pk": 179}, {"fields": {"codename": "delete_badgeassertion", "name": "Can delete badge assertion", "content_type": 60}, "model": "auth.permission", "pk": 180}, {"fields": {"codename": "add_badgeimageconfiguration", "name": "Can add badge image configuration", "content_type": 61}, "model": "auth.permission", "pk": 181}, {"fields": {"codename": "change_badgeimageconfiguration", "name": "Can change badge image configuration", "content_type": 61}, "model": "auth.permission", "pk": 182}, {"fields": {"codename": "delete_badgeimageconfiguration", "name": "Can delete badge image configuration", "content_type": 61}, "model": "auth.permission", "pk": 183}, {"fields": {"codename": "add_certificatetemplate", "name": "Can add certificate template", "content_type": 62}, "model": "auth.permission", "pk": 184}, {"fields": {"codename": "change_certificatetemplate", "name": "Can change certificate template", "content_type": 62}, "model": "auth.permission", "pk": 185}, {"fields": {"codename": "delete_certificatetemplate", "name": "Can delete certificate template", "content_type": 62}, "model": "auth.permission", "pk": 186}, {"fields": {"codename": "add_certificatetemplateasset", "name": "Can add certificate template asset", "content_type": 63}, "model": "auth.permission", "pk": 187}, {"fields": {"codename": "change_certificatetemplateasset", "name": "Can change certificate template asset", "content_type": 63}, "model": "auth.permission", "pk": 188}, {"fields": {"codename": "delete_certificatetemplateasset", "name": "Can delete certificate template asset", "content_type": 63}, "model": "auth.permission", "pk": 189}, {"fields": {"codename": "add_instructortask", "name": "Can add instructor task", "content_type": 64}, "model": "auth.permission", "pk": 190}, {"fields": {"codename": "change_instructortask", "name": "Can change instructor task", "content_type": 64}, "model": "auth.permission", "pk": 191}, {"fields": {"codename": "delete_instructortask", "name": "Can delete instructor task", "content_type": 64}, "model": "auth.permission", "pk": 192}, {"fields": {"codename": "add_courseusergroup", "name": "Can add course user group", "content_type": 65}, "model": "auth.permission", "pk": 193}, {"fields": {"codename": "change_courseusergroup", "name": "Can change course user group", "content_type": 65}, "model": "auth.permission", "pk": 194}, {"fields": {"codename": "delete_courseusergroup", "name": "Can delete course user group", "content_type": 65}, "model": "auth.permission", "pk": 195}, {"fields": {"codename": "add_cohortmembership", "name": "Can add cohort membership", "content_type": 66}, "model": "auth.permission", "pk": 196}, {"fields": {"codename": "change_cohortmembership", "name": "Can change cohort membership", "content_type": 66}, "model": "auth.permission", "pk": 197}, {"fields": {"codename": "delete_cohortmembership", "name": "Can delete cohort membership", "content_type": 66}, "model": "auth.permission", "pk": 198}, {"fields": {"codename": "add_courseusergrouppartitiongroup", "name": "Can add course user group partition group", "content_type": 67}, "model": "auth.permission", "pk": 199}, {"fields": {"codename": "change_courseusergrouppartitiongroup", "name": "Can change course user group partition group", "content_type": 67}, "model": "auth.permission", "pk": 200}, {"fields": {"codename": "delete_courseusergrouppartitiongroup", "name": "Can delete course user group partition group", "content_type": 67}, "model": "auth.permission", "pk": 201}, {"fields": {"codename": "add_coursecohortssettings", "name": "Can add course cohorts settings", "content_type": 68}, "model": "auth.permission", "pk": 202}, {"fields": {"codename": "change_coursecohortssettings", "name": "Can change course cohorts settings", "content_type": 68}, "model": "auth.permission", "pk": 203}, {"fields": {"codename": "delete_coursecohortssettings", "name": "Can delete course cohorts settings", "content_type": 68}, "model": "auth.permission", "pk": 204}, {"fields": {"codename": "add_coursecohort", "name": "Can add course cohort", "content_type": 69}, "model": "auth.permission", "pk": 205}, {"fields": {"codename": "change_coursecohort", "name": "Can change course cohort", "content_type": 69}, "model": "auth.permission", "pk": 206}, {"fields": {"codename": "delete_coursecohort", "name": "Can delete course cohort", "content_type": 69}, "model": "auth.permission", "pk": 207}, {"fields": {"codename": "add_courseemail", "name": "Can add course email", "content_type": 70}, "model": "auth.permission", "pk": 208}, {"fields": {"codename": "change_courseemail", "name": "Can change course email", "content_type": 70}, "model": "auth.permission", "pk": 209}, {"fields": {"codename": "delete_courseemail", "name": "Can delete course email", "content_type": 70}, "model": "auth.permission", "pk": 210}, {"fields": {"codename": "add_optout", "name": "Can add optout", "content_type": 71}, "model": "auth.permission", "pk": 211}, {"fields": {"codename": "change_optout", "name": "Can change optout", "content_type": 71}, "model": "auth.permission", "pk": 212}, {"fields": {"codename": "delete_optout", "name": "Can delete optout", "content_type": 71}, "model": "auth.permission", "pk": 213}, {"fields": {"codename": "add_courseemailtemplate", "name": "Can add course email template", "content_type": 72}, "model": "auth.permission", "pk": 214}, {"fields": {"codename": "change_courseemailtemplate", "name": "Can change course email template", "content_type": 72}, "model": "auth.permission", "pk": 215}, {"fields": {"codename": "delete_courseemailtemplate", "name": "Can delete course email template", "content_type": 72}, "model": "auth.permission", "pk": 216}, {"fields": {"codename": "add_courseauthorization", "name": "Can add course authorization", "content_type": 73}, "model": "auth.permission", "pk": 217}, {"fields": {"codename": "change_courseauthorization", "name": "Can change course authorization", "content_type": 73}, "model": "auth.permission", "pk": 218}, {"fields": {"codename": "delete_courseauthorization", "name": "Can delete course authorization", "content_type": 73}, "model": "auth.permission", "pk": 219}, {"fields": {"codename": "add_brandinginfoconfig", "name": "Can add branding info config", "content_type": 74}, "model": "auth.permission", "pk": 220}, {"fields": {"codename": "change_brandinginfoconfig", "name": "Can change branding info config", "content_type": 74}, "model": "auth.permission", "pk": 221}, {"fields": {"codename": "delete_brandinginfoconfig", "name": "Can delete branding info config", "content_type": 74}, "model": "auth.permission", "pk": 222}, {"fields": {"codename": "add_brandingapiconfig", "name": "Can add branding api config", "content_type": 75}, "model": "auth.permission", "pk": 223}, {"fields": {"codename": "change_brandingapiconfig", "name": "Can change branding api config", "content_type": 75}, "model": "auth.permission", "pk": 224}, {"fields": {"codename": "delete_brandingapiconfig", "name": "Can delete branding api config", "content_type": 75}, "model": "auth.permission", "pk": 225}, {"fields": {"codename": "add_externalauthmap", "name": "Can add external auth map", "content_type": 76}, "model": "auth.permission", "pk": 226}, {"fields": {"codename": "change_externalauthmap", "name": "Can change external auth map", "content_type": 76}, "model": "auth.permission", "pk": 227}, {"fields": {"codename": "delete_externalauthmap", "name": "Can delete external auth map", "content_type": 76}, "model": "auth.permission", "pk": 228}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 77}, "model": "auth.permission", "pk": 229}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 77}, "model": "auth.permission", "pk": 230}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 77}, "model": "auth.permission", "pk": 231}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 78}, "model": "auth.permission", "pk": 232}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 78}, "model": "auth.permission", "pk": 233}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 78}, "model": "auth.permission", "pk": 234}, {"fields": {"codename": "add_useropenid", "name": "Can add user open id", "content_type": 79}, "model": "auth.permission", "pk": 235}, {"fields": {"codename": "change_useropenid", "name": "Can change user open id", "content_type": 79}, "model": "auth.permission", "pk": 236}, {"fields": {"codename": "delete_useropenid", "name": "Can delete user open id", "content_type": 79}, "model": "auth.permission", "pk": 237}, {"fields": {"codename": "account_verified", "name": "The OpenID has been verified", "content_type": 79}, "model": "auth.permission", "pk": 238}, {"fields": {"codename": "add_client", "name": "Can add client", "content_type": 80}, "model": "auth.permission", "pk": 239}, {"fields": {"codename": "change_client", "name": "Can change client", "content_type": 80}, "model": "auth.permission", "pk": 240}, {"fields": {"codename": "delete_client", "name": "Can delete client", "content_type": 80}, "model": "auth.permission", "pk": 241}, {"fields": {"codename": "add_grant", "name": "Can add grant", "content_type": 81}, "model": "auth.permission", "pk": 242}, {"fields": {"codename": "change_grant", "name": "Can change grant", "content_type": 81}, "model": "auth.permission", "pk": 243}, {"fields": {"codename": "delete_grant", "name": "Can delete grant", "content_type": 81}, "model": "auth.permission", "pk": 244}, {"fields": {"codename": "add_accesstoken", "name": "Can add access token", "content_type": 82}, "model": "auth.permission", "pk": 245}, {"fields": {"codename": "change_accesstoken", "name": "Can change access token", "content_type": 82}, "model": "auth.permission", "pk": 246}, {"fields": {"codename": "delete_accesstoken", "name": "Can delete access token", "content_type": 82}, "model": "auth.permission", "pk": 247}, {"fields": {"codename": "add_refreshtoken", "name": "Can add refresh token", "content_type": 83}, "model": "auth.permission", "pk": 248}, {"fields": {"codename": "change_refreshtoken", "name": "Can change refresh token", "content_type": 83}, "model": "auth.permission", "pk": 249}, {"fields": {"codename": "delete_refreshtoken", "name": "Can delete refresh token", "content_type": 83}, "model": "auth.permission", "pk": 250}, {"fields": {"codename": "add_trustedclient", "name": "Can add trusted client", "content_type": 84}, "model": "auth.permission", "pk": 251}, {"fields": {"codename": "change_trustedclient", "name": "Can change trusted client", "content_type": 84}, "model": "auth.permission", "pk": 252}, {"fields": {"codename": "delete_trustedclient", "name": "Can delete trusted client", "content_type": 84}, "model": "auth.permission", "pk": 253}, {"fields": {"codename": "add_oauth2providerconfig", "name": "Can add Provider Configuration (OAuth)", "content_type": 85}, "model": "auth.permission", "pk": 254}, {"fields": {"codename": "change_oauth2providerconfig", "name": "Can change Provider Configuration (OAuth)", "content_type": 85}, "model": "auth.permission", "pk": 255}, {"fields": {"codename": "delete_oauth2providerconfig", "name": "Can delete Provider Configuration (OAuth)", "content_type": 85}, "model": "auth.permission", "pk": 256}, {"fields": {"codename": "add_samlproviderconfig", "name": "Can add Provider Configuration (SAML IdP)", "content_type": 86}, "model": "auth.permission", "pk": 257}, {"fields": {"codename": "change_samlproviderconfig", "name": "Can change Provider Configuration (SAML IdP)", "content_type": 86}, "model": "auth.permission", "pk": 258}, {"fields": {"codename": "delete_samlproviderconfig", "name": "Can delete Provider Configuration (SAML IdP)", "content_type": 86}, "model": "auth.permission", "pk": 259}, {"fields": {"codename": "add_samlconfiguration", "name": "Can add SAML Configuration", "content_type": 87}, "model": "auth.permission", "pk": 260}, {"fields": {"codename": "change_samlconfiguration", "name": "Can change SAML Configuration", "content_type": 87}, "model": "auth.permission", "pk": 261}, {"fields": {"codename": "delete_samlconfiguration", "name": "Can delete SAML Configuration", "content_type": 87}, "model": "auth.permission", "pk": 262}, {"fields": {"codename": "add_samlproviderdata", "name": "Can add SAML Provider Data", "content_type": 88}, "model": "auth.permission", "pk": 263}, {"fields": {"codename": "change_samlproviderdata", "name": "Can change SAML Provider Data", "content_type": 88}, "model": "auth.permission", "pk": 264}, {"fields": {"codename": "delete_samlproviderdata", "name": "Can delete SAML Provider Data", "content_type": 88}, "model": "auth.permission", "pk": 265}, {"fields": {"codename": "add_ltiproviderconfig", "name": "Can add Provider Configuration (LTI)", "content_type": 89}, "model": "auth.permission", "pk": 266}, {"fields": {"codename": "change_ltiproviderconfig", "name": "Can change Provider Configuration (LTI)", "content_type": 89}, "model": "auth.permission", "pk": 267}, {"fields": {"codename": "delete_ltiproviderconfig", "name": "Can delete Provider Configuration (LTI)", "content_type": 89}, "model": "auth.permission", "pk": 268}, {"fields": {"codename": "add_providerapipermissions", "name": "Can add Provider API Permission", "content_type": 90}, "model": "auth.permission", "pk": 269}, {"fields": {"codename": "change_providerapipermissions", "name": "Can change Provider API Permission", "content_type": 90}, "model": "auth.permission", "pk": 270}, {"fields": {"codename": "delete_providerapipermissions", "name": "Can delete Provider API Permission", "content_type": 90}, "model": "auth.permission", "pk": 271}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 91}, "model": "auth.permission", "pk": 272}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 91}, "model": "auth.permission", "pk": 273}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 91}, "model": "auth.permission", "pk": 274}, {"fields": {"codename": "add_scope", "name": "Can add scope", "content_type": 92}, "model": "auth.permission", "pk": 275}, {"fields": {"codename": "change_scope", "name": "Can change scope", "content_type": 92}, "model": "auth.permission", "pk": 276}, {"fields": {"codename": "delete_scope", "name": "Can delete scope", "content_type": 92}, "model": "auth.permission", "pk": 277}, {"fields": {"codename": "add_resource", "name": "Can add resource", "content_type": 92}, "model": "auth.permission", "pk": 278}, {"fields": {"codename": "change_resource", "name": "Can change resource", "content_type": 92}, "model": "auth.permission", "pk": 279}, {"fields": {"codename": "delete_resource", "name": "Can delete resource", "content_type": 92}, "model": "auth.permission", "pk": 280}, {"fields": {"codename": "add_consumer", "name": "Can add consumer", "content_type": 93}, "model": "auth.permission", "pk": 281}, {"fields": {"codename": "change_consumer", "name": "Can change consumer", "content_type": 93}, "model": "auth.permission", "pk": 282}, {"fields": {"codename": "delete_consumer", "name": "Can delete consumer", "content_type": 93}, "model": "auth.permission", "pk": 283}, {"fields": {"codename": "add_token", "name": "Can add token", "content_type": 94}, "model": "auth.permission", "pk": 284}, {"fields": {"codename": "change_token", "name": "Can change token", "content_type": 94}, "model": "auth.permission", "pk": 285}, {"fields": {"codename": "delete_token", "name": "Can delete token", "content_type": 94}, "model": "auth.permission", "pk": 286}, {"fields": {"codename": "add_article", "name": "Can add article", "content_type": 96}, "model": "auth.permission", "pk": 287}, {"fields": {"codename": "change_article", "name": "Can change article", "content_type": 96}, "model": "auth.permission", "pk": 288}, {"fields": {"codename": "delete_article", "name": "Can delete article", "content_type": 96}, "model": "auth.permission", "pk": 289}, {"fields": {"codename": "moderate", "name": "Can edit all articles and lock/unlock/restore", "content_type": 96}, "model": "auth.permission", "pk": 290}, {"fields": {"codename": "assign", "name": "Can change ownership of any article", "content_type": 96}, "model": "auth.permission", "pk": 291}, {"fields": {"codename": "grant", "name": "Can assign permissions to other users", "content_type": 96}, "model": "auth.permission", "pk": 292}, {"fields": {"codename": "add_articleforobject", "name": "Can add Article for object", "content_type": 97}, "model": "auth.permission", "pk": 293}, {"fields": {"codename": "change_articleforobject", "name": "Can change Article for object", "content_type": 97}, "model": "auth.permission", "pk": 294}, {"fields": {"codename": "delete_articleforobject", "name": "Can delete Article for object", "content_type": 97}, "model": "auth.permission", "pk": 295}, {"fields": {"codename": "add_articlerevision", "name": "Can add article revision", "content_type": 98}, "model": "auth.permission", "pk": 296}, {"fields": {"codename": "change_articlerevision", "name": "Can change article revision", "content_type": 98}, "model": "auth.permission", "pk": 297}, {"fields": {"codename": "delete_articlerevision", "name": "Can delete article revision", "content_type": 98}, "model": "auth.permission", "pk": 298}, {"fields": {"codename": "add_urlpath", "name": "Can add URL path", "content_type": 99}, "model": "auth.permission", "pk": 299}, {"fields": {"codename": "change_urlpath", "name": "Can change URL path", "content_type": 99}, "model": "auth.permission", "pk": 300}, {"fields": {"codename": "delete_urlpath", "name": "Can delete URL path", "content_type": 99}, "model": "auth.permission", "pk": 301}, {"fields": {"codename": "add_articleplugin", "name": "Can add article plugin", "content_type": 100}, "model": "auth.permission", "pk": 302}, {"fields": {"codename": "change_articleplugin", "name": "Can change article plugin", "content_type": 100}, "model": "auth.permission", "pk": 303}, {"fields": {"codename": "delete_articleplugin", "name": "Can delete article plugin", "content_type": 100}, "model": "auth.permission", "pk": 304}, {"fields": {"codename": "add_reusableplugin", "name": "Can add reusable plugin", "content_type": 101}, "model": "auth.permission", "pk": 305}, {"fields": {"codename": "change_reusableplugin", "name": "Can change reusable plugin", "content_type": 101}, "model": "auth.permission", "pk": 306}, {"fields": {"codename": "delete_reusableplugin", "name": "Can delete reusable plugin", "content_type": 101}, "model": "auth.permission", "pk": 307}, {"fields": {"codename": "add_simpleplugin", "name": "Can add simple plugin", "content_type": 102}, "model": "auth.permission", "pk": 308}, {"fields": {"codename": "change_simpleplugin", "name": "Can change simple plugin", "content_type": 102}, "model": "auth.permission", "pk": 309}, {"fields": {"codename": "delete_simpleplugin", "name": "Can delete simple plugin", "content_type": 102}, "model": "auth.permission", "pk": 310}, {"fields": {"codename": "add_revisionplugin", "name": "Can add revision plugin", "content_type": 103}, "model": "auth.permission", "pk": 311}, {"fields": {"codename": "change_revisionplugin", "name": "Can change revision plugin", "content_type": 103}, "model": "auth.permission", "pk": 312}, {"fields": {"codename": "delete_revisionplugin", "name": "Can delete revision plugin", "content_type": 103}, "model": "auth.permission", "pk": 313}, {"fields": {"codename": "add_revisionpluginrevision", "name": "Can add revision plugin revision", "content_type": 104}, "model": "auth.permission", "pk": 314}, {"fields": {"codename": "change_revisionpluginrevision", "name": "Can change revision plugin revision", "content_type": 104}, "model": "auth.permission", "pk": 315}, {"fields": {"codename": "delete_revisionpluginrevision", "name": "Can delete revision plugin revision", "content_type": 104}, "model": "auth.permission", "pk": 316}, {"fields": {"codename": "add_image", "name": "Can add image", "content_type": 105}, "model": "auth.permission", "pk": 317}, {"fields": {"codename": "change_image", "name": "Can change image", "content_type": 105}, "model": "auth.permission", "pk": 318}, {"fields": {"codename": "delete_image", "name": "Can delete image", "content_type": 105}, "model": "auth.permission", "pk": 319}, {"fields": {"codename": "add_imagerevision", "name": "Can add image revision", "content_type": 106}, "model": "auth.permission", "pk": 320}, {"fields": {"codename": "change_imagerevision", "name": "Can change image revision", "content_type": 106}, "model": "auth.permission", "pk": 321}, {"fields": {"codename": "delete_imagerevision", "name": "Can delete image revision", "content_type": 106}, "model": "auth.permission", "pk": 322}, {"fields": {"codename": "add_attachment", "name": "Can add attachment", "content_type": 107}, "model": "auth.permission", "pk": 323}, {"fields": {"codename": "change_attachment", "name": "Can change attachment", "content_type": 107}, "model": "auth.permission", "pk": 324}, {"fields": {"codename": "delete_attachment", "name": "Can delete attachment", "content_type": 107}, "model": "auth.permission", "pk": 325}, {"fields": {"codename": "add_attachmentrevision", "name": "Can add attachment revision", "content_type": 108}, "model": "auth.permission", "pk": 326}, {"fields": {"codename": "change_attachmentrevision", "name": "Can change attachment revision", "content_type": 108}, "model": "auth.permission", "pk": 327}, {"fields": {"codename": "delete_attachmentrevision", "name": "Can delete attachment revision", "content_type": 108}, "model": "auth.permission", "pk": 328}, {"fields": {"codename": "add_notificationtype", "name": "Can add type", "content_type": 109}, "model": "auth.permission", "pk": 329}, {"fields": {"codename": "change_notificationtype", "name": "Can change type", "content_type": 109}, "model": "auth.permission", "pk": 330}, {"fields": {"codename": "delete_notificationtype", "name": "Can delete type", "content_type": 109}, "model": "auth.permission", "pk": 331}, {"fields": {"codename": "add_settings", "name": "Can add settings", "content_type": 110}, "model": "auth.permission", "pk": 332}, {"fields": {"codename": "change_settings", "name": "Can change settings", "content_type": 110}, "model": "auth.permission", "pk": 333}, {"fields": {"codename": "delete_settings", "name": "Can delete settings", "content_type": 110}, "model": "auth.permission", "pk": 334}, {"fields": {"codename": "add_subscription", "name": "Can add subscription", "content_type": 111}, "model": "auth.permission", "pk": 335}, {"fields": {"codename": "change_subscription", "name": "Can change subscription", "content_type": 111}, "model": "auth.permission", "pk": 336}, {"fields": {"codename": "delete_subscription", "name": "Can delete subscription", "content_type": 111}, "model": "auth.permission", "pk": 337}, {"fields": {"codename": "add_notification", "name": "Can add notification", "content_type": 112}, "model": "auth.permission", "pk": 338}, {"fields": {"codename": "change_notification", "name": "Can change notification", "content_type": 112}, "model": "auth.permission", "pk": 339}, {"fields": {"codename": "delete_notification", "name": "Can delete notification", "content_type": 112}, "model": "auth.permission", "pk": 340}, {"fields": {"codename": "add_logentry", "name": "Can add log entry", "content_type": 113}, "model": "auth.permission", "pk": 341}, {"fields": {"codename": "change_logentry", "name": "Can change log entry", "content_type": 113}, "model": "auth.permission", "pk": 342}, {"fields": {"codename": "delete_logentry", "name": "Can delete log entry", "content_type": 113}, "model": "auth.permission", "pk": 343}, {"fields": {"codename": "add_role", "name": "Can add role", "content_type": 114}, "model": "auth.permission", "pk": 344}, {"fields": {"codename": "change_role", "name": "Can change role", "content_type": 114}, "model": "auth.permission", "pk": 345}, {"fields": {"codename": "delete_role", "name": "Can delete role", "content_type": 114}, "model": "auth.permission", "pk": 346}, {"fields": {"codename": "add_permission", "name": "Can add permission", "content_type": 115}, "model": "auth.permission", "pk": 347}, {"fields": {"codename": "change_permission", "name": "Can change permission", "content_type": 115}, "model": "auth.permission", "pk": 348}, {"fields": {"codename": "delete_permission", "name": "Can delete permission", "content_type": 115}, "model": "auth.permission", "pk": 349}, {"fields": {"codename": "add_note", "name": "Can add note", "content_type": 116}, "model": "auth.permission", "pk": 350}, {"fields": {"codename": "change_note", "name": "Can change note", "content_type": 116}, "model": "auth.permission", "pk": 351}, {"fields": {"codename": "delete_note", "name": "Can delete note", "content_type": 116}, "model": "auth.permission", "pk": 352}, {"fields": {"codename": "add_splashconfig", "name": "Can add splash config", "content_type": 117}, "model": "auth.permission", "pk": 353}, {"fields": {"codename": "change_splashconfig", "name": "Can change splash config", "content_type": 117}, "model": "auth.permission", "pk": 354}, {"fields": {"codename": "delete_splashconfig", "name": "Can delete splash config", "content_type": 117}, "model": "auth.permission", "pk": 355}, {"fields": {"codename": "add_userpreference", "name": "Can add user preference", "content_type": 118}, "model": "auth.permission", "pk": 356}, {"fields": {"codename": "change_userpreference", "name": "Can change user preference", "content_type": 118}, "model": "auth.permission", "pk": 357}, {"fields": {"codename": "delete_userpreference", "name": "Can delete user preference", "content_type": 118}, "model": "auth.permission", "pk": 358}, {"fields": {"codename": "add_usercoursetag", "name": "Can add user course tag", "content_type": 119}, "model": "auth.permission", "pk": 359}, {"fields": {"codename": "change_usercoursetag", "name": "Can change user course tag", "content_type": 119}, "model": "auth.permission", "pk": 360}, {"fields": {"codename": "delete_usercoursetag", "name": "Can delete user course tag", "content_type": 119}, "model": "auth.permission", "pk": 361}, {"fields": {"codename": "add_userorgtag", "name": "Can add user org tag", "content_type": 120}, "model": "auth.permission", "pk": 362}, {"fields": {"codename": "change_userorgtag", "name": "Can change user org tag", "content_type": 120}, "model": "auth.permission", "pk": 363}, {"fields": {"codename": "delete_userorgtag", "name": "Can delete user org tag", "content_type": 120}, "model": "auth.permission", "pk": 364}, {"fields": {"codename": "add_order", "name": "Can add order", "content_type": 121}, "model": "auth.permission", "pk": 365}, {"fields": {"codename": "change_order", "name": "Can change order", "content_type": 121}, "model": "auth.permission", "pk": 366}, {"fields": {"codename": "delete_order", "name": "Can delete order", "content_type": 121}, "model": "auth.permission", "pk": 367}, {"fields": {"codename": "add_orderitem", "name": "Can add order item", "content_type": 122}, "model": "auth.permission", "pk": 368}, {"fields": {"codename": "change_orderitem", "name": "Can change order item", "content_type": 122}, "model": "auth.permission", "pk": 369}, {"fields": {"codename": "delete_orderitem", "name": "Can delete order item", "content_type": 122}, "model": "auth.permission", "pk": 370}, {"fields": {"codename": "add_invoice", "name": "Can add invoice", "content_type": 123}, "model": "auth.permission", "pk": 371}, {"fields": {"codename": "change_invoice", "name": "Can change invoice", "content_type": 123}, "model": "auth.permission", "pk": 372}, {"fields": {"codename": "delete_invoice", "name": "Can delete invoice", "content_type": 123}, "model": "auth.permission", "pk": 373}, {"fields": {"codename": "add_invoicetransaction", "name": "Can add invoice transaction", "content_type": 124}, "model": "auth.permission", "pk": 374}, {"fields": {"codename": "change_invoicetransaction", "name": "Can change invoice transaction", "content_type": 124}, "model": "auth.permission", "pk": 375}, {"fields": {"codename": "delete_invoicetransaction", "name": "Can delete invoice transaction", "content_type": 124}, "model": "auth.permission", "pk": 376}, {"fields": {"codename": "add_invoiceitem", "name": "Can add invoice item", "content_type": 125}, "model": "auth.permission", "pk": 377}, {"fields": {"codename": "change_invoiceitem", "name": "Can change invoice item", "content_type": 125}, "model": "auth.permission", "pk": 378}, {"fields": {"codename": "delete_invoiceitem", "name": "Can delete invoice item", "content_type": 125}, "model": "auth.permission", "pk": 379}, {"fields": {"codename": "add_courseregistrationcodeinvoiceitem", "name": "Can add course registration code invoice item", "content_type": 126}, "model": "auth.permission", "pk": 380}, {"fields": {"codename": "change_courseregistrationcodeinvoiceitem", "name": "Can change course registration code invoice item", "content_type": 126}, "model": "auth.permission", "pk": 381}, {"fields": {"codename": "delete_courseregistrationcodeinvoiceitem", "name": "Can delete course registration code invoice item", "content_type": 126}, "model": "auth.permission", "pk": 382}, {"fields": {"codename": "add_invoicehistory", "name": "Can add invoice history", "content_type": 127}, "model": "auth.permission", "pk": 383}, {"fields": {"codename": "change_invoicehistory", "name": "Can change invoice history", "content_type": 127}, "model": "auth.permission", "pk": 384}, {"fields": {"codename": "delete_invoicehistory", "name": "Can delete invoice history", "content_type": 127}, "model": "auth.permission", "pk": 385}, {"fields": {"codename": "add_courseregistrationcode", "name": "Can add course registration code", "content_type": 128}, "model": "auth.permission", "pk": 386}, {"fields": {"codename": "change_courseregistrationcode", "name": "Can change course registration code", "content_type": 128}, "model": "auth.permission", "pk": 387}, {"fields": {"codename": "delete_courseregistrationcode", "name": "Can delete course registration code", "content_type": 128}, "model": "auth.permission", "pk": 388}, {"fields": {"codename": "add_registrationcoderedemption", "name": "Can add registration code redemption", "content_type": 129}, "model": "auth.permission", "pk": 389}, {"fields": {"codename": "change_registrationcoderedemption", "name": "Can change registration code redemption", "content_type": 129}, "model": "auth.permission", "pk": 390}, {"fields": {"codename": "delete_registrationcoderedemption", "name": "Can delete registration code redemption", "content_type": 129}, "model": "auth.permission", "pk": 391}, {"fields": {"codename": "add_coupon", "name": "Can add coupon", "content_type": 130}, "model": "auth.permission", "pk": 392}, {"fields": {"codename": "change_coupon", "name": "Can change coupon", "content_type": 130}, "model": "auth.permission", "pk": 393}, {"fields": {"codename": "delete_coupon", "name": "Can delete coupon", "content_type": 130}, "model": "auth.permission", "pk": 394}, {"fields": {"codename": "add_couponredemption", "name": "Can add coupon redemption", "content_type": 131}, "model": "auth.permission", "pk": 395}, {"fields": {"codename": "change_couponredemption", "name": "Can change coupon redemption", "content_type": 131}, "model": "auth.permission", "pk": 396}, {"fields": {"codename": "delete_couponredemption", "name": "Can delete coupon redemption", "content_type": 131}, "model": "auth.permission", "pk": 397}, {"fields": {"codename": "add_paidcourseregistration", "name": "Can add paid course registration", "content_type": 132}, "model": "auth.permission", "pk": 398}, {"fields": {"codename": "change_paidcourseregistration", "name": "Can change paid course registration", "content_type": 132}, "model": "auth.permission", "pk": 399}, {"fields": {"codename": "delete_paidcourseregistration", "name": "Can delete paid course registration", "content_type": 132}, "model": "auth.permission", "pk": 400}, {"fields": {"codename": "add_courseregcodeitem", "name": "Can add course reg code item", "content_type": 133}, "model": "auth.permission", "pk": 401}, {"fields": {"codename": "change_courseregcodeitem", "name": "Can change course reg code item", "content_type": 133}, "model": "auth.permission", "pk": 402}, {"fields": {"codename": "delete_courseregcodeitem", "name": "Can delete course reg code item", "content_type": 133}, "model": "auth.permission", "pk": 403}, {"fields": {"codename": "add_courseregcodeitemannotation", "name": "Can add course reg code item annotation", "content_type": 134}, "model": "auth.permission", "pk": 404}, {"fields": {"codename": "change_courseregcodeitemannotation", "name": "Can change course reg code item annotation", "content_type": 134}, "model": "auth.permission", "pk": 405}, {"fields": {"codename": "delete_courseregcodeitemannotation", "name": "Can delete course reg code item annotation", "content_type": 134}, "model": "auth.permission", "pk": 406}, {"fields": {"codename": "add_paidcourseregistrationannotation", "name": "Can add paid course registration annotation", "content_type": 135}, "model": "auth.permission", "pk": 407}, {"fields": {"codename": "change_paidcourseregistrationannotation", "name": "Can change paid course registration annotation", "content_type": 135}, "model": "auth.permission", "pk": 408}, {"fields": {"codename": "delete_paidcourseregistrationannotation", "name": "Can delete paid course registration annotation", "content_type": 135}, "model": "auth.permission", "pk": 409}, {"fields": {"codename": "add_certificateitem", "name": "Can add certificate item", "content_type": 136}, "model": "auth.permission", "pk": 410}, {"fields": {"codename": "change_certificateitem", "name": "Can change certificate item", "content_type": 136}, "model": "auth.permission", "pk": 411}, {"fields": {"codename": "delete_certificateitem", "name": "Can delete certificate item", "content_type": 136}, "model": "auth.permission", "pk": 412}, {"fields": {"codename": "add_donationconfiguration", "name": "Can add donation configuration", "content_type": 137}, "model": "auth.permission", "pk": 413}, {"fields": {"codename": "change_donationconfiguration", "name": "Can change donation configuration", "content_type": 137}, "model": "auth.permission", "pk": 414}, {"fields": {"codename": "delete_donationconfiguration", "name": "Can delete donation configuration", "content_type": 137}, "model": "auth.permission", "pk": 415}, {"fields": {"codename": "add_donation", "name": "Can add donation", "content_type": 138}, "model": "auth.permission", "pk": 416}, {"fields": {"codename": "change_donation", "name": "Can change donation", "content_type": 138}, "model": "auth.permission", "pk": 417}, {"fields": {"codename": "delete_donation", "name": "Can delete donation", "content_type": 138}, "model": "auth.permission", "pk": 418}, {"fields": {"codename": "add_coursemode", "name": "Can add course mode", "content_type": 139}, "model": "auth.permission", "pk": 419}, {"fields": {"codename": "change_coursemode", "name": "Can change course mode", "content_type": 139}, "model": "auth.permission", "pk": 420}, {"fields": {"codename": "delete_coursemode", "name": "Can delete course mode", "content_type": 139}, "model": "auth.permission", "pk": 421}, {"fields": {"codename": "add_coursemodesarchive", "name": "Can add course modes archive", "content_type": 140}, "model": "auth.permission", "pk": 422}, {"fields": {"codename": "change_coursemodesarchive", "name": "Can change course modes archive", "content_type": 140}, "model": "auth.permission", "pk": 423}, {"fields": {"codename": "delete_coursemodesarchive", "name": "Can delete course modes archive", "content_type": 140}, "model": "auth.permission", "pk": 424}, {"fields": {"codename": "add_coursemodeexpirationconfig", "name": "Can add course mode expiration config", "content_type": 141}, "model": "auth.permission", "pk": 425}, {"fields": {"codename": "change_coursemodeexpirationconfig", "name": "Can change course mode expiration config", "content_type": 141}, "model": "auth.permission", "pk": 426}, {"fields": {"codename": "delete_coursemodeexpirationconfig", "name": "Can delete course mode expiration config", "content_type": 141}, "model": "auth.permission", "pk": 427}, {"fields": {"codename": "add_softwaresecurephotoverification", "name": "Can add software secure photo verification", "content_type": 142}, "model": "auth.permission", "pk": 428}, {"fields": {"codename": "change_softwaresecurephotoverification", "name": "Can change software secure photo verification", "content_type": 142}, "model": "auth.permission", "pk": 429}, {"fields": {"codename": "delete_softwaresecurephotoverification", "name": "Can delete software secure photo verification", "content_type": 142}, "model": "auth.permission", "pk": 430}, {"fields": {"codename": "add_historicalverificationdeadline", "name": "Can add historical verification deadline", "content_type": 143}, "model": "auth.permission", "pk": 431}, {"fields": {"codename": "change_historicalverificationdeadline", "name": "Can change historical verification deadline", "content_type": 143}, "model": "auth.permission", "pk": 432}, {"fields": {"codename": "delete_historicalverificationdeadline", "name": "Can delete historical verification deadline", "content_type": 143}, "model": "auth.permission", "pk": 433}, {"fields": {"codename": "add_verificationdeadline", "name": "Can add verification deadline", "content_type": 144}, "model": "auth.permission", "pk": 434}, {"fields": {"codename": "change_verificationdeadline", "name": "Can change verification deadline", "content_type": 144}, "model": "auth.permission", "pk": 435}, {"fields": {"codename": "delete_verificationdeadline", "name": "Can delete verification deadline", "content_type": 144}, "model": "auth.permission", "pk": 436}, {"fields": {"codename": "add_verificationcheckpoint", "name": "Can add verification checkpoint", "content_type": 145}, "model": "auth.permission", "pk": 437}, {"fields": {"codename": "change_verificationcheckpoint", "name": "Can change verification checkpoint", "content_type": 145}, "model": "auth.permission", "pk": 438}, {"fields": {"codename": "delete_verificationcheckpoint", "name": "Can delete verification checkpoint", "content_type": 145}, "model": "auth.permission", "pk": 439}, {"fields": {"codename": "add_verificationstatus", "name": "Can add Verification Status", "content_type": 146}, "model": "auth.permission", "pk": 440}, {"fields": {"codename": "change_verificationstatus", "name": "Can change Verification Status", "content_type": 146}, "model": "auth.permission", "pk": 441}, {"fields": {"codename": "delete_verificationstatus", "name": "Can delete Verification Status", "content_type": 146}, "model": "auth.permission", "pk": 442}, {"fields": {"codename": "add_incoursereverificationconfiguration", "name": "Can add in course reverification configuration", "content_type": 147}, "model": "auth.permission", "pk": 443}, {"fields": {"codename": "change_incoursereverificationconfiguration", "name": "Can change in course reverification configuration", "content_type": 147}, "model": "auth.permission", "pk": 444}, {"fields": {"codename": "delete_incoursereverificationconfiguration", "name": "Can delete in course reverification configuration", "content_type": 147}, "model": "auth.permission", "pk": 445}, {"fields": {"codename": "add_icrvstatusemailsconfiguration", "name": "Can add icrv status emails configuration", "content_type": 148}, "model": "auth.permission", "pk": 446}, {"fields": {"codename": "change_icrvstatusemailsconfiguration", "name": "Can change icrv status emails configuration", "content_type": 148}, "model": "auth.permission", "pk": 447}, {"fields": {"codename": "delete_icrvstatusemailsconfiguration", "name": "Can delete icrv status emails configuration", "content_type": 148}, "model": "auth.permission", "pk": 448}, {"fields": {"codename": "add_skippedreverification", "name": "Can add skipped reverification", "content_type": 149}, "model": "auth.permission", "pk": 449}, {"fields": {"codename": "change_skippedreverification", "name": "Can change skipped reverification", "content_type": 149}, "model": "auth.permission", "pk": 450}, {"fields": {"codename": "delete_skippedreverification", "name": "Can delete skipped reverification", "content_type": 149}, "model": "auth.permission", "pk": 451}, {"fields": {"codename": "add_darklangconfig", "name": "Can add dark lang config", "content_type": 150}, "model": "auth.permission", "pk": 452}, {"fields": {"codename": "change_darklangconfig", "name": "Can change dark lang config", "content_type": 150}, "model": "auth.permission", "pk": 453}, {"fields": {"codename": "delete_darklangconfig", "name": "Can delete dark lang config", "content_type": 150}, "model": "auth.permission", "pk": 454}, {"fields": {"codename": "add_microsite", "name": "Can add microsite", "content_type": 151}, "model": "auth.permission", "pk": 455}, {"fields": {"codename": "change_microsite", "name": "Can change microsite", "content_type": 151}, "model": "auth.permission", "pk": 456}, {"fields": {"codename": "delete_microsite", "name": "Can delete microsite", "content_type": 151}, "model": "auth.permission", "pk": 457}, {"fields": {"codename": "add_micrositehistory", "name": "Can add microsite history", "content_type": 152}, "model": "auth.permission", "pk": 458}, {"fields": {"codename": "change_micrositehistory", "name": "Can change microsite history", "content_type": 152}, "model": "auth.permission", "pk": 459}, {"fields": {"codename": "delete_micrositehistory", "name": "Can delete microsite history", "content_type": 152}, "model": "auth.permission", "pk": 460}, {"fields": {"codename": "add_historicalmicrositeorganizationmapping", "name": "Can add historical microsite organization mapping", "content_type": 153}, "model": "auth.permission", "pk": 461}, {"fields": {"codename": "change_historicalmicrositeorganizationmapping", "name": "Can change historical microsite organization mapping", "content_type": 153}, "model": "auth.permission", "pk": 462}, {"fields": {"codename": "delete_historicalmicrositeorganizationmapping", "name": "Can delete historical microsite organization mapping", "content_type": 153}, "model": "auth.permission", "pk": 463}, {"fields": {"codename": "add_micrositeorganizationmapping", "name": "Can add microsite organization mapping", "content_type": 154}, "model": "auth.permission", "pk": 464}, {"fields": {"codename": "change_micrositeorganizationmapping", "name": "Can change microsite organization mapping", "content_type": 154}, "model": "auth.permission", "pk": 465}, {"fields": {"codename": "delete_micrositeorganizationmapping", "name": "Can delete microsite organization mapping", "content_type": 154}, "model": "auth.permission", "pk": 466}, {"fields": {"codename": "add_historicalmicrositetemplate", "name": "Can add historical microsite template", "content_type": 155}, "model": "auth.permission", "pk": 467}, {"fields": {"codename": "change_historicalmicrositetemplate", "name": "Can change historical microsite template", "content_type": 155}, "model": "auth.permission", "pk": 468}, {"fields": {"codename": "delete_historicalmicrositetemplate", "name": "Can delete historical microsite template", "content_type": 155}, "model": "auth.permission", "pk": 469}, {"fields": {"codename": "add_micrositetemplate", "name": "Can add microsite template", "content_type": 156}, "model": "auth.permission", "pk": 470}, {"fields": {"codename": "change_micrositetemplate", "name": "Can change microsite template", "content_type": 156}, "model": "auth.permission", "pk": 471}, {"fields": {"codename": "delete_micrositetemplate", "name": "Can delete microsite template", "content_type": 156}, "model": "auth.permission", "pk": 472}, {"fields": {"codename": "add_whitelistedrssurl", "name": "Can add whitelisted rss url", "content_type": 157}, "model": "auth.permission", "pk": 473}, {"fields": {"codename": "change_whitelistedrssurl", "name": "Can change whitelisted rss url", "content_type": 157}, "model": "auth.permission", "pk": 474}, {"fields": {"codename": "delete_whitelistedrssurl", "name": "Can delete whitelisted rss url", "content_type": 157}, "model": "auth.permission", "pk": 475}, {"fields": {"codename": "add_embargoedcourse", "name": "Can add embargoed course", "content_type": 158}, "model": "auth.permission", "pk": 476}, {"fields": {"codename": "change_embargoedcourse", "name": "Can change embargoed course", "content_type": 158}, "model": "auth.permission", "pk": 477}, {"fields": {"codename": "delete_embargoedcourse", "name": "Can delete embargoed course", "content_type": 158}, "model": "auth.permission", "pk": 478}, {"fields": {"codename": "add_embargoedstate", "name": "Can add embargoed state", "content_type": 159}, "model": "auth.permission", "pk": 479}, {"fields": {"codename": "change_embargoedstate", "name": "Can change embargoed state", "content_type": 159}, "model": "auth.permission", "pk": 480}, {"fields": {"codename": "delete_embargoedstate", "name": "Can delete embargoed state", "content_type": 159}, "model": "auth.permission", "pk": 481}, {"fields": {"codename": "add_restrictedcourse", "name": "Can add restricted course", "content_type": 160}, "model": "auth.permission", "pk": 482}, {"fields": {"codename": "change_restrictedcourse", "name": "Can change restricted course", "content_type": 160}, "model": "auth.permission", "pk": 483}, {"fields": {"codename": "delete_restrictedcourse", "name": "Can delete restricted course", "content_type": 160}, "model": "auth.permission", "pk": 484}, {"fields": {"codename": "add_country", "name": "Can add country", "content_type": 161}, "model": "auth.permission", "pk": 485}, {"fields": {"codename": "change_country", "name": "Can change country", "content_type": 161}, "model": "auth.permission", "pk": 486}, {"fields": {"codename": "delete_country", "name": "Can delete country", "content_type": 161}, "model": "auth.permission", "pk": 487}, {"fields": {"codename": "add_countryaccessrule", "name": "Can add country access rule", "content_type": 162}, "model": "auth.permission", "pk": 488}, {"fields": {"codename": "change_countryaccessrule", "name": "Can change country access rule", "content_type": 162}, "model": "auth.permission", "pk": 489}, {"fields": {"codename": "delete_countryaccessrule", "name": "Can delete country access rule", "content_type": 162}, "model": "auth.permission", "pk": 490}, {"fields": {"codename": "add_courseaccessrulehistory", "name": "Can add course access rule history", "content_type": 163}, "model": "auth.permission", "pk": 491}, {"fields": {"codename": "change_courseaccessrulehistory", "name": "Can change course access rule history", "content_type": 163}, "model": "auth.permission", "pk": 492}, {"fields": {"codename": "delete_courseaccessrulehistory", "name": "Can delete course access rule history", "content_type": 163}, "model": "auth.permission", "pk": 493}, {"fields": {"codename": "add_ipfilter", "name": "Can add ip filter", "content_type": 164}, "model": "auth.permission", "pk": 494}, {"fields": {"codename": "change_ipfilter", "name": "Can change ip filter", "content_type": 164}, "model": "auth.permission", "pk": 495}, {"fields": {"codename": "delete_ipfilter", "name": "Can delete ip filter", "content_type": 164}, "model": "auth.permission", "pk": 496}, {"fields": {"codename": "add_coursererunstate", "name": "Can add course rerun state", "content_type": 165}, "model": "auth.permission", "pk": 497}, {"fields": {"codename": "change_coursererunstate", "name": "Can change course rerun state", "content_type": 165}, "model": "auth.permission", "pk": 498}, {"fields": {"codename": "delete_coursererunstate", "name": "Can delete course rerun state", "content_type": 165}, "model": "auth.permission", "pk": 499}, {"fields": {"codename": "add_mobileapiconfig", "name": "Can add mobile api config", "content_type": 166}, "model": "auth.permission", "pk": 500}, {"fields": {"codename": "change_mobileapiconfig", "name": "Can change mobile api config", "content_type": 166}, "model": "auth.permission", "pk": 501}, {"fields": {"codename": "delete_mobileapiconfig", "name": "Can delete mobile api config", "content_type": 166}, "model": "auth.permission", "pk": 502}, {"fields": {"codename": "add_usersocialauth", "name": "Can add user social auth", "content_type": 167}, "model": "auth.permission", "pk": 503}, {"fields": {"codename": "change_usersocialauth", "name": "Can change user social auth", "content_type": 167}, "model": "auth.permission", "pk": 504}, {"fields": {"codename": "delete_usersocialauth", "name": "Can delete user social auth", "content_type": 167}, "model": "auth.permission", "pk": 505}, {"fields": {"codename": "add_nonce", "name": "Can add nonce", "content_type": 168}, "model": "auth.permission", "pk": 506}, {"fields": {"codename": "change_nonce", "name": "Can change nonce", "content_type": 168}, "model": "auth.permission", "pk": 507}, {"fields": {"codename": "delete_nonce", "name": "Can delete nonce", "content_type": 168}, "model": "auth.permission", "pk": 508}, {"fields": {"codename": "add_association", "name": "Can add association", "content_type": 169}, "model": "auth.permission", "pk": 509}, {"fields": {"codename": "change_association", "name": "Can change association", "content_type": 169}, "model": "auth.permission", "pk": 510}, {"fields": {"codename": "delete_association", "name": "Can delete association", "content_type": 169}, "model": "auth.permission", "pk": 511}, {"fields": {"codename": "add_code", "name": "Can add code", "content_type": 170}, "model": "auth.permission", "pk": 512}, {"fields": {"codename": "change_code", "name": "Can change code", "content_type": 170}, "model": "auth.permission", "pk": 513}, {"fields": {"codename": "delete_code", "name": "Can delete code", "content_type": 170}, "model": "auth.permission", "pk": 514}, {"fields": {"codename": "add_surveyform", "name": "Can add survey form", "content_type": 171}, "model": "auth.permission", "pk": 515}, {"fields": {"codename": "change_surveyform", "name": "Can change survey form", "content_type": 171}, "model": "auth.permission", "pk": 516}, {"fields": {"codename": "delete_surveyform", "name": "Can delete survey form", "content_type": 171}, "model": "auth.permission", "pk": 517}, {"fields": {"codename": "add_surveyanswer", "name": "Can add survey answer", "content_type": 172}, "model": "auth.permission", "pk": 518}, {"fields": {"codename": "change_surveyanswer", "name": "Can change survey answer", "content_type": 172}, "model": "auth.permission", "pk": 519}, {"fields": {"codename": "delete_surveyanswer", "name": "Can delete survey answer", "content_type": 172}, "model": "auth.permission", "pk": 520}, {"fields": {"codename": "add_xblockasidesconfig", "name": "Can add x block asides config", "content_type": 173}, "model": "auth.permission", "pk": 521}, {"fields": {"codename": "change_xblockasidesconfig", "name": "Can change x block asides config", "content_type": 173}, "model": "auth.permission", "pk": 522}, {"fields": {"codename": "delete_xblockasidesconfig", "name": "Can delete x block asides config", "content_type": 173}, "model": "auth.permission", "pk": 523}, {"fields": {"codename": "add_courseoverview", "name": "Can add course overview", "content_type": 174}, "model": "auth.permission", "pk": 524}, {"fields": {"codename": "change_courseoverview", "name": "Can change course overview", "content_type": 174}, "model": "auth.permission", "pk": 525}, {"fields": {"codename": "delete_courseoverview", "name": "Can delete course overview", "content_type": 174}, "model": "auth.permission", "pk": 526}, {"fields": {"codename": "add_courseoverviewtab", "name": "Can add course overview tab", "content_type": 175}, "model": "auth.permission", "pk": 527}, {"fields": {"codename": "change_courseoverviewtab", "name": "Can change course overview tab", "content_type": 175}, "model": "auth.permission", "pk": 528}, {"fields": {"codename": "delete_courseoverviewtab", "name": "Can delete course overview tab", "content_type": 175}, "model": "auth.permission", "pk": 529}, {"fields": {"codename": "add_courseoverviewimageset", "name": "Can add course overview image set", "content_type": 176}, "model": "auth.permission", "pk": 530}, {"fields": {"codename": "change_courseoverviewimageset", "name": "Can change course overview image set", "content_type": 176}, "model": "auth.permission", "pk": 531}, {"fields": {"codename": "delete_courseoverviewimageset", "name": "Can delete course overview image set", "content_type": 176}, "model": "auth.permission", "pk": 532}, {"fields": {"codename": "add_courseoverviewimageconfig", "name": "Can add course overview image config", "content_type": 177}, "model": "auth.permission", "pk": 533}, {"fields": {"codename": "change_courseoverviewimageconfig", "name": "Can change course overview image config", "content_type": 177}, "model": "auth.permission", "pk": 534}, {"fields": {"codename": "delete_courseoverviewimageconfig", "name": "Can delete course overview image config", "content_type": 177}, "model": "auth.permission", "pk": 535}, {"fields": {"codename": "add_coursestructure", "name": "Can add course structure", "content_type": 178}, "model": "auth.permission", "pk": 536}, {"fields": {"codename": "change_coursestructure", "name": "Can change course structure", "content_type": 178}, "model": "auth.permission", "pk": 537}, {"fields": {"codename": "delete_coursestructure", "name": "Can delete course structure", "content_type": 178}, "model": "auth.permission", "pk": 538}, {"fields": {"codename": "add_corsmodel", "name": "Can add cors model", "content_type": 179}, "model": "auth.permission", "pk": 539}, {"fields": {"codename": "change_corsmodel", "name": "Can change cors model", "content_type": 179}, "model": "auth.permission", "pk": 540}, {"fields": {"codename": "delete_corsmodel", "name": "Can delete cors model", "content_type": 179}, "model": "auth.permission", "pk": 541}, {"fields": {"codename": "add_xdomainproxyconfiguration", "name": "Can add x domain proxy configuration", "content_type": 180}, "model": "auth.permission", "pk": 542}, {"fields": {"codename": "change_xdomainproxyconfiguration", "name": "Can change x domain proxy configuration", "content_type": 180}, "model": "auth.permission", "pk": 543}, {"fields": {"codename": "delete_xdomainproxyconfiguration", "name": "Can delete x domain proxy configuration", "content_type": 180}, "model": "auth.permission", "pk": 544}, {"fields": {"codename": "add_commerceconfiguration", "name": "Can add commerce configuration", "content_type": 181}, "model": "auth.permission", "pk": 545}, {"fields": {"codename": "change_commerceconfiguration", "name": "Can change commerce configuration", "content_type": 181}, "model": "auth.permission", "pk": 546}, {"fields": {"codename": "delete_commerceconfiguration", "name": "Can delete commerce configuration", "content_type": 181}, "model": "auth.permission", "pk": 547}, {"fields": {"codename": "add_creditprovider", "name": "Can add credit provider", "content_type": 182}, "model": "auth.permission", "pk": 548}, {"fields": {"codename": "change_creditprovider", "name": "Can change credit provider", "content_type": 182}, "model": "auth.permission", "pk": 549}, {"fields": {"codename": "delete_creditprovider", "name": "Can delete credit provider", "content_type": 182}, "model": "auth.permission", "pk": 550}, {"fields": {"codename": "add_creditcourse", "name": "Can add credit course", "content_type": 183}, "model": "auth.permission", "pk": 551}, {"fields": {"codename": "change_creditcourse", "name": "Can change credit course", "content_type": 183}, "model": "auth.permission", "pk": 552}, {"fields": {"codename": "delete_creditcourse", "name": "Can delete credit course", "content_type": 183}, "model": "auth.permission", "pk": 553}, {"fields": {"codename": "add_creditrequirement", "name": "Can add credit requirement", "content_type": 184}, "model": "auth.permission", "pk": 554}, {"fields": {"codename": "change_creditrequirement", "name": "Can change credit requirement", "content_type": 184}, "model": "auth.permission", "pk": 555}, {"fields": {"codename": "delete_creditrequirement", "name": "Can delete credit requirement", "content_type": 184}, "model": "auth.permission", "pk": 556}, {"fields": {"codename": "add_historicalcreditrequirementstatus", "name": "Can add historical credit requirement status", "content_type": 185}, "model": "auth.permission", "pk": 557}, {"fields": {"codename": "change_historicalcreditrequirementstatus", "name": "Can change historical credit requirement status", "content_type": 185}, "model": "auth.permission", "pk": 558}, {"fields": {"codename": "delete_historicalcreditrequirementstatus", "name": "Can delete historical credit requirement status", "content_type": 185}, "model": "auth.permission", "pk": 559}, {"fields": {"codename": "add_creditrequirementstatus", "name": "Can add credit requirement status", "content_type": 186}, "model": "auth.permission", "pk": 560}, {"fields": {"codename": "change_creditrequirementstatus", "name": "Can change credit requirement status", "content_type": 186}, "model": "auth.permission", "pk": 561}, {"fields": {"codename": "delete_creditrequirementstatus", "name": "Can delete credit requirement status", "content_type": 186}, "model": "auth.permission", "pk": 562}, {"fields": {"codename": "add_crediteligibility", "name": "Can add credit eligibility", "content_type": 187}, "model": "auth.permission", "pk": 563}, {"fields": {"codename": "change_crediteligibility", "name": "Can change credit eligibility", "content_type": 187}, "model": "auth.permission", "pk": 564}, {"fields": {"codename": "delete_crediteligibility", "name": "Can delete credit eligibility", "content_type": 187}, "model": "auth.permission", "pk": 565}, {"fields": {"codename": "add_historicalcreditrequest", "name": "Can add historical credit request", "content_type": 188}, "model": "auth.permission", "pk": 566}, {"fields": {"codename": "change_historicalcreditrequest", "name": "Can change historical credit request", "content_type": 188}, "model": "auth.permission", "pk": 567}, {"fields": {"codename": "delete_historicalcreditrequest", "name": "Can delete historical credit request", "content_type": 188}, "model": "auth.permission", "pk": 568}, {"fields": {"codename": "add_creditrequest", "name": "Can add credit request", "content_type": 189}, "model": "auth.permission", "pk": 569}, {"fields": {"codename": "change_creditrequest", "name": "Can change credit request", "content_type": 189}, "model": "auth.permission", "pk": 570}, {"fields": {"codename": "delete_creditrequest", "name": "Can delete credit request", "content_type": 189}, "model": "auth.permission", "pk": 571}, {"fields": {"codename": "add_courseteam", "name": "Can add course team", "content_type": 190}, "model": "auth.permission", "pk": 572}, {"fields": {"codename": "change_courseteam", "name": "Can change course team", "content_type": 190}, "model": "auth.permission", "pk": 573}, {"fields": {"codename": "delete_courseteam", "name": "Can delete course team", "content_type": 190}, "model": "auth.permission", "pk": 574}, {"fields": {"codename": "add_courseteammembership", "name": "Can add course team membership", "content_type": 191}, "model": "auth.permission", "pk": 575}, {"fields": {"codename": "change_courseteammembership", "name": "Can change course team membership", "content_type": 191}, "model": "auth.permission", "pk": 576}, {"fields": {"codename": "delete_courseteammembership", "name": "Can delete course team membership", "content_type": 191}, "model": "auth.permission", "pk": 577}, {"fields": {"codename": "add_xblockdisableconfig", "name": "Can add x block disable config", "content_type": 192}, "model": "auth.permission", "pk": 578}, {"fields": {"codename": "change_xblockdisableconfig", "name": "Can change x block disable config", "content_type": 192}, "model": "auth.permission", "pk": 579}, {"fields": {"codename": "delete_xblockdisableconfig", "name": "Can delete x block disable config", "content_type": 192}, "model": "auth.permission", "pk": 580}, {"fields": {"codename": "add_bookmark", "name": "Can add bookmark", "content_type": 193}, "model": "auth.permission", "pk": 581}, {"fields": {"codename": "change_bookmark", "name": "Can change bookmark", "content_type": 193}, "model": "auth.permission", "pk": 582}, {"fields": {"codename": "delete_bookmark", "name": "Can delete bookmark", "content_type": 193}, "model": "auth.permission", "pk": 583}, {"fields": {"codename": "add_xblockcache", "name": "Can add x block cache", "content_type": 194}, "model": "auth.permission", "pk": 584}, {"fields": {"codename": "change_xblockcache", "name": "Can change x block cache", "content_type": 194}, "model": "auth.permission", "pk": 585}, {"fields": {"codename": "delete_xblockcache", "name": "Can delete x block cache", "content_type": 194}, "model": "auth.permission", "pk": 586}, {"fields": {"codename": "add_programsapiconfig", "name": "Can add programs api config", "content_type": 195}, "model": "auth.permission", "pk": 587}, {"fields": {"codename": "change_programsapiconfig", "name": "Can change programs api config", "content_type": 195}, "model": "auth.permission", "pk": 588}, {"fields": {"codename": "delete_programsapiconfig", "name": "Can delete programs api config", "content_type": 195}, "model": "auth.permission", "pk": 589}, {"fields": {"codename": "add_selfpacedconfiguration", "name": "Can add self paced configuration", "content_type": 196}, "model": "auth.permission", "pk": 590}, {"fields": {"codename": "change_selfpacedconfiguration", "name": "Can change self paced configuration", "content_type": 196}, "model": "auth.permission", "pk": 591}, {"fields": {"codename": "delete_selfpacedconfiguration", "name": "Can delete self paced configuration", "content_type": 196}, "model": "auth.permission", "pk": 592}, {"fields": {"codename": "add_kvstore", "name": "Can add kv store", "content_type": 197}, "model": "auth.permission", "pk": 593}, {"fields": {"codename": "change_kvstore", "name": "Can change kv store", "content_type": 197}, "model": "auth.permission", "pk": 594}, {"fields": {"codename": "delete_kvstore", "name": "Can delete kv store", "content_type": 197}, "model": "auth.permission", "pk": 595}, {"fields": {"codename": "add_credentialsapiconfig", "name": "Can add credentials api config", "content_type": 198}, "model": "auth.permission", "pk": 596}, {"fields": {"codename": "change_credentialsapiconfig", "name": "Can change credentials api config", "content_type": 198}, "model": "auth.permission", "pk": 597}, {"fields": {"codename": "delete_credentialsapiconfig", "name": "Can delete credentials api config", "content_type": 198}, "model": "auth.permission", "pk": 598}, {"fields": {"codename": "add_milestone", "name": "Can add milestone", "content_type": 199}, "model": "auth.permission", "pk": 599}, {"fields": {"codename": "change_milestone", "name": "Can change milestone", "content_type": 199}, "model": "auth.permission", "pk": 600}, {"fields": {"codename": "delete_milestone", "name": "Can delete milestone", "content_type": 199}, "model": "auth.permission", "pk": 601}, {"fields": {"codename": "add_milestonerelationshiptype", "name": "Can add milestone relationship type", "content_type": 200}, "model": "auth.permission", "pk": 602}, {"fields": {"codename": "change_milestonerelationshiptype", "name": "Can change milestone relationship type", "content_type": 200}, "model": "auth.permission", "pk": 603}, {"fields": {"codename": "delete_milestonerelationshiptype", "name": "Can delete milestone relationship type", "content_type": 200}, "model": "auth.permission", "pk": 604}, {"fields": {"codename": "add_coursemilestone", "name": "Can add course milestone", "content_type": 201}, "model": "auth.permission", "pk": 605}, {"fields": {"codename": "change_coursemilestone", "name": "Can change course milestone", "content_type": 201}, "model": "auth.permission", "pk": 606}, {"fields": {"codename": "delete_coursemilestone", "name": "Can delete course milestone", "content_type": 201}, "model": "auth.permission", "pk": 607}, {"fields": {"codename": "add_coursecontentmilestone", "name": "Can add course content milestone", "content_type": 202}, "model": "auth.permission", "pk": 608}, {"fields": {"codename": "change_coursecontentmilestone", "name": "Can change course content milestone", "content_type": 202}, "model": "auth.permission", "pk": 609}, {"fields": {"codename": "delete_coursecontentmilestone", "name": "Can delete course content milestone", "content_type": 202}, "model": "auth.permission", "pk": 610}, {"fields": {"codename": "add_usermilestone", "name": "Can add user milestone", "content_type": 203}, "model": "auth.permission", "pk": 611}, {"fields": {"codename": "change_usermilestone", "name": "Can change user milestone", "content_type": 203}, "model": "auth.permission", "pk": 612}, {"fields": {"codename": "delete_usermilestone", "name": "Can delete user milestone", "content_type": 203}, "model": "auth.permission", "pk": 613}, {"fields": {"codename": "add_studentitem", "name": "Can add student item", "content_type": 204}, "model": "auth.permission", "pk": 614}, {"fields": {"codename": "change_studentitem", "name": "Can change student item", "content_type": 204}, "model": "auth.permission", "pk": 615}, {"fields": {"codename": "delete_studentitem", "name": "Can delete student item", "content_type": 204}, "model": "auth.permission", "pk": 616}, {"fields": {"codename": "add_submission", "name": "Can add submission", "content_type": 205}, "model": "auth.permission", "pk": 617}, {"fields": {"codename": "change_submission", "name": "Can change submission", "content_type": 205}, "model": "auth.permission", "pk": 618}, {"fields": {"codename": "delete_submission", "name": "Can delete submission", "content_type": 205}, "model": "auth.permission", "pk": 619}, {"fields": {"codename": "add_score", "name": "Can add score", "content_type": 206}, "model": "auth.permission", "pk": 620}, {"fields": {"codename": "change_score", "name": "Can change score", "content_type": 206}, "model": "auth.permission", "pk": 621}, {"fields": {"codename": "delete_score", "name": "Can delete score", "content_type": 206}, "model": "auth.permission", "pk": 622}, {"fields": {"codename": "add_scoresummary", "name": "Can add score summary", "content_type": 207}, "model": "auth.permission", "pk": 623}, {"fields": {"codename": "change_scoresummary", "name": "Can change score summary", "content_type": 207}, "model": "auth.permission", "pk": 624}, {"fields": {"codename": "delete_scoresummary", "name": "Can delete score summary", "content_type": 207}, "model": "auth.permission", "pk": 625}, {"fields": {"codename": "add_scoreannotation", "name": "Can add score annotation", "content_type": 208}, "model": "auth.permission", "pk": 626}, {"fields": {"codename": "change_scoreannotation", "name": "Can change score annotation", "content_type": 208}, "model": "auth.permission", "pk": 627}, {"fields": {"codename": "delete_scoreannotation", "name": "Can delete score annotation", "content_type": 208}, "model": "auth.permission", "pk": 628}, {"fields": {"codename": "add_rubric", "name": "Can add rubric", "content_type": 209}, "model": "auth.permission", "pk": 629}, {"fields": {"codename": "change_rubric", "name": "Can change rubric", "content_type": 209}, "model": "auth.permission", "pk": 630}, {"fields": {"codename": "delete_rubric", "name": "Can delete rubric", "content_type": 209}, "model": "auth.permission", "pk": 631}, {"fields": {"codename": "add_criterion", "name": "Can add criterion", "content_type": 210}, "model": "auth.permission", "pk": 632}, {"fields": {"codename": "change_criterion", "name": "Can change criterion", "content_type": 210}, "model": "auth.permission", "pk": 633}, {"fields": {"codename": "delete_criterion", "name": "Can delete criterion", "content_type": 210}, "model": "auth.permission", "pk": 634}, {"fields": {"codename": "add_criterionoption", "name": "Can add criterion option", "content_type": 211}, "model": "auth.permission", "pk": 635}, {"fields": {"codename": "change_criterionoption", "name": "Can change criterion option", "content_type": 211}, "model": "auth.permission", "pk": 636}, {"fields": {"codename": "delete_criterionoption", "name": "Can delete criterion option", "content_type": 211}, "model": "auth.permission", "pk": 637}, {"fields": {"codename": "add_assessment", "name": "Can add assessment", "content_type": 212}, "model": "auth.permission", "pk": 638}, {"fields": {"codename": "change_assessment", "name": "Can change assessment", "content_type": 212}, "model": "auth.permission", "pk": 639}, {"fields": {"codename": "delete_assessment", "name": "Can delete assessment", "content_type": 212}, "model": "auth.permission", "pk": 640}, {"fields": {"codename": "add_assessmentpart", "name": "Can add assessment part", "content_type": 213}, "model": "auth.permission", "pk": 641}, {"fields": {"codename": "change_assessmentpart", "name": "Can change assessment part", "content_type": 213}, "model": "auth.permission", "pk": 642}, {"fields": {"codename": "delete_assessmentpart", "name": "Can delete assessment part", "content_type": 213}, "model": "auth.permission", "pk": 643}, {"fields": {"codename": "add_assessmentfeedbackoption", "name": "Can add assessment feedback option", "content_type": 214}, "model": "auth.permission", "pk": 644}, {"fields": {"codename": "change_assessmentfeedbackoption", "name": "Can change assessment feedback option", "content_type": 214}, "model": "auth.permission", "pk": 645}, {"fields": {"codename": "delete_assessmentfeedbackoption", "name": "Can delete assessment feedback option", "content_type": 214}, "model": "auth.permission", "pk": 646}, {"fields": {"codename": "add_assessmentfeedback", "name": "Can add assessment feedback", "content_type": 215}, "model": "auth.permission", "pk": 647}, {"fields": {"codename": "change_assessmentfeedback", "name": "Can change assessment feedback", "content_type": 215}, "model": "auth.permission", "pk": 648}, {"fields": {"codename": "delete_assessmentfeedback", "name": "Can delete assessment feedback", "content_type": 215}, "model": "auth.permission", "pk": 649}, {"fields": {"codename": "add_peerworkflow", "name": "Can add peer workflow", "content_type": 216}, "model": "auth.permission", "pk": 650}, {"fields": {"codename": "change_peerworkflow", "name": "Can change peer workflow", "content_type": 216}, "model": "auth.permission", "pk": 651}, {"fields": {"codename": "delete_peerworkflow", "name": "Can delete peer workflow", "content_type": 216}, "model": "auth.permission", "pk": 652}, {"fields": {"codename": "add_peerworkflowitem", "name": "Can add peer workflow item", "content_type": 217}, "model": "auth.permission", "pk": 653}, {"fields": {"codename": "change_peerworkflowitem", "name": "Can change peer workflow item", "content_type": 217}, "model": "auth.permission", "pk": 654}, {"fields": {"codename": "delete_peerworkflowitem", "name": "Can delete peer workflow item", "content_type": 217}, "model": "auth.permission", "pk": 655}, {"fields": {"codename": "add_trainingexample", "name": "Can add training example", "content_type": 218}, "model": "auth.permission", "pk": 656}, {"fields": {"codename": "change_trainingexample", "name": "Can change training example", "content_type": 218}, "model": "auth.permission", "pk": 657}, {"fields": {"codename": "delete_trainingexample", "name": "Can delete training example", "content_type": 218}, "model": "auth.permission", "pk": 658}, {"fields": {"codename": "add_studenttrainingworkflow", "name": "Can add student training workflow", "content_type": 219}, "model": "auth.permission", "pk": 659}, {"fields": {"codename": "change_studenttrainingworkflow", "name": "Can change student training workflow", "content_type": 219}, "model": "auth.permission", "pk": 660}, {"fields": {"codename": "delete_studenttrainingworkflow", "name": "Can delete student training workflow", "content_type": 219}, "model": "auth.permission", "pk": 661}, {"fields": {"codename": "add_studenttrainingworkflowitem", "name": "Can add student training workflow item", "content_type": 220}, "model": "auth.permission", "pk": 662}, {"fields": {"codename": "change_studenttrainingworkflowitem", "name": "Can change student training workflow item", "content_type": 220}, "model": "auth.permission", "pk": 663}, {"fields": {"codename": "delete_studenttrainingworkflowitem", "name": "Can delete student training workflow item", "content_type": 220}, "model": "auth.permission", "pk": 664}, {"fields": {"codename": "add_aiclassifierset", "name": "Can add ai classifier set", "content_type": 221}, "model": "auth.permission", "pk": 665}, {"fields": {"codename": "change_aiclassifierset", "name": "Can change ai classifier set", "content_type": 221}, "model": "auth.permission", "pk": 666}, {"fields": {"codename": "delete_aiclassifierset", "name": "Can delete ai classifier set", "content_type": 221}, "model": "auth.permission", "pk": 667}, {"fields": {"codename": "add_aiclassifier", "name": "Can add ai classifier", "content_type": 222}, "model": "auth.permission", "pk": 668}, {"fields": {"codename": "change_aiclassifier", "name": "Can change ai classifier", "content_type": 222}, "model": "auth.permission", "pk": 669}, {"fields": {"codename": "delete_aiclassifier", "name": "Can delete ai classifier", "content_type": 222}, "model": "auth.permission", "pk": 670}, {"fields": {"codename": "add_aitrainingworkflow", "name": "Can add ai training workflow", "content_type": 223}, "model": "auth.permission", "pk": 671}, {"fields": {"codename": "change_aitrainingworkflow", "name": "Can change ai training workflow", "content_type": 223}, "model": "auth.permission", "pk": 672}, {"fields": {"codename": "delete_aitrainingworkflow", "name": "Can delete ai training workflow", "content_type": 223}, "model": "auth.permission", "pk": 673}, {"fields": {"codename": "add_aigradingworkflow", "name": "Can add ai grading workflow", "content_type": 224}, "model": "auth.permission", "pk": 674}, {"fields": {"codename": "change_aigradingworkflow", "name": "Can change ai grading workflow", "content_type": 224}, "model": "auth.permission", "pk": 675}, {"fields": {"codename": "delete_aigradingworkflow", "name": "Can delete ai grading workflow", "content_type": 224}, "model": "auth.permission", "pk": 676}, {"fields": {"codename": "add_staffworkflow", "name": "Can add staff workflow", "content_type": 225}, "model": "auth.permission", "pk": 677}, {"fields": {"codename": "change_staffworkflow", "name": "Can change staff workflow", "content_type": 225}, "model": "auth.permission", "pk": 678}, {"fields": {"codename": "delete_staffworkflow", "name": "Can delete staff workflow", "content_type": 225}, "model": "auth.permission", "pk": 679}, {"fields": {"codename": "add_assessmentworkflow", "name": "Can add assessment workflow", "content_type": 226}, "model": "auth.permission", "pk": 680}, {"fields": {"codename": "change_assessmentworkflow", "name": "Can change assessment workflow", "content_type": 226}, "model": "auth.permission", "pk": 681}, {"fields": {"codename": "delete_assessmentworkflow", "name": "Can delete assessment workflow", "content_type": 226}, "model": "auth.permission", "pk": 682}, {"fields": {"codename": "add_assessmentworkflowstep", "name": "Can add assessment workflow step", "content_type": 227}, "model": "auth.permission", "pk": 683}, {"fields": {"codename": "change_assessmentworkflowstep", "name": "Can change assessment workflow step", "content_type": 227}, "model": "auth.permission", "pk": 684}, {"fields": {"codename": "delete_assessmentworkflowstep", "name": "Can delete assessment workflow step", "content_type": 227}, "model": "auth.permission", "pk": 685}, {"fields": {"codename": "add_assessmentworkflowcancellation", "name": "Can add assessment workflow cancellation", "content_type": 228}, "model": "auth.permission", "pk": 686}, {"fields": {"codename": "change_assessmentworkflowcancellation", "name": "Can change assessment workflow cancellation", "content_type": 228}, "model": "auth.permission", "pk": 687}, {"fields": {"codename": "delete_assessmentworkflowcancellation", "name": "Can delete assessment workflow cancellation", "content_type": 228}, "model": "auth.permission", "pk": 688}, {"fields": {"codename": "add_profile", "name": "Can add profile", "content_type": 229}, "model": "auth.permission", "pk": 689}, {"fields": {"codename": "change_profile", "name": "Can change profile", "content_type": 229}, "model": "auth.permission", "pk": 690}, {"fields": {"codename": "delete_profile", "name": "Can delete profile", "content_type": 229}, "model": "auth.permission", "pk": 691}, {"fields": {"codename": "add_video", "name": "Can add video", "content_type": 230}, "model": "auth.permission", "pk": 692}, {"fields": {"codename": "change_video", "name": "Can change video", "content_type": 230}, "model": "auth.permission", "pk": 693}, {"fields": {"codename": "delete_video", "name": "Can delete video", "content_type": 230}, "model": "auth.permission", "pk": 694}, {"fields": {"codename": "add_coursevideo", "name": "Can add course video", "content_type": 231}, "model": "auth.permission", "pk": 695}, {"fields": {"codename": "change_coursevideo", "name": "Can change course video", "content_type": 231}, "model": "auth.permission", "pk": 696}, {"fields": {"codename": "delete_coursevideo", "name": "Can delete course video", "content_type": 231}, "model": "auth.permission", "pk": 697}, {"fields": {"codename": "add_encodedvideo", "name": "Can add encoded video", "content_type": 232}, "model": "auth.permission", "pk": 698}, {"fields": {"codename": "change_encodedvideo", "name": "Can change encoded video", "content_type": 232}, "model": "auth.permission", "pk": 699}, {"fields": {"codename": "delete_encodedvideo", "name": "Can delete encoded video", "content_type": 232}, "model": "auth.permission", "pk": 700}, {"fields": {"codename": "add_subtitle", "name": "Can add subtitle", "content_type": 233}, "model": "auth.permission", "pk": 701}, {"fields": {"codename": "change_subtitle", "name": "Can change subtitle", "content_type": 233}, "model": "auth.permission", "pk": 702}, {"fields": {"codename": "delete_subtitle", "name": "Can delete subtitle", "content_type": 233}, "model": "auth.permission", "pk": 703}, {"fields": {"codename": "add_proctoredexam", "name": "Can add proctored exam", "content_type": 234}, "model": "auth.permission", "pk": 704}, {"fields": {"codename": "change_proctoredexam", "name": "Can change proctored exam", "content_type": 234}, "model": "auth.permission", "pk": 705}, {"fields": {"codename": "delete_proctoredexam", "name": "Can delete proctored exam", "content_type": 234}, "model": "auth.permission", "pk": 706}, {"fields": {"codename": "add_proctoredexamreviewpolicy", "name": "Can add Proctored exam review policy", "content_type": 235}, "model": "auth.permission", "pk": 707}, {"fields": {"codename": "change_proctoredexamreviewpolicy", "name": "Can change Proctored exam review policy", "content_type": 235}, "model": "auth.permission", "pk": 708}, {"fields": {"codename": "delete_proctoredexamreviewpolicy", "name": "Can delete Proctored exam review policy", "content_type": 235}, "model": "auth.permission", "pk": 709}, {"fields": {"codename": "add_proctoredexamreviewpolicyhistory", "name": "Can add proctored exam review policy history", "content_type": 236}, "model": "auth.permission", "pk": 710}, {"fields": {"codename": "change_proctoredexamreviewpolicyhistory", "name": "Can change proctored exam review policy history", "content_type": 236}, "model": "auth.permission", "pk": 711}, {"fields": {"codename": "delete_proctoredexamreviewpolicyhistory", "name": "Can delete proctored exam review policy history", "content_type": 236}, "model": "auth.permission", "pk": 712}, {"fields": {"codename": "add_proctoredexamstudentattempt", "name": "Can add proctored exam attempt", "content_type": 237}, "model": "auth.permission", "pk": 713}, {"fields": {"codename": "change_proctoredexamstudentattempt", "name": "Can change proctored exam attempt", "content_type": 237}, "model": "auth.permission", "pk": 714}, {"fields": {"codename": "delete_proctoredexamstudentattempt", "name": "Can delete proctored exam attempt", "content_type": 237}, "model": "auth.permission", "pk": 715}, {"fields": {"codename": "add_proctoredexamstudentattempthistory", "name": "Can add proctored exam attempt history", "content_type": 238}, "model": "auth.permission", "pk": 716}, {"fields": {"codename": "change_proctoredexamstudentattempthistory", "name": "Can change proctored exam attempt history", "content_type": 238}, "model": "auth.permission", "pk": 717}, {"fields": {"codename": "delete_proctoredexamstudentattempthistory", "name": "Can delete proctored exam attempt history", "content_type": 238}, "model": "auth.permission", "pk": 718}, {"fields": {"codename": "add_proctoredexamstudentallowance", "name": "Can add proctored allowance", "content_type": 239}, "model": "auth.permission", "pk": 719}, {"fields": {"codename": "change_proctoredexamstudentallowance", "name": "Can change proctored allowance", "content_type": 239}, "model": "auth.permission", "pk": 720}, {"fields": {"codename": "delete_proctoredexamstudentallowance", "name": "Can delete proctored allowance", "content_type": 239}, "model": "auth.permission", "pk": 721}, {"fields": {"codename": "add_proctoredexamstudentallowancehistory", "name": "Can add proctored allowance history", "content_type": 240}, "model": "auth.permission", "pk": 722}, {"fields": {"codename": "change_proctoredexamstudentallowancehistory", "name": "Can change proctored allowance history", "content_type": 240}, "model": "auth.permission", "pk": 723}, {"fields": {"codename": "delete_proctoredexamstudentallowancehistory", "name": "Can delete proctored allowance history", "content_type": 240}, "model": "auth.permission", "pk": 724}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereview", "name": "Can add Proctored exam software secure review", "content_type": 241}, "model": "auth.permission", "pk": 725}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereview", "name": "Can change Proctored exam software secure review", "content_type": 241}, "model": "auth.permission", "pk": 726}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereview", "name": "Can delete Proctored exam software secure review", "content_type": 241}, "model": "auth.permission", "pk": 727}, {"fields": {"codename": "add_proctoredexamsoftwaresecurereviewhistory", "name": "Can add Proctored exam review archive", "content_type": 242}, "model": "auth.permission", "pk": 728}, {"fields": {"codename": "change_proctoredexamsoftwaresecurereviewhistory", "name": "Can change Proctored exam review archive", "content_type": 242}, "model": "auth.permission", "pk": 729}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurereviewhistory", "name": "Can delete Proctored exam review archive", "content_type": 242}, "model": "auth.permission", "pk": 730}, {"fields": {"codename": "add_proctoredexamsoftwaresecurecomment", "name": "Can add proctored exam software secure comment", "content_type": 243}, "model": "auth.permission", "pk": 731}, {"fields": {"codename": "change_proctoredexamsoftwaresecurecomment", "name": "Can change proctored exam software secure comment", "content_type": 243}, "model": "auth.permission", "pk": 732}, {"fields": {"codename": "delete_proctoredexamsoftwaresecurecomment", "name": "Can delete proctored exam software secure comment", "content_type": 243}, "model": "auth.permission", "pk": 733}, {"fields": {"codename": "add_organization", "name": "Can add organization", "content_type": 244}, "model": "auth.permission", "pk": 734}, {"fields": {"codename": "change_organization", "name": "Can change organization", "content_type": 244}, "model": "auth.permission", "pk": 735}, {"fields": {"codename": "delete_organization", "name": "Can delete organization", "content_type": 244}, "model": "auth.permission", "pk": 736}, {"fields": {"codename": "add_organizationcourse", "name": "Can add Link Course", "content_type": 245}, "model": "auth.permission", "pk": 737}, {"fields": {"codename": "change_organizationcourse", "name": "Can change Link Course", "content_type": 245}, "model": "auth.permission", "pk": 738}, {"fields": {"codename": "delete_organizationcourse", "name": "Can delete Link Course", "content_type": 245}, "model": "auth.permission", "pk": 739}, {"fields": {"codename": "add_studentmodulehistoryextended", "name": "Can add student module history extended", "content_type": 246}, "model": "auth.permission", "pk": 740}, {"fields": {"codename": "change_studentmodulehistoryextended", "name": "Can change student module history extended", "content_type": 246}, "model": "auth.permission", "pk": 741}, {"fields": {"codename": "delete_studentmodulehistoryextended", "name": "Can delete student module history extended", "content_type": 246}, "model": "auth.permission", "pk": 742}, {"fields": {"codename": "add_videouploadconfig", "name": "Can add video upload config", "content_type": 247}, "model": "auth.permission", "pk": 743}, {"fields": {"codename": "change_videouploadconfig", "name": "Can change video upload config", "content_type": 247}, "model": "auth.permission", "pk": 744}, {"fields": {"codename": "delete_videouploadconfig", "name": "Can delete video upload config", "content_type": 247}, "model": "auth.permission", "pk": 745}, {"fields": {"codename": "add_pushnotificationconfig", "name": "Can add push notification config", "content_type": 248}, "model": "auth.permission", "pk": 746}, {"fields": {"codename": "change_pushnotificationconfig", "name": "Can change push notification config", "content_type": 248}, "model": "auth.permission", "pk": 747}, {"fields": {"codename": "delete_pushnotificationconfig", "name": "Can delete push notification config", "content_type": 248}, "model": "auth.permission", "pk": 748}, {"fields": {"codename": "add_coursecreator", "name": "Can add course creator", "content_type": 249}, "model": "auth.permission", "pk": 749}, {"fields": {"codename": "change_coursecreator", "name": "Can change course creator", "content_type": 249}, "model": "auth.permission", "pk": 750}, {"fields": {"codename": "delete_coursecreator", "name": "Can delete course creator", "content_type": 249}, "model": "auth.permission", "pk": 751}, {"fields": {"codename": "add_studioconfig", "name": "Can add studio config", "content_type": 250}, "model": "auth.permission", "pk": 752}, {"fields": {"codename": "change_studioconfig", "name": "Can change studio config", "content_type": 250}, "model": "auth.permission", "pk": 753}, {"fields": {"codename": "delete_studioconfig", "name": "Can delete studio config", "content_type": 250}, "model": "auth.permission", "pk": 754}, {"fields": {"username": "ecommerce_worker", "first_name": "", "last_name": "", "is_active": true, "is_superuser": false, "is_staff": false, "last_login": null, "groups": [], "user_permissions": [], "password": "!kHqA96LDdPlv3krtpEd7SmmmMgKeHRD9X7bHq5CD", "email": "ecommerce_worker@fake.email", "date_joined": "2016-02-29T17:58:11.176Z"}, "model": "auth.user", "pk": 1}, {"fields": {"change_date": "2016-02-29T17:59:25.006Z", "changed_by": null, "enabled": true}, "model": "util.ratelimitconfiguration", "pk": 1}, {"fields": {"change_date": "2016-02-29T17:58:10.732Z", "changed_by": null, "configuration": "{\"default\": {\"accomplishment_class_append\": \"accomplishment-certificate\", \"platform_name\": \"Your Platform Name Here\", \"logo_src\": \"/static/certificates/images/logo.png\", \"logo_url\": \"http://www.example.com\", \"company_verified_certificate_url\": \"http://www.example.com/verified-certificate\", \"company_privacy_url\": \"http://www.example.com/privacy-policy\", \"company_tos_url\": \"http://www.example.com/terms-service\", \"company_about_url\": \"http://www.example.com/about-us\"}, \"verified\": {\"certificate_type\": \"Verified\", \"certificate_title\": \"Verified Certificate of Achievement\"}, \"honor\": {\"certificate_type\": \"Honor Code\", \"certificate_title\": \"Certificate of Achievement\"}}", "enabled": false}, "model": "certificates.certificatehtmlviewconfiguration", "pk": 1}, {"fields": {"change_date": "2016-02-29T17:58:18.649Z", "changed_by": null, "enabled": true, "released_languages": ""}, "model": "dark_lang.darklangconfig", "pk": 1}] \ No newline at end of file diff --git a/common/test/db_cache/bok_choy_data_student_module_history.json b/common/test/db_cache/bok_choy_data_student_module_history.json index 8e2f0bef13..0637a088a0 100644 --- a/common/test/db_cache/bok_choy_data_student_module_history.json +++ b/common/test/db_cache/bok_choy_data_student_module_history.json @@ -1 +1 @@ -[ \ No newline at end of file +[] \ No newline at end of file diff --git a/common/test/db_cache/bok_choy_migrations_data.sql b/common/test/db_cache/bok_choy_migrations_data.sql deleted file mode 100644 index 140f9c96c7..0000000000 --- a/common/test/db_cache/bok_choy_migrations_data.sql +++ /dev/null @@ -1,37 +0,0 @@ --- MySQL dump 10.13 Distrib 5.6.24, for debian-linux-gnu (x86_64) --- --- Host: localhost Database: edxtest --- ------------------------------------------------------ --- Server version 5.6.24-2+deb.sury.org~precise+2 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Dumping data for table `django_migrations` --- - -LOCK TABLES `django_migrations` WRITE; -/*!40000 ALTER TABLE `django_migrations` DISABLE KEYS */; -INSERT INTO `django_migrations` VALUES (1,'contenttypes','0001_initial','2016-01-22 20:04:03.218179'),(2,'auth','0001_initial','2016-01-22 20:04:03.554767'),(3,'admin','0001_initial','2016-01-22 20:04:03.665239'),(4,'assessment','0001_initial','2016-01-22 20:04:06.917971'),(5,'assessment','0002_staffworkflow','2016-01-22 20:04:07.125841'),(6,'contenttypes','0002_remove_content_type_name','2016-01-22 20:04:07.307570'),(7,'auth','0002_alter_permission_name_max_length','2016-01-22 20:04:07.383568'),(8,'auth','0003_alter_user_email_max_length','2016-01-22 20:04:07.464880'),(9,'auth','0004_alter_user_username_opts','2016-01-22 20:04:07.496608'),(10,'auth','0005_alter_user_last_login_null','2016-01-22 20:04:07.584818'),(11,'auth','0006_require_contenttypes_0002','2016-01-22 20:04:07.591565'),(12,'bookmarks','0001_initial','2016-01-22 20:04:07.932691'),(13,'branding','0001_initial','2016-01-22 20:04:08.105513'),(14,'bulk_email','0001_initial','2016-01-22 20:04:08.469986'),(15,'bulk_email','0002_data__load_course_email_template','2016-01-22 20:04:08.538284'),(16,'instructor_task','0001_initial','2016-01-22 20:04:08.743012'),(17,'certificates','0001_initial','2016-01-22 20:04:09.838773'),(18,'certificates','0002_data__certificatehtmlviewconfiguration_data','2016-01-22 20:04:09.865157'),(19,'certificates','0003_data__default_modes','2016-01-22 20:04:09.943086'),(20,'certificates','0004_certificategenerationhistory','2016-01-22 20:04:10.116067'),(21,'certificates','0005_auto_20151208_0801','2016-01-22 20:04:10.232215'),(22,'certificates','0006_certificatetemplateasset_asset_slug','2016-01-22 20:04:10.307271'),(23,'certificates','0007_certificateinvalidation','2016-01-22 20:04:10.510089'),(24,'commerce','0001_data__add_ecommerce_service_user','2016-01-22 20:04:10.538558'),(25,'cors_csrf','0001_initial','2016-01-22 20:04:10.680353'),(26,'course_action_state','0001_initial','2016-01-22 20:04:11.030484'),(27,'course_groups','0001_initial','2016-01-22 20:04:12.283946'),(28,'course_modes','0001_initial','2016-01-22 20:04:12.452546'),(29,'course_modes','0002_coursemode_expiration_datetime_is_explicit','2016-01-22 20:04:12.534953'),(30,'course_modes','0003_auto_20151113_1443','2016-01-22 20:04:12.569936'),(31,'course_modes','0004_auto_20151113_1457','2016-01-22 20:04:12.776505'),(32,'course_modes','0005_auto_20151217_0958','2016-01-22 20:04:12.807317'),(33,'course_overviews','0001_initial','2016-01-22 20:04:12.927012'),(34,'course_overviews','0002_add_course_catalog_fields','2016-01-22 20:04:13.220589'),(35,'course_overviews','0003_courseoverviewgeneratedhistory','2016-01-22 20:04:13.258023'),(36,'course_overviews','0004_courseoverview_org','2016-01-22 20:04:13.346700'),(37,'course_overviews','0005_delete_courseoverviewgeneratedhistory','2016-01-22 20:04:13.375580'),(38,'course_overviews','0006_courseoverviewimageset','2016-01-22 20:04:13.464516'),(39,'course_overviews','0007_courseoverviewimageconfig','2016-01-22 20:04:13.651285'),(40,'course_structures','0001_initial','2016-01-22 20:04:13.689179'),(41,'courseware','0001_initial','2016-01-22 20:04:17.245019'),(42,'credentials','0001_initial','2016-01-22 20:04:17.454975'),(43,'credentials','0002_data__add_service_user','2016-01-22 20:04:17.494478'),(44,'credit','0001_initial','2016-01-22 20:04:19.593607'),(45,'dark_lang','0001_initial','2016-01-22 20:04:19.851812'),(46,'dark_lang','0002_data__enable_on_install','2016-01-22 20:04:19.886816'),(47,'default','0001_initial','2016-01-22 20:04:20.656170'),(48,'default','0002_add_related_name','2016-01-22 20:04:20.920330'),(49,'default','0003_alter_email_max_length','2016-01-22 20:04:21.038154'),(50,'django_comment_common','0001_initial','2016-01-22 20:04:21.777797'),(51,'django_notify','0001_initial','2016-01-22 20:04:23.074494'),(52,'django_openid_auth','0001_initial','2016-01-22 20:04:23.435834'),(53,'edx_proctoring','0001_initial','2016-01-22 20:04:28.470618'),(54,'edx_proctoring','0002_proctoredexamstudentattempt_is_status_acknowledged','2016-01-22 20:04:28.834557'),(55,'edx_proctoring','0003_auto_20160101_0525','2016-01-22 20:04:29.402026'),(56,'edxval','0001_initial','2016-01-22 20:04:30.249661'),(57,'edxval','0002_data__default_profiles','2016-01-22 20:04:30.307115'),(58,'embargo','0001_initial','2016-01-22 20:04:31.462353'),(59,'embargo','0002_data__add_countries','2016-01-22 20:04:32.017366'),(60,'external_auth','0001_initial','2016-01-22 20:04:32.753375'),(61,'lms_xblock','0001_initial','2016-01-22 20:04:33.090177'),(62,'sites','0001_initial','2016-01-22 20:04:33.156273'),(63,'microsite_configuration','0001_initial','2016-01-22 20:04:35.468782'),(64,'milestones','0001_initial','2016-01-22 20:04:36.698849'),(65,'milestones','0002_data__seed_relationship_types','2016-01-22 20:04:36.760089'),(66,'mobile_api','0001_initial','2016-01-22 20:04:38.189431'),(67,'notes','0001_initial','2016-01-22 20:04:38.639288'),(68,'oauth2','0001_initial','2016-01-22 20:04:40.968535'),(69,'oauth2_provider','0001_initial','2016-01-22 20:04:41.475836'),(70,'oauth_provider','0001_initial','2016-01-22 20:04:42.704759'),(71,'organizations','0001_initial','2016-01-22 20:04:42.985226'),(72,'organizations','0002_auto_20151119_2048','2016-01-22 20:04:43.049898'),(73,'problem_builder','0001_initial','2016-01-22 20:04:43.244682'),(74,'programs','0001_initial','2016-01-22 20:04:43.776265'),(75,'programs','0002_programsapiconfig_cache_ttl','2016-01-22 20:04:44.329122'),(76,'programs','0003_auto_20151120_1613','2016-01-22 20:04:46.494468'),(77,'rss_proxy','0001_initial','2016-01-22 20:04:46.572259'),(78,'self_paced','0001_initial','2016-01-22 20:04:47.142336'),(79,'sessions','0001_initial','2016-01-22 20:04:47.246566'),(80,'student','0001_initial','2016-01-22 20:05:04.804775'),(81,'shoppingcart','0001_initial','2016-01-22 20:05:20.059855'),(82,'shoppingcart','0002_auto_20151208_1034','2016-01-22 20:05:21.457216'),(83,'shoppingcart','0003_auto_20151217_0958','2016-01-22 20:05:22.922754'),(84,'splash','0001_initial','2016-01-22 20:05:23.712228'),(85,'static_replace','0001_initial','2016-01-22 20:05:24.489567'),(86,'status','0001_initial','2016-01-22 20:05:26.131108'),(87,'student','0002_auto_20151208_1034','2016-01-22 20:05:27.780831'),(88,'submissions','0001_initial','2016-01-22 20:05:29.846153'),(89,'submissions','0002_auto_20151119_0913','2016-01-22 20:05:30.098711'),(90,'survey','0001_initial','2016-01-22 20:05:31.137171'),(91,'teams','0001_initial','2016-01-22 20:05:33.436431'),(92,'third_party_auth','0001_initial','2016-01-22 20:05:38.010830'),(93,'track','0001_initial','2016-01-22 20:05:38.097314'),(94,'user_api','0001_initial','2016-01-22 20:05:44.556502'),(95,'util','0001_initial','2016-01-22 20:05:45.512595'),(96,'util','0002_data__default_rate_limit_config','2016-01-22 20:05:45.583331'),(97,'verify_student','0001_initial','2016-01-22 20:05:56.456343'),(98,'verify_student','0002_auto_20151124_1024','2016-01-22 20:05:58.780629'),(99,'verify_student','0003_auto_20151113_1443','2016-01-22 20:05:59.622634'),(100,'wiki','0001_initial','2016-01-22 20:06:30.273480'),(101,'wiki','0002_remove_article_subscription','2016-01-22 20:06:30.358472'),(102,'workflow','0001_initial','2016-01-22 20:06:30.741041'),(103,'xblock_django','0001_initial','2016-01-22 20:06:31.645852'),(104,'contentstore','0001_initial','2016-01-22 20:07:00.042399'),(105,'course_creators','0001_initial','2016-01-22 20:07:00.153769'),(106,'xblock_config','0001_initial','2016-01-22 20:07:00.552942'); -/*!40000 ALTER TABLE `django_migrations` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2016-01-22 20:07:05 diff --git a/common/test/db_cache/bok_choy_migrations_data_default.sql b/common/test/db_cache/bok_choy_migrations_data_default.sql new file mode 100644 index 0000000000..ab80457f1d --- /dev/null +++ b/common/test/db_cache/bok_choy_migrations_data_default.sql @@ -0,0 +1,37 @@ +-- MySQL dump 10.13 Distrib 5.6.14, for debian-linux-gnu (x86_64) +-- +-- Host: localhost Database: edxtest +-- ------------------------------------------------------ +-- Server version 5.6.14-1+debphp.org~precise+1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Dumping data for table `django_migrations` +-- + +LOCK TABLES `django_migrations` WRITE; +/*!40000 ALTER TABLE `django_migrations` DISABLE KEYS */; +INSERT INTO `django_migrations` VALUES (1,'contenttypes','0001_initial','2016-02-29 17:58:04.910265'),(2,'auth','0001_initial','2016-02-29 17:58:05.155297'),(3,'admin','0001_initial','2016-02-29 17:58:05.261098'),(4,'assessment','0001_initial','2016-02-29 17:58:08.458980'),(5,'assessment','0002_staffworkflow','2016-02-29 17:58:08.659081'),(6,'contenttypes','0002_remove_content_type_name','2016-02-29 17:58:08.818265'),(7,'auth','0002_alter_permission_name_max_length','2016-02-29 17:58:08.855835'),(8,'auth','0003_alter_user_email_max_length','2016-02-29 17:58:08.894682'),(9,'auth','0004_alter_user_username_opts','2016-02-29 17:58:08.918567'),(10,'auth','0005_alter_user_last_login_null','2016-02-29 17:58:08.971615'),(11,'auth','0006_require_contenttypes_0002','2016-02-29 17:58:08.976069'),(12,'bookmarks','0001_initial','2016-02-29 17:58:09.243246'),(13,'branding','0001_initial','2016-02-29 17:58:09.364920'),(14,'bulk_email','0001_initial','2016-02-29 17:58:09.630882'),(15,'bulk_email','0002_data__load_course_email_template','2016-02-29 17:58:09.715512'),(16,'instructor_task','0001_initial','2016-02-29 17:58:09.872596'),(17,'certificates','0001_initial','2016-02-29 17:58:10.722743'),(18,'certificates','0002_data__certificatehtmlviewconfiguration_data','2016-02-29 17:58:10.736641'),(19,'certificates','0003_data__default_modes','2016-02-29 17:58:10.775334'),(20,'certificates','0004_certificategenerationhistory','2016-02-29 17:58:10.911498'),(21,'certificates','0005_auto_20151208_0801','2016-02-29 17:58:11.002303'),(22,'certificates','0006_certificatetemplateasset_asset_slug','2016-02-29 17:58:11.050549'),(23,'certificates','0007_certificateinvalidation','2016-02-29 17:58:11.166297'),(24,'commerce','0001_data__add_ecommerce_service_user','2016-02-29 17:58:11.198023'),(25,'commerce','0002_commerceconfiguration','2016-02-29 17:58:11.291907'),(26,'contentserver','0001_initial','2016-02-29 17:58:11.375676'),(27,'cors_csrf','0001_initial','2016-02-29 17:58:11.462189'),(28,'course_action_state','0001_initial','2016-02-29 17:58:11.783744'),(29,'course_groups','0001_initial','2016-02-29 17:58:12.790006'),(30,'course_modes','0001_initial','2016-02-29 17:58:12.902796'),(31,'course_modes','0002_coursemode_expiration_datetime_is_explicit','2016-02-29 17:58:12.957209'),(32,'course_modes','0003_auto_20151113_1443','2016-02-29 17:58:12.979234'),(33,'course_modes','0004_auto_20151113_1457','2016-02-29 17:58:13.095320'),(34,'course_modes','0005_auto_20151217_0958','2016-02-29 17:58:13.116644'),(35,'course_modes','0006_auto_20160208_1407','2016-02-29 17:58:13.208193'),(36,'course_overviews','0001_initial','2016-02-29 17:58:13.283088'),(37,'course_overviews','0002_add_course_catalog_fields','2016-02-29 17:58:13.499090'),(38,'course_overviews','0003_courseoverviewgeneratedhistory','2016-02-29 17:58:13.525866'),(39,'course_overviews','0004_courseoverview_org','2016-02-29 17:58:13.567577'),(40,'course_overviews','0005_delete_courseoverviewgeneratedhistory','2016-02-29 17:58:13.585458'),(41,'course_overviews','0006_courseoverviewimageset','2016-02-29 17:58:13.636894'),(42,'course_overviews','0007_courseoverviewimageconfig','2016-02-29 17:58:13.764616'),(43,'course_overviews','0008_remove_courseoverview_facebook_url','2016-02-29 17:58:13.815867'),(44,'course_overviews','0009_readd_facebook_url','2016-02-29 17:58:13.872971'),(45,'course_structures','0001_initial','2016-02-29 17:58:13.899706'),(46,'courseware','0001_initial','2016-02-29 17:58:16.765503'),(47,'coursewarehistoryextended','0001_initial','2016-02-29 17:58:16.912454'),(48,'credentials','0001_initial','2016-02-29 17:58:17.072454'),(49,'credit','0001_initial','2016-02-29 17:58:18.478297'),(50,'dark_lang','0001_initial','2016-02-29 17:58:18.635638'),(51,'dark_lang','0002_data__enable_on_install','2016-02-29 17:58:18.654315'),(52,'default','0001_initial','2016-02-29 17:58:19.121037'),(53,'default','0002_add_related_name','2016-02-29 17:58:19.287646'),(54,'default','0003_alter_email_max_length','2016-02-29 17:58:19.355367'),(55,'django_comment_common','0001_initial','2016-02-29 17:58:19.826406'),(56,'django_notify','0001_initial','2016-02-29 17:58:20.691115'),(57,'django_openid_auth','0001_initial','2016-02-29 17:58:20.948196'),(58,'edx_proctoring','0001_initial','2016-02-29 17:58:25.028310'),(59,'edx_proctoring','0002_proctoredexamstudentattempt_is_status_acknowledged','2016-02-29 17:58:25.270722'),(60,'edx_proctoring','0003_auto_20160101_0525','2016-02-29 17:58:25.651659'),(61,'edx_proctoring','0004_auto_20160201_0523','2016-02-29 17:58:25.881209'),(62,'edxval','0001_initial','2016-02-29 17:58:26.490038'),(63,'edxval','0002_data__default_profiles','2016-02-29 17:58:26.519947'),(64,'embargo','0001_initial','2016-02-29 17:58:27.388295'),(65,'embargo','0002_data__add_countries','2016-02-29 17:58:27.716022'),(66,'external_auth','0001_initial','2016-02-29 17:58:28.339793'),(67,'lms_xblock','0001_initial','2016-02-29 17:58:28.600358'),(68,'sites','0001_initial','2016-02-29 17:58:28.639305'),(69,'microsite_configuration','0001_initial','2016-02-29 17:58:30.470563'),(70,'microsite_configuration','0002_auto_20160202_0228','2016-02-29 17:58:31.089884'),(71,'milestones','0001_initial','2016-02-29 17:58:32.206321'),(72,'milestones','0002_data__seed_relationship_types','2016-02-29 17:58:32.242905'),(73,'milestones','0003_coursecontentmilestone_requirements','2016-02-29 17:58:33.317573'),(74,'milestones','0004_auto_20151221_1445','2016-02-29 17:58:33.593210'),(75,'mobile_api','0001_initial','2016-02-29 17:58:33.849089'),(76,'notes','0001_initial','2016-02-29 17:58:34.185220'),(77,'oauth2','0001_initial','2016-02-29 17:58:35.892898'),(78,'oauth2_provider','0001_initial','2016-02-29 17:58:36.227236'),(79,'oauth_provider','0001_initial','2016-02-29 17:58:37.052991'),(80,'organizations','0001_initial','2016-02-29 17:58:37.290331'),(81,'programs','0001_initial','2016-02-29 17:58:37.667708'),(82,'programs','0002_programsapiconfig_cache_ttl','2016-02-29 17:58:38.067119'),(83,'programs','0003_auto_20151120_1613','2016-02-29 17:58:39.752602'),(84,'programs','0004_programsapiconfig_enable_certification','2016-02-29 17:58:40.179508'),(85,'programs','0005_programsapiconfig_max_retries','2016-02-29 17:58:40.596412'),(86,'rss_proxy','0001_initial','2016-02-29 17:58:40.641620'),(87,'self_paced','0001_initial','2016-02-29 17:58:41.078194'),(88,'sessions','0001_initial','2016-02-29 17:58:41.133704'),(89,'student','0001_initial','2016-02-29 17:58:53.980867'),(90,'shoppingcart','0001_initial','2016-02-29 17:59:06.233175'),(91,'shoppingcart','0002_auto_20151208_1034','2016-02-29 17:59:07.059000'),(92,'shoppingcart','0003_auto_20151217_0958','2016-02-29 17:59:07.907660'),(93,'splash','0001_initial','2016-02-29 17:59:08.351083'),(94,'static_replace','0001_initial','2016-02-29 17:59:08.818049'),(95,'static_replace','0002_assetexcludedextensionsconfig','2016-02-29 17:59:09.319193'),(96,'status','0001_initial','2016-02-29 17:59:10.500113'),(97,'student','0002_auto_20151208_1034','2016-02-29 17:59:11.650009'),(98,'submissions','0001_initial','2016-02-29 17:59:12.491480'),(99,'submissions','0002_auto_20151119_0913','2016-02-29 17:59:12.683289'),(100,'submissions','0003_submission_status','2016-02-29 17:59:12.811034'),(101,'survey','0001_initial','2016-02-29 17:59:13.767659'),(102,'teams','0001_initial','2016-02-29 17:59:16.603866'),(103,'third_party_auth','0001_initial','2016-02-29 17:59:19.924001'),(104,'track','0001_initial','2016-02-29 17:59:19.974203'),(105,'user_api','0001_initial','2016-02-29 17:59:24.197607'),(106,'util','0001_initial','2016-02-29 17:59:24.978364'),(107,'util','0002_data__default_rate_limit_config','2016-02-29 17:59:25.017205'),(108,'verify_student','0001_initial','2016-02-29 17:59:33.329519'),(109,'verify_student','0002_auto_20151124_1024','2016-02-29 17:59:34.238392'),(110,'verify_student','0003_auto_20151113_1443','2016-02-29 17:59:35.001393'),(111,'wiki','0001_initial','2016-02-29 17:59:56.418517'),(112,'wiki','0002_remove_article_subscription','2016-02-29 17:59:56.476734'),(113,'workflow','0001_initial','2016-02-29 17:59:56.760505'),(114,'xblock_django','0001_initial','2016-02-29 17:59:57.572216'),(115,'xblock_django','0002_auto_20160204_0809','2016-02-29 17:59:58.380438'),(116,'contentstore','0001_initial','2016-02-29 18:00:19.534458'),(117,'course_creators','0001_initial','2016-02-29 18:00:19.597219'),(118,'xblock_config','0001_initial','2016-02-29 18:00:19.855097'); +/*!40000 ALTER TABLE `django_migrations` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2016-02-29 18:00:23 diff --git a/common/test/db_cache/bok_choy_migrations_data_student_module_history.sql b/common/test/db_cache/bok_choy_migrations_data_student_module_history.sql new file mode 100644 index 0000000000..be9faad011 --- /dev/null +++ b/common/test/db_cache/bok_choy_migrations_data_student_module_history.sql @@ -0,0 +1,37 @@ +-- MySQL dump 10.13 Distrib 5.6.14, for debian-linux-gnu (x86_64) +-- +-- Host: localhost Database: student_module_history_test +-- ------------------------------------------------------ +-- Server version 5.6.14-1+debphp.org~precise+1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Dumping data for table `django_migrations` +-- + +LOCK TABLES `django_migrations` WRITE; +/*!40000 ALTER TABLE `django_migrations` DISABLE KEYS */; +INSERT INTO `django_migrations` VALUES (1,'contenttypes','0001_initial','2016-02-29 18:01:39.511327'),(2,'auth','0001_initial','2016-02-29 18:01:39.547129'),(3,'admin','0001_initial','2016-02-29 18:01:39.568351'),(4,'assessment','0001_initial','2016-02-29 18:01:40.149754'),(5,'assessment','0002_staffworkflow','2016-02-29 18:01:40.160082'),(6,'contenttypes','0002_remove_content_type_name','2016-02-29 18:01:40.231907'),(7,'auth','0002_alter_permission_name_max_length','2016-02-29 18:01:40.251926'),(8,'auth','0003_alter_user_email_max_length','2016-02-29 18:01:40.276419'),(9,'auth','0004_alter_user_username_opts','2016-02-29 18:01:40.297224'),(10,'auth','0005_alter_user_last_login_null','2016-02-29 18:01:40.317098'),(11,'auth','0006_require_contenttypes_0002','2016-02-29 18:01:40.319374'),(12,'bookmarks','0001_initial','2016-02-29 18:01:40.396366'),(13,'branding','0001_initial','2016-02-29 18:01:40.453783'),(14,'bulk_email','0001_initial','2016-02-29 18:01:40.565081'),(15,'bulk_email','0002_data__load_course_email_template','2016-02-29 18:01:40.574000'),(16,'instructor_task','0001_initial','2016-02-29 18:01:40.613011'),(17,'certificates','0001_initial','2016-02-29 18:01:40.980762'),(18,'certificates','0002_data__certificatehtmlviewconfiguration_data','2016-02-29 18:01:40.991190'),(19,'certificates','0003_data__default_modes','2016-02-29 18:01:41.003742'),(20,'certificates','0004_certificategenerationhistory','2016-02-29 18:01:41.061308'),(21,'certificates','0005_auto_20151208_0801','2016-02-29 18:01:41.113837'),(22,'certificates','0006_certificatetemplateasset_asset_slug','2016-02-29 18:01:41.131141'),(23,'certificates','0007_certificateinvalidation','2016-02-29 18:01:41.189247'),(24,'commerce','0001_data__add_ecommerce_service_user','2016-02-29 18:01:41.200385'),(25,'commerce','0002_commerceconfiguration','2016-02-29 18:01:41.260287'),(26,'contentserver','0001_initial','2016-02-29 18:01:41.323580'),(27,'cors_csrf','0001_initial','2016-02-29 18:01:41.388714'),(28,'course_action_state','0001_initial','2016-02-29 18:01:41.514544'),(29,'course_groups','0001_initial','2016-02-29 18:01:42.036647'),(30,'course_modes','0001_initial','2016-02-29 18:01:42.068946'),(31,'course_modes','0002_coursemode_expiration_datetime_is_explicit','2016-02-29 18:01:42.084746'),(32,'course_modes','0003_auto_20151113_1443','2016-02-29 18:01:42.100516'),(33,'course_modes','0004_auto_20151113_1457','2016-02-29 18:01:42.187139'),(34,'course_modes','0005_auto_20151217_0958','2016-02-29 18:01:42.205556'),(35,'course_modes','0006_auto_20160208_1407','2016-02-29 18:01:42.289731'),(36,'course_overviews','0001_initial','2016-02-29 18:01:42.319879'),(37,'course_overviews','0002_add_course_catalog_fields','2016-02-29 18:01:42.402948'),(38,'course_overviews','0003_courseoverviewgeneratedhistory','2016-02-29 18:01:42.417563'),(39,'course_overviews','0004_courseoverview_org','2016-02-29 18:01:42.435373'),(40,'course_overviews','0005_delete_courseoverviewgeneratedhistory','2016-02-29 18:01:42.448847'),(41,'course_overviews','0006_courseoverviewimageset','2016-02-29 18:01:42.472337'),(42,'course_overviews','0007_courseoverviewimageconfig','2016-02-29 18:01:42.561497'),(43,'course_overviews','0008_remove_courseoverview_facebook_url','2016-02-29 18:01:42.582078'),(44,'course_overviews','0009_readd_facebook_url','2016-02-29 18:01:42.608691'),(45,'course_structures','0001_initial','2016-02-29 18:01:42.625296'),(46,'courseware','0001_initial','2016-02-29 18:01:44.499738'),(47,'coursewarehistoryextended','0001_initial','2016-02-29 18:01:44.691094'),(48,'credentials','0001_initial','2016-02-29 18:01:44.788912'),(49,'credit','0001_initial','2016-02-29 18:01:45.621214'),(50,'dark_lang','0001_initial','2016-02-29 18:01:45.752882'),(51,'dark_lang','0002_data__enable_on_install','2016-02-29 18:01:45.765638'),(52,'default','0001_initial','2016-02-29 18:01:46.107319'),(53,'default','0002_add_related_name','2016-02-29 18:01:46.247368'),(54,'default','0003_alter_email_max_length','2016-02-29 18:01:46.265241'),(55,'django_comment_common','0001_initial','2016-02-29 18:01:46.569556'),(56,'django_notify','0001_initial','2016-02-29 18:01:47.200935'),(57,'django_openid_auth','0001_initial','2016-02-29 18:01:47.399851'),(58,'edx_proctoring','0001_initial','2016-02-29 18:01:50.659784'),(59,'edx_proctoring','0002_proctoredexamstudentattempt_is_status_acknowledged','2016-02-29 18:01:50.845795'),(60,'edx_proctoring','0003_auto_20160101_0525','2016-02-29 18:01:51.213992'),(61,'edx_proctoring','0004_auto_20160201_0523','2016-02-29 18:01:51.397904'),(62,'edxval','0001_initial','2016-02-29 18:01:51.631665'),(63,'edxval','0002_data__default_profiles','2016-02-29 18:01:51.651781'),(64,'embargo','0001_initial','2016-02-29 18:01:52.230500'),(65,'embargo','0002_data__add_countries','2016-02-29 18:01:52.401900'),(66,'external_auth','0001_initial','2016-02-29 18:01:52.851531'),(67,'lms_xblock','0001_initial','2016-02-29 18:01:53.081369'),(68,'sites','0001_initial','2016-02-29 18:01:53.104608'),(69,'microsite_configuration','0001_initial','2016-02-29 18:01:54.497782'),(70,'microsite_configuration','0002_auto_20160202_0228','2016-02-29 18:01:55.048275'),(71,'milestones','0001_initial','2016-02-29 18:01:55.459781'),(72,'milestones','0002_data__seed_relationship_types','2016-02-29 18:01:55.481439'),(73,'milestones','0003_coursecontentmilestone_requirements','2016-02-29 18:01:55.522487'),(74,'milestones','0004_auto_20151221_1445','2016-02-29 18:01:55.688330'),(75,'mobile_api','0001_initial','2016-02-29 18:01:56.844055'),(76,'notes','0001_initial','2016-02-29 18:01:57.066857'),(77,'oauth2','0001_initial','2016-02-29 18:01:58.412080'),(78,'oauth2_provider','0001_initial','2016-02-29 18:01:58.699157'),(79,'oauth_provider','0001_initial','2016-02-29 18:01:59.448662'),(80,'organizations','0001_initial','2016-02-29 18:01:59.538595'),(81,'programs','0001_initial','2016-02-29 18:01:59.922304'),(82,'programs','0002_programsapiconfig_cache_ttl','2016-02-29 18:02:00.317781'),(83,'programs','0003_auto_20151120_1613','2016-02-29 18:02:01.977886'),(84,'programs','0004_programsapiconfig_enable_certification','2016-02-29 18:02:02.413721'),(85,'programs','0005_programsapiconfig_max_retries','2016-02-29 18:02:02.799700'),(86,'rss_proxy','0001_initial','2016-02-29 18:02:02.828648'),(87,'self_paced','0001_initial','2016-02-29 18:02:03.260889'),(88,'sessions','0001_initial','2016-02-29 18:02:03.285722'),(89,'student','0001_initial','2016-02-29 18:02:14.964735'),(90,'shoppingcart','0001_initial','2016-02-29 18:02:26.167709'),(91,'shoppingcart','0002_auto_20151208_1034','2016-02-29 18:02:26.959607'),(92,'shoppingcart','0003_auto_20151217_0958','2016-02-29 18:02:27.772373'),(93,'splash','0001_initial','2016-02-29 18:02:28.180056'),(94,'static_replace','0001_initial','2016-02-29 18:02:28.600901'),(95,'static_replace','0002_assetexcludedextensionsconfig','2016-02-29 18:02:29.072670'),(96,'status','0001_initial','2016-02-29 18:02:30.149381'),(97,'student','0002_auto_20151208_1034','2016-02-29 18:02:31.383085'),(98,'submissions','0001_initial','2016-02-29 18:02:31.704655'),(99,'submissions','0002_auto_20151119_0913','2016-02-29 18:02:31.818741'),(100,'submissions','0003_submission_status','2016-02-29 18:02:31.875924'),(101,'survey','0001_initial','2016-02-29 18:02:32.613867'),(102,'teams','0001_initial','2016-02-29 18:02:35.208964'),(103,'third_party_auth','0001_initial','2016-02-29 18:02:38.385039'),(104,'track','0001_initial','2016-02-29 18:02:38.420093'),(105,'user_api','0001_initial','2016-02-29 18:02:42.631297'),(106,'util','0001_initial','2016-02-29 18:02:43.444988'),(107,'util','0002_data__default_rate_limit_config','2016-02-29 18:02:43.472520'),(108,'verify_student','0001_initial','2016-02-29 18:02:51.517974'),(109,'verify_student','0002_auto_20151124_1024','2016-02-29 18:02:52.305832'),(110,'verify_student','0003_auto_20151113_1443','2016-02-29 18:02:53.133517'),(111,'wiki','0001_initial','2016-02-29 18:03:14.972792'),(112,'wiki','0002_remove_article_subscription','2016-02-29 18:03:15.007100'),(113,'workflow','0001_initial','2016-02-29 18:03:15.147297'),(114,'xblock_django','0001_initial','2016-02-29 18:03:15.981916'),(115,'xblock_django','0002_auto_20160204_0809','2016-02-29 18:03:16.844433'),(116,'contentstore','0001_initial','2016-02-29 18:03:37.119213'),(117,'course_creators','0001_initial','2016-02-29 18:03:37.149132'),(118,'xblock_config','0001_initial','2016-02-29 18:03:37.381904'); +/*!40000 ALTER TABLE `django_migrations` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2016-02-29 18:03:40 diff --git a/common/test/db_cache/bok_choy_schema_default.sql b/common/test/db_cache/bok_choy_schema_default.sql index df3174a46b..2a09404f56 100644 --- a/common/test/db_cache/bok_choy_schema_default.sql +++ b/common/test/db_cache/bok_choy_schema_default.sql @@ -20,8 +20,8 @@ CREATE TABLE `assessment_aiclassifier` ( PRIMARY KEY (`id`), KEY `assessment_aiclassifier_962f069f` (`classifier_set_id`), KEY `assessment_aiclassifier_385b00a3` (`criterion_id`), - CONSTRAINT `D3bd45d5e3c9cfdc4f3b442119adebe8` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`), - CONSTRAINT `assessm_criterion_id_275db29f2a0e1711_fk_assessment_criterion_id` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`) + CONSTRAINT `assessm_criterion_id_275db29f2a0e1711_fk_assessment_criterion_id` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`), + CONSTRAINT `D3bd45d5e3c9cfdc4f3b442119adebe8` 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_aiclassifierset`; @@ -72,9 +72,9 @@ CREATE TABLE `assessment_aigradingworkflow` ( KEY `assessment_aigradingworkflow_a4079fcf` (`assessment_id`), KEY `assessment_aigradingworkflow_962f069f` (`classifier_set_id`), KEY `assessment_aigradingworkflow_8980b7ae` (`rubric_id`), - CONSTRAINT `D4d9bca115376aeb07fd970155499db3` FOREIGN KEY (`classifier_set_id`) REFERENCES `assessment_aiclassifierset` (`id`), + CONSTRAINT `assessment_ai_rubric_id_3fc938e9e3ae7b2d_fk_assessment_rubric_id` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`), CONSTRAINT `asses_assessment_id_68b86880a7f62f1c_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), - CONSTRAINT `assessment_ai_rubric_id_3fc938e9e3ae7b2d_fk_assessment_rubric_id` FOREIGN KEY (`rubric_id`) REFERENCES `assessment_rubric` (`id`) + CONSTRAINT `D4d9bca115376aeb07fd970155499db3` 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`; @@ -110,8 +110,8 @@ CREATE TABLE `assessment_aitrainingworkflow_training_examples` ( PRIMARY KEY (`id`), UNIQUE KEY `aitrainingworkflow_id` (`aitrainingworkflow_id`,`trainingexample_id`), KEY `ff4ddecc43bd06c0d85785a61e955133` (`trainingexample_id`), - CONSTRAINT `da55be90caee21d95136e40c53e5c754` FOREIGN KEY (`aitrainingworkflow_id`) REFERENCES `assessment_aitrainingworkflow` (`id`), - CONSTRAINT `ff4ddecc43bd06c0d85785a61e955133` FOREIGN KEY (`trainingexample_id`) REFERENCES `assessment_trainingexample` (`id`) + CONSTRAINT `ff4ddecc43bd06c0d85785a61e955133` FOREIGN KEY (`trainingexample_id`) REFERENCES `assessment_trainingexample` (`id`), + CONSTRAINT `da55be90caee21d95136e40c53e5c754` 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`; @@ -154,8 +154,8 @@ CREATE TABLE `assessment_assessmentfeedback_assessments` ( PRIMARY KEY (`id`), UNIQUE KEY `assessmentfeedback_id` (`assessmentfeedback_id`,`assessment_id`), KEY `asses_assessment_id_392d354eca2e0c87_fk_assessment_assessment_id` (`assessment_id`), - CONSTRAINT `D1fc3fa7cd7be79d20561668a95a9fc1` FOREIGN KEY (`assessmentfeedback_id`) REFERENCES `assessment_assessmentfeedback` (`id`), - CONSTRAINT `asses_assessment_id_392d354eca2e0c87_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`) + CONSTRAINT `asses_assessment_id_392d354eca2e0c87_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), + CONSTRAINT `D1fc3fa7cd7be79d20561668a95a9fc1` 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`; @@ -168,8 +168,8 @@ CREATE TABLE `assessment_assessmentfeedback_options` ( PRIMARY KEY (`id`), UNIQUE KEY `assessmentfeedback_id` (`assessmentfeedback_id`,`assessmentfeedbackoption_id`), KEY `cc7028abc88c431df3172c9b2d6422e4` (`assessmentfeedbackoption_id`), - CONSTRAINT `cba12ac98c4a04d67d5edaa2223f4fe5` FOREIGN KEY (`assessmentfeedback_id`) REFERENCES `assessment_assessmentfeedback` (`id`), - CONSTRAINT `cc7028abc88c431df3172c9b2d6422e4` FOREIGN KEY (`assessmentfeedbackoption_id`) REFERENCES `assessment_assessmentfeedbackoption` (`id`) + CONSTRAINT `cc7028abc88c431df3172c9b2d6422e4` FOREIGN KEY (`assessmentfeedbackoption_id`) REFERENCES `assessment_assessmentfeedbackoption` (`id`), + CONSTRAINT `cba12ac98c4a04d67d5edaa2223f4fe5` 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`; @@ -196,8 +196,8 @@ CREATE TABLE `assessment_assessmentpart` ( KEY `assessment_assessmentpart_385b00a3` (`criterion_id`), KEY `assessment_assessmentpart_28df3725` (`option_id`), CONSTRAINT `asse_option_id_2508a14feeabf4ce_fk_assessment_criterionoption_id` FOREIGN KEY (`option_id`) REFERENCES `assessment_criterionoption` (`id`), - CONSTRAINT `asses_assessment_id_1d752290138ce479_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), - CONSTRAINT `assessm_criterion_id_2061f2359fd292bf_fk_assessment_criterion_id` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`) + CONSTRAINT `assessm_criterion_id_2061f2359fd292bf_fk_assessment_criterion_id` FOREIGN KEY (`criterion_id`) REFERENCES `assessment_criterion` (`id`), + CONSTRAINT `asses_assessment_id_1d752290138ce479_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_criterion`; @@ -272,9 +272,9 @@ CREATE TABLE `assessment_peerworkflowitem` ( KEY `assessm_scorer_id_2d803ee2d52c0e2c_fk_assessment_peerworkflow_id` (`scorer_id`), KEY `assessment_peerworkflowitem_ab5b2b73` (`submission_uuid`), KEY `assessment_peerworkflowitem_ff1ae11b` (`started_at`), - CONSTRAINT `asses_assessment_id_15cadfae90ddcc2a_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`), + CONSTRAINT `assessm_scorer_id_2d803ee2d52c0e2c_fk_assessment_peerworkflow_id` FOREIGN KEY (`scorer_id`) REFERENCES `assessment_peerworkflow` (`id`), CONSTRAINT `assessm_author_id_1948f89dea6d2b5f_fk_assessment_peerworkflow_id` FOREIGN KEY (`author_id`) REFERENCES `assessment_peerworkflow` (`id`), - CONSTRAINT `assessm_scorer_id_2d803ee2d52c0e2c_fk_assessment_peerworkflow_id` FOREIGN KEY (`scorer_id`) REFERENCES `assessment_peerworkflow` (`id`) + CONSTRAINT `asses_assessment_id_15cadfae90ddcc2a_fk_assessment_assessment_id` FOREIGN KEY (`assessment_id`) REFERENCES `assessment_assessment` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_rubric`; @@ -345,8 +345,8 @@ CREATE TABLE `assessment_studenttrainingworkflowitem` ( UNIQUE KEY `assessment_studenttrainingwork_workflow_id_484e930feb86ad74_uniq` (`workflow_id`,`order_num`), KEY `assessment_studenttrainingworkflowitem_9cc97abc` (`training_example_id`), KEY `assessment_studenttrainingworkflowitem_846c77cf` (`workflow_id`), - CONSTRAINT `D74ce3e30635de397fef41ac869640c7` FOREIGN KEY (`training_example_id`) REFERENCES `assessment_trainingexample` (`id`), - CONSTRAINT `f9c080ebc7ad16394edda963ed3f280f` FOREIGN KEY (`workflow_id`) REFERENCES `assessment_studenttrainingworkflow` (`id`) + CONSTRAINT `f9c080ebc7ad16394edda963ed3f280f` FOREIGN KEY (`workflow_id`) REFERENCES `assessment_studenttrainingworkflow` (`id`), + CONSTRAINT `D74ce3e30635de397fef41ac869640c7` FOREIGN KEY (`training_example_id`) REFERENCES `assessment_trainingexample` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `assessment_trainingexample`; @@ -412,7 +412,7 @@ CREATE TABLE `auth_permission` ( PRIMARY KEY (`id`), UNIQUE KEY `content_type_id` (`content_type_id`,`codename`), CONSTRAINT `auth__content_type_id_508cf46651277a81_fk_django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=740 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=755 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 */; @@ -872,6 +872,35 @@ CREATE TABLE `certificates_generatedcertificate` ( CONSTRAINT `certificates_generatedc_user_id_77ed5f7a53121815_fk_auth_user_id` 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 `commerce_commerceconfiguration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `commerce_commerceconfiguration` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime(6) NOT NULL, + `enabled` tinyint(1) NOT NULL, + `checkout_on_ecommerce_service` tinyint(1) NOT NULL, + `single_course_checkout_page` varchar(255) NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `commerce_commerce_changed_by_id_7441951d1c97c1d7_fk_auth_user_id` (`changed_by_id`), + CONSTRAINT `commerce_commerce_changed_by_id_7441951d1c97c1d7_fk_auth_user_id` 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 `contentserver_courseassetcachettlconfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `contentserver_courseassetcachettlconfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime(6) NOT NULL, + `enabled` tinyint(1) NOT NULL, + `cache_ttl` int(10) unsigned NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `contentserver_cou_changed_by_id_3b5e5ff6c6df495d_fk_auth_user_id` (`changed_by_id`), + CONSTRAINT `contentserver_cou_changed_by_id_3b5e5ff6c6df495d_fk_auth_user_id` 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 `contentstore_pushnotificationconfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -945,8 +974,8 @@ CREATE TABLE `course_action_state_coursererunstate` ( KEY `course_action_state_coursererunstate_c8235886` (`course_key`), KEY `course_action_state_coursererunstate_418c5509` (`action`), KEY `course_action_state_coursererunstate_a9bd7343` (`source_course_key`), - CONSTRAINT `course_action_s_created_user_id_7f53088ef8dccd0b_fk_auth_user_id` FOREIGN KEY (`created_user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `course_action_s_updated_user_id_4fab18012332c9a4_fk_auth_user_id` FOREIGN KEY (`updated_user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `course_action_s_updated_user_id_4fab18012332c9a4_fk_auth_user_id` FOREIGN KEY (`updated_user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `course_action_s_created_user_id_7f53088ef8dccd0b_fk_auth_user_id` FOREIGN KEY (`created_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`; @@ -975,8 +1004,8 @@ CREATE TABLE `course_groups_cohortmembership` ( UNIQUE KEY `course_groups_cohortmembership_user_id_395bddd0389ed7da_uniq` (`user_id`,`course_id`), KEY `course_groups_cohortmembership_6e438ee3` (`course_user_group_id`), KEY `course_groups_cohortmembership_e8701ad4` (`user_id`), - CONSTRAINT `D004e77c965054d46217a8bd48bcaec8` FOREIGN KEY (`course_user_group_id`) REFERENCES `course_groups_courseusergroup` (`id`), - CONSTRAINT `course_groups_cohortmem_user_id_15d408bf736398bf_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `course_groups_cohortmem_user_id_15d408bf736398bf_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `D004e77c965054d46217a8bd48bcaec8` 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_groups_coursecohort`; @@ -1114,7 +1143,6 @@ CREATE TABLE `course_overviews_courseoverview` ( `end` datetime(6) DEFAULT NULL, `advertised_start` longtext, `course_image_url` longtext NOT NULL, - `facebook_url` longtext, `social_sharing_url` longtext, `end_of_course_survey_url` longtext, `certificates_display_behavior` longtext, @@ -1139,6 +1167,7 @@ CREATE TABLE `course_overviews_courseoverview` ( `effort` longtext, `short_description` longtext, `org` longtext NOT NULL, + `facebook_url` longtext, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1353,6 +1382,24 @@ CREATE TABLE `courseware_xmoduleuserstatesummaryfield` ( KEY `courseware_xmoduleuserstatesummaryfield_0528eb2a` (`usage_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `credentials_credentialsapiconfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `credentials_credentialsapiconfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime(6) NOT NULL, + `enabled` tinyint(1) NOT NULL, + `internal_service_url` varchar(200) NOT NULL, + `public_service_url` varchar(200) NOT NULL, + `enable_learner_issuance` tinyint(1) NOT NULL, + `enable_studio_authoring` tinyint(1) NOT NULL, + `cache_ttl` int(10) unsigned NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `credentials_crede_changed_by_id_273a2e6b0649c861_fk_auth_user_id` (`changed_by_id`), + CONSTRAINT `credentials_crede_changed_by_id_273a2e6b0649c861_fk_auth_user_id` 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 `credit_creditcourse`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -1540,8 +1587,8 @@ CREATE TABLE `django_admin_log` ( PRIMARY KEY (`id`), KEY `djang_content_type_id_697914295151027a_fk_django_content_type_id` (`content_type_id`), KEY `django_admin_log_user_id_52fdd58701c5f563_fk_auth_user_id` (`user_id`), - CONSTRAINT `djang_content_type_id_697914295151027a_fk_django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), - CONSTRAINT `django_admin_log_user_id_52fdd58701c5f563_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `django_admin_log_user_id_52fdd58701c5f563_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `djang_content_type_id_697914295151027a_fk_django_content_type_id` 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`; @@ -1562,8 +1609,8 @@ CREATE TABLE `django_comment_client_permission_roles` ( PRIMARY KEY (`id`), UNIQUE KEY `permission_id` (`permission_id`,`role_id`), KEY `django_role_id_558412c96ef7ba87_fk_django_comment_client_role_id` (`role_id`), - CONSTRAINT `D4e9a4067c1db9041491363f5e032121` FOREIGN KEY (`permission_id`) REFERENCES `django_comment_client_permission` (`name`), - CONSTRAINT `django_role_id_558412c96ef7ba87_fk_django_comment_client_role_id` FOREIGN KEY (`role_id`) REFERENCES `django_comment_client_role` (`id`) + CONSTRAINT `django_role_id_558412c96ef7ba87_fk_django_comment_client_role_id` FOREIGN KEY (`role_id`) REFERENCES `django_comment_client_role` (`id`), + CONSTRAINT `D4e9a4067c1db9041491363f5e032121` 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`; @@ -1600,7 +1647,7 @@ CREATE TABLE `django_content_type` ( `model` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `django_content_type_app_label_45f3b1d93ec8c61c_uniq` (`app_label`,`model`) -) ENGINE=InnoDB AUTO_INCREMENT=246 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=251 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `django_migrations`; /*!40101 SET @saved_cs_client = @@character_set_client */; @@ -1611,7 +1658,7 @@ CREATE TABLE `django_migrations` ( `name` varchar(255) NOT NULL, `applied` datetime(6) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=119 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 */; @@ -1719,8 +1766,8 @@ CREATE TABLE `djcelery_periodictask` ( UNIQUE KEY `name` (`name`), KEY `djc_interval_id_20cfc1cad060dfad_fk_djcelery_intervalschedule_id` (`interval_id`), KEY `djcel_crontab_id_1d8228f5b44b680a_fk_djcelery_crontabschedule_id` (`crontab_id`), - CONSTRAINT `djc_interval_id_20cfc1cad060dfad_fk_djcelery_intervalschedule_id` FOREIGN KEY (`interval_id`) REFERENCES `djcelery_intervalschedule` (`id`), - CONSTRAINT `djcel_crontab_id_1d8228f5b44b680a_fk_djcelery_crontabschedule_id` FOREIGN KEY (`crontab_id`) REFERENCES `djcelery_crontabschedule` (`id`) + CONSTRAINT `djcel_crontab_id_1d8228f5b44b680a_fk_djcelery_crontabschedule_id` FOREIGN KEY (`crontab_id`) REFERENCES `djcelery_crontabschedule` (`id`), + CONSTRAINT `djc_interval_id_20cfc1cad060dfad_fk_djcelery_intervalschedule_id` FOREIGN KEY (`interval_id`) REFERENCES `djcelery_intervalschedule` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `djcelery_periodictasks`; @@ -1801,8 +1848,8 @@ CREATE TABLE `edxval_encodedvideo` ( PRIMARY KEY (`id`), KEY `edxval_encodedvideo_83a0eb3f` (`profile_id`), KEY `edxval_encodedvideo_b58b747e` (`video_id`), - CONSTRAINT `edxval_encodedv_profile_id_484a111092acafb3_fk_edxval_profile_id` FOREIGN KEY (`profile_id`) REFERENCES `edxval_profile` (`id`), - CONSTRAINT `edxval_encodedvideo_video_id_56934bca09fc3b13_fk_edxval_video_id` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`) + CONSTRAINT `edxval_encodedvideo_video_id_56934bca09fc3b13_fk_edxval_video_id` FOREIGN KEY (`video_id`) REFERENCES `edxval_video` (`id`), + CONSTRAINT `edxval_encodedv_profile_id_484a111092acafb3_fk_edxval_profile_id` 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`; @@ -2069,8 +2116,7 @@ CREATE TABLE `microsite_configuration_micrositehistory` ( `values` longtext NOT NULL, `site_id` int(11) NOT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `key` (`key`), - UNIQUE KEY `site_id` (`site_id`), + KEY `microsite_configurati_site_id_6977a04d3625a533_fk_django_site_id` (`site_id`), CONSTRAINT `microsite_configurati_site_id_6977a04d3625a533_fk_django_site_id` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -2113,12 +2159,14 @@ CREATE TABLE `milestones_coursecontentmilestone` ( `active` tinyint(1) NOT NULL, `milestone_id` int(11) NOT NULL, `milestone_relationship_type_id` int(11) NOT NULL, + `requirements` varchar(255), PRIMARY KEY (`id`), UNIQUE KEY `milestones_coursecontentmileston_course_id_68d1457cd52d6dff_uniq` (`course_id`,`content_id`,`milestone_id`), KEY `milestones_coursecontentmilestone_ea134da7` (`course_id`), KEY `milestones_coursecontentmilestone_e14f02ad` (`content_id`), KEY `milestones_coursecontentmilestone_dbb5cd1e` (`milestone_id`), KEY `milestones_coursecontentmilestone_db6866e3` (`milestone_relationship_type_id`), + KEY `milestones_coursecontentmilestone_active_39b5c645fa33bfee_uniq` (`active`), CONSTRAINT `D84e404851bc6d6b9fe0d60955e8729c` FOREIGN KEY (`milestone_relationship_type_id`) REFERENCES `milestones_milestonerelationshiptype` (`id`), CONSTRAINT `milesto_milestone_id_73b6eddde5b205a8_fk_milestones_milestone_id` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -2139,6 +2187,7 @@ CREATE TABLE `milestones_coursemilestone` ( KEY `milestones_coursemilestone_ea134da7` (`course_id`), KEY `milestones_coursemilestone_dbb5cd1e` (`milestone_id`), KEY `milestones_coursemilestone_db6866e3` (`milestone_relationship_type_id`), + KEY `milestones_coursemilestone_active_5c3a925f8cc4bde2_uniq` (`active`), CONSTRAINT `D69536d0d313008147c5daf5341090e1` FOREIGN KEY (`milestone_relationship_type_id`) REFERENCES `milestones_milestonerelationshiptype` (`id`), CONSTRAINT `milesto_milestone_id_284153799c54d7d8_fk_milestones_milestone_id` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -2158,7 +2207,8 @@ CREATE TABLE `milestones_milestone` ( PRIMARY KEY (`id`), UNIQUE KEY `milestones_milestone_namespace_460a2f6943016c0b_uniq` (`namespace`,`name`), KEY `milestones_milestone_89801e9e` (`namespace`), - KEY `milestones_milestone_b068931c` (`name`) + KEY `milestones_milestone_b068931c` (`name`), + KEY `milestones_milestone_active_1182ba3c09d42c35_uniq` (`active`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `milestones_milestonerelationshiptype`; @@ -2191,6 +2241,7 @@ CREATE TABLE `milestones_usermilestone` ( UNIQUE KEY `milestones_usermilestone_user_id_10206aa452468351_uniq` (`user_id`,`milestone_id`), KEY `milesto_milestone_id_4fe38e3e9994f15c_fk_milestones_milestone_id` (`milestone_id`), KEY `milestones_usermilestone_e8701ad4` (`user_id`), + KEY `milestones_usermilestone_active_1827f467fe87a8ea_uniq` (`active`), CONSTRAINT `milesto_milestone_id_4fe38e3e9994f15c_fk_milestones_milestone_id` FOREIGN KEY (`milestone_id`) REFERENCES `milestones_milestone` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -2286,8 +2337,8 @@ CREATE TABLE `notify_subscription` ( PRIMARY KEY (`subscription_id`), KEY `a2462650bbefc26547210b80dec61069` (`notification_type_id`), KEY `notify_subscr_settings_id_64d594d127e8ca95_fk_notify_settings_id` (`settings_id`), - CONSTRAINT `a2462650bbefc26547210b80dec61069` FOREIGN KEY (`notification_type_id`) REFERENCES `notify_notificationtype` (`key`), - CONSTRAINT `notify_subscr_settings_id_64d594d127e8ca95_fk_notify_settings_id` FOREIGN KEY (`settings_id`) REFERENCES `notify_settings` (`id`) + CONSTRAINT `notify_subscr_settings_id_64d594d127e8ca95_fk_notify_settings_id` FOREIGN KEY (`settings_id`) REFERENCES `notify_settings` (`id`), + CONSTRAINT `a2462650bbefc26547210b80dec61069` FOREIGN KEY (`notification_type_id`) REFERENCES `notify_notificationtype` (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth2_accesstoken`; @@ -2304,8 +2355,8 @@ CREATE TABLE `oauth2_accesstoken` ( KEY `oauth2_accesstoken_94a08da1` (`token`), KEY `oauth2_accesstoken_2bfe9d72` (`client_id`), KEY `oauth2_accesstoken_e8701ad4` (`user_id`), - CONSTRAINT `oauth2_accesstoke_client_id_20c73b03a7c139a2_fk_oauth2_client_id` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), - CONSTRAINT `oauth2_accesstoken_user_id_7a865c7085722378_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `oauth2_accesstoken_user_id_7a865c7085722378_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `oauth2_accesstoke_client_id_20c73b03a7c139a2_fk_oauth2_client_id` 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_client`; @@ -2339,8 +2390,8 @@ CREATE TABLE `oauth2_grant` ( PRIMARY KEY (`id`), KEY `oauth2_grant_client_id_fbfc174fbc856af_fk_oauth2_client_id` (`client_id`), KEY `oauth2_grant_user_id_3de96a461bb76819_fk_auth_user_id` (`user_id`), - CONSTRAINT `oauth2_grant_client_id_fbfc174fbc856af_fk_oauth2_client_id` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), - CONSTRAINT `oauth2_grant_user_id_3de96a461bb76819_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `oauth2_grant_user_id_3de96a461bb76819_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `oauth2_grant_client_id_fbfc174fbc856af_fk_oauth2_client_id` 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_provider_trustedclient`; @@ -2368,9 +2419,9 @@ CREATE TABLE `oauth2_refreshtoken` ( UNIQUE KEY `access_token_id` (`access_token_id`), KEY `oauth2_refreshtok_client_id_2f55036ac9aa614e_fk_oauth2_client_id` (`client_id`), KEY `oauth2_refreshtoken_user_id_acecf94460b787c_fk_auth_user_id` (`user_id`), - CONSTRAINT `oauth2__access_token_id_f99377d503a000b_fk_oauth2_accesstoken_id` FOREIGN KEY (`access_token_id`) REFERENCES `oauth2_accesstoken` (`id`), + CONSTRAINT `oauth2_refreshtoken_user_id_acecf94460b787c_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `oauth2_refreshtok_client_id_2f55036ac9aa614e_fk_oauth2_client_id` FOREIGN KEY (`client_id`) REFERENCES `oauth2_client` (`id`), - CONSTRAINT `oauth2_refreshtoken_user_id_acecf94460b787c_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `oauth2__access_token_id_f99377d503a000b_fk_oauth2_accesstoken_id` FOREIGN KEY (`access_token_id`) REFERENCES `oauth2_accesstoken` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `oauth_provider_consumer`; @@ -2434,9 +2485,9 @@ CREATE TABLE `oauth_provider_token` ( KEY `oauth_consumer_id_1b9915b5bcf1ee5b_fk_oauth_provider_consumer_id` (`consumer_id`), KEY `oauth_provi_scope_id_459821b6fecbc02a_fk_oauth_provider_scope_id` (`scope_id`), KEY `oauth_provider_token_user_id_588adbcffc892186_fk_auth_user_id` (`user_id`), + CONSTRAINT `oauth_provider_token_user_id_588adbcffc892186_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `oauth_consumer_id_1b9915b5bcf1ee5b_fk_oauth_provider_consumer_id` FOREIGN KEY (`consumer_id`) REFERENCES `oauth_provider_consumer` (`id`), - CONSTRAINT `oauth_provi_scope_id_459821b6fecbc02a_fk_oauth_provider_scope_id` FOREIGN KEY (`scope_id`) REFERENCES `oauth_provider_scope` (`id`), - CONSTRAINT `oauth_provider_token_user_id_588adbcffc892186_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `oauth_provi_scope_id_459821b6fecbc02a_fk_oauth_provider_scope_id` FOREIGN KEY (`scope_id`) REFERENCES `oauth_provider_scope` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `organizations_organization`; @@ -2473,24 +2524,6 @@ CREATE TABLE `organizations_organizationcourse` ( CONSTRAINT `a7b04b16eba98e518fbe21d390bd8e3e` FOREIGN KEY (`organization_id`) REFERENCES `organizations_organization` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -DROP TABLE IF EXISTS `problem_builder_answer`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `problem_builder_answer` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) NOT NULL, - `student_id` varchar(32) NOT NULL, - `course_id` varchar(50) NOT NULL, - `student_input` longtext NOT NULL, - `created_on` datetime(6) NOT NULL, - `modified_on` datetime(6) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `problem_builder_answer_student_id_2f6847a9fb3e9385_uniq` (`student_id`,`course_id`,`name`), - KEY `problem_builder_answer_b068931c` (`name`), - KEY `problem_builder_answer_30a811f6` (`student_id`), - KEY `problem_builder_answer_ea134da7` (`course_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexam`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -2527,8 +2560,8 @@ CREATE TABLE `proctoring_proctoredexamreviewpolicy` ( PRIMARY KEY (`id`), KEY `D32bab97500954b362d3f768dd89b6da` (`proctored_exam_id`), KEY `proctoring_proct_set_by_user_id_75a66580aa44cd84_fk_auth_user_id` (`set_by_user_id`), - CONSTRAINT `D32bab97500954b362d3f768dd89b6da` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), - CONSTRAINT `proctoring_proct_set_by_user_id_75a66580aa44cd84_fk_auth_user_id` FOREIGN KEY (`set_by_user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctoring_proct_set_by_user_id_75a66580aa44cd84_fk_auth_user_id` FOREIGN KEY (`set_by_user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `D32bab97500954b362d3f768dd89b6da` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexamreviewpolicyhistory`; @@ -2546,8 +2579,8 @@ CREATE TABLE `proctoring_proctoredexamreviewpolicyhistory` ( KEY `d9965d8af87bebd0587414ca1ba4826f` (`proctored_exam_id`), KEY `proctoring_procto_set_by_user_id_31fae610848d90f_fk_auth_user_id` (`set_by_user_id`), KEY `proctoring_proctoredexamreviewpolicyhistory_524b09d0` (`original_id`), - CONSTRAINT `d9965d8af87bebd0587414ca1ba4826f` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), - CONSTRAINT `proctoring_procto_set_by_user_id_31fae610848d90f_fk_auth_user_id` FOREIGN KEY (`set_by_user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctoring_procto_set_by_user_id_31fae610848d90f_fk_auth_user_id` FOREIGN KEY (`set_by_user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `d9965d8af87bebd0587414ca1ba4826f` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexamsoftwaresecurereview`; @@ -2565,13 +2598,14 @@ CREATE TABLE `proctoring_proctoredexamsoftwaresecurereview` ( `reviewed_by_id` int(11) DEFAULT NULL, `student_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), + UNIQUE KEY `proctoring_proctoredexamsoftw_attempt_code_69b9866a54964afb_uniq` (`attempt_code`), KEY `proctori_exam_id_635059f5fe2cc392_fk_proctoring_proctoredexam_id` (`exam_id`), KEY `proctoring_proct_reviewed_by_id_4cff67b7de094f65_fk_auth_user_id` (`reviewed_by_id`), KEY `proctoring_proctored_student_id_14c182517b0cbb5b_fk_auth_user_id` (`student_id`), KEY `proctoring_proctoredexamsoftwaresecurereview_b38e5b0e` (`attempt_code`), - CONSTRAINT `proctori_exam_id_635059f5fe2cc392_fk_proctoring_proctoredexam_id` FOREIGN KEY (`exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), + CONSTRAINT `proctoring_proctored_student_id_14c182517b0cbb5b_fk_auth_user_id` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `proctoring_proct_reviewed_by_id_4cff67b7de094f65_fk_auth_user_id` FOREIGN KEY (`reviewed_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `proctoring_proctored_student_id_14c182517b0cbb5b_fk_auth_user_id` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctori_exam_id_635059f5fe2cc392_fk_proctoring_proctoredexam_id` FOREIGN KEY (`exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexamsoftwaresecurereviewhistory`; @@ -2593,9 +2627,9 @@ CREATE TABLE `proctoring_proctoredexamsoftwaresecurereviewhistory` ( KEY `proctoring_proct_reviewed_by_id_139568d0bf423998_fk_auth_user_id` (`reviewed_by_id`), KEY `proctoring_proctored_student_id_6922ba3b791462d8_fk_auth_user_id` (`student_id`), KEY `proctoring_proctoredexamsoftwaresecurereviewhistory_b38e5b0e` (`attempt_code`), - CONSTRAINT `proctori_exam_id_73969ae423813477_fk_proctoring_proctoredexam_id` FOREIGN KEY (`exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), + CONSTRAINT `proctoring_proctored_student_id_6922ba3b791462d8_fk_auth_user_id` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `proctoring_proct_reviewed_by_id_139568d0bf423998_fk_auth_user_id` FOREIGN KEY (`reviewed_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `proctoring_proctored_student_id_6922ba3b791462d8_fk_auth_user_id` FOREIGN KEY (`student_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctori_exam_id_73969ae423813477_fk_proctoring_proctoredexam_id` FOREIGN KEY (`exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexamstudentallowance`; @@ -2612,8 +2646,8 @@ CREATE TABLE `proctoring_proctoredexamstudentallowance` ( PRIMARY KEY (`id`), UNIQUE KEY `proctoring_proctoredexamstudentall_user_id_665ed945152c2f60_uniq` (`user_id`,`proctored_exam_id`,`key`), KEY `db55b83a7875e70b3a0ebd1f81a898d8` (`proctored_exam_id`), - CONSTRAINT `db55b83a7875e70b3a0ebd1f81a898d8` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), - CONSTRAINT `proctoring_proctoredexam_user_id_a0a0681d4a01661_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctoring_proctoredexam_user_id_a0a0681d4a01661_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `db55b83a7875e70b3a0ebd1f81a898d8` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexamstudentallowancehistory`; @@ -2631,8 +2665,8 @@ CREATE TABLE `proctoring_proctoredexamstudentallowancehistory` ( PRIMARY KEY (`id`), KEY `D169ec97a7fca1dbf6b0bb2929d41ccc` (`proctored_exam_id`), KEY `proctoring_proctoredexa_user_id_68e25e3abb187580_fk_auth_user_id` (`user_id`), - CONSTRAINT `D169ec97a7fca1dbf6b0bb2929d41ccc` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), - CONSTRAINT `proctoring_proctoredexa_user_id_68e25e3abb187580_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctoring_proctoredexa_user_id_68e25e3abb187580_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `D169ec97a7fca1dbf6b0bb2929d41ccc` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `proctoring_proctoredexamstudentattempt`; @@ -2711,8 +2745,8 @@ CREATE TABLE `proctoring_proctoredexamstudentattempthistory` ( KEY `proctoring_proctoredexa_user_id_59ce75db7c4fc769_fk_auth_user_id` (`user_id`), KEY `proctoring_proctoredexamstudentattempthistory_b38e5b0e` (`attempt_code`), KEY `proctoring_proctoredexamstudentattempthistory_0e684294` (`external_id`), - CONSTRAINT `cbccbfd5c4c427541fdce96e77e6bf6c` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`), - CONSTRAINT `proctoring_proctoredexa_user_id_59ce75db7c4fc769_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `proctoring_proctoredexa_user_id_59ce75db7c4fc769_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `cbccbfd5c4c427541fdce96e77e6bf6c` FOREIGN KEY (`proctored_exam_id`) REFERENCES `proctoring_proctoredexam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `programs_programsapiconfig`; @@ -2731,6 +2765,8 @@ CREATE TABLE `programs_programsapiconfig` ( `authoring_app_css_path` varchar(255) NOT NULL, `authoring_app_js_path` varchar(255) NOT NULL, `enable_studio_tab` tinyint(1) NOT NULL, + `enable_certification` tinyint(1) NOT NULL, + `max_retries` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `programs_programsa_changed_by_id_b7c3b49d5c0dcd3_fk_auth_user_id` (`changed_by_id`), CONSTRAINT `programs_programsa_changed_by_id_b7c3b49d5c0dcd3_fk_auth_user_id` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) @@ -2809,9 +2845,9 @@ CREATE TABLE `shoppingcart_couponredemption` ( KEY `shoppingcar_coupon_id_1afa016627ac44bb_fk_shoppingcart_coupon_id` (`coupon_id`), KEY `shoppingcart_couponredemption_69dfcb07` (`order_id`), KEY `shoppingcart_couponredemption_e8701ad4` (`user_id`), - CONSTRAINT `shoppingcar_coupon_id_1afa016627ac44bb_fk_shoppingcart_coupon_id` FOREIGN KEY (`coupon_id`) REFERENCES `shoppingcart_coupon` (`id`), + CONSTRAINT `shoppingcart_couponredemp_user_id_f5b814b7d92666_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `shoppingcart__order_id_5ba031c3bfaf643a_fk_shoppingcart_order_id` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `shoppingcart_couponredemp_user_id_f5b814b7d92666_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `shoppingcar_coupon_id_1afa016627ac44bb_fk_shoppingcart_coupon_id` FOREIGN KEY (`coupon_id`) REFERENCES `shoppingcart_coupon` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `shoppingcart_courseregcodeitem`; @@ -2860,9 +2896,9 @@ CREATE TABLE `shoppingcart_courseregistrationcode` ( KEY `shoppingcart_courseregistrationcode_69dfcb07` (`order_id`), KEY `shoppingcart_courseregistrationcode_7a471658` (`invoice_item_id`), CONSTRAINT `f040030b6361304bd87eb40c09a82094` FOREIGN KEY (`invoice_item_id`) REFERENCES `shoppingcart_courseregistrationcodeinvoiceitem` (`invoiceitem_ptr_id`), - CONSTRAINT `shoppingc_invoice_id_422f26bdc7c5cb99_fk_shoppingcart_invoice_id` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`), + CONSTRAINT `shoppingcart_cour_created_by_id_11125a9667aa01c9_fk_auth_user_id` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `shoppingcart__order_id_279d7e2df3fe6b6a_fk_shoppingcart_order_id` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `shoppingcart_cour_created_by_id_11125a9667aa01c9_fk_auth_user_id` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `shoppingc_invoice_id_422f26bdc7c5cb99_fk_shoppingcart_invoice_id` 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_courseregistrationcodeinvoiceitem`; @@ -2978,9 +3014,9 @@ CREATE TABLE `shoppingcart_invoicetransaction` ( KEY `shoppingcart_invoi_created_by_id_f5f3d90ce55a145_fk_auth_user_id` (`created_by_id`), KEY `shoppingc_invoice_id_66bdbfa6f029288b_fk_shoppingcart_invoice_id` (`invoice_id`), KEY `shoppingcar_last_modified_by_id_5e10e433f9576d91_fk_auth_user_id` (`last_modified_by_id`), - CONSTRAINT `shoppingc_invoice_id_66bdbfa6f029288b_fk_shoppingcart_invoice_id` FOREIGN KEY (`invoice_id`) REFERENCES `shoppingcart_invoice` (`id`), CONSTRAINT `shoppingcar_last_modified_by_id_5e10e433f9576d91_fk_auth_user_id` FOREIGN KEY (`last_modified_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `shoppingcart_invoi_created_by_id_f5f3d90ce55a145_fk_auth_user_id` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `shoppingcart_invoi_created_by_id_f5f3d90ce55a145_fk_auth_user_id` FOREIGN KEY (`created_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `shoppingc_invoice_id_66bdbfa6f029288b_fk_shoppingcart_invoice_id` 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`; @@ -3041,8 +3077,8 @@ CREATE TABLE `shoppingcart_orderitem` ( KEY `shoppingcart_orderitem_76ed2946` (`refund_requested_time`), KEY `shoppingcart_orderitem_69dfcb07` (`order_id`), KEY `shoppingcart_orderitem_e8701ad4` (`user_id`), - CONSTRAINT `shoppingcart__order_id_325e5347f18743e3_fk_shoppingcart_order_id` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `shoppingcart_orderitem_user_id_5708ec7aabe24a31_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `shoppingcart_orderitem_user_id_5708ec7aabe24a31_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `shoppingcart__order_id_325e5347f18743e3_fk_shoppingcart_order_id` 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_paidcourseregistration`; @@ -3089,8 +3125,8 @@ CREATE TABLE `shoppingcart_registrationcoderedemption` ( KEY `D1ed44c4be114e424571929bce972f54` (`registration_code_id`), CONSTRAINT `D1ed44c4be114e424571929bce972f54` FOREIGN KEY (`registration_code_id`) REFERENCES `shoppingcart_courseregistrationcode` (`id`), CONSTRAINT `D6654a8efe686d45804b6116dfc6bee1` FOREIGN KEY (`course_enrollment_id`) REFERENCES `student_courseenrollment` (`id`), - CONSTRAINT `shoppingcart_r_order_id_752ddc3003afe96_fk_shoppingcart_order_id` FOREIGN KEY (`order_id`) REFERENCES `shoppingcart_order` (`id`), - CONSTRAINT `shoppingcart_reg_redeemed_by_id_455df2dd74004fff_fk_auth_user_id` FOREIGN KEY (`redeemed_by_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `shoppingcart_reg_redeemed_by_id_455df2dd74004fff_fk_auth_user_id` FOREIGN KEY (`redeemed_by_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `shoppingcart_r_order_id_752ddc3003afe96_fk_shoppingcart_order_id` 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 `social_auth_association`; @@ -3179,6 +3215,20 @@ CREATE TABLE `static_replace_assetbaseurlconfig` ( CONSTRAINT `static_replace_as_changed_by_id_796c2e5b1bee7027_fk_auth_user_id` 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 `static_replace_assetexcludedextensionsconfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `static_replace_assetexcludedextensionsconfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `change_date` datetime(6) NOT NULL, + `enabled` tinyint(1) NOT NULL, + `excluded_extensions` longtext NOT NULL, + `changed_by_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `static_replace_as_changed_by_id_5885827de4f271dc_fk_auth_user_id` (`changed_by_id`), + CONSTRAINT `static_replace_as_changed_by_id_5885827de4f271dc_fk_auth_user_id` 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 `status_coursemessage`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -3481,8 +3531,8 @@ CREATE TABLE `student_userstanding` ( PRIMARY KEY (`id`), UNIQUE KEY `user_id` (`user_id`), KEY `student_userstand_changed_by_id_23784b83f2849aff_fk_auth_user_id` (`changed_by_id`), - CONSTRAINT `student_userstand_changed_by_id_23784b83f2849aff_fk_auth_user_id` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `student_userstanding_user_id_6bb90abaaa05d42e_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `student_userstanding_user_id_6bb90abaaa05d42e_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `student_userstand_changed_by_id_23784b83f2849aff_fk_auth_user_id` 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_usertestgroup`; @@ -3506,8 +3556,8 @@ CREATE TABLE `student_usertestgroup_users` ( PRIMARY KEY (`id`), UNIQUE KEY `usertestgroup_id` (`usertestgroup_id`,`user_id`), KEY `student_usertestgroup_u_user_id_26c886de60cceacb_fk_auth_user_id` (`user_id`), - CONSTRAINT `st_usertestgroup_id_3d634741f1dd4e4f_fk_student_usertestgroup_id` FOREIGN KEY (`usertestgroup_id`) REFERENCES `student_usertestgroup` (`id`), - CONSTRAINT `student_usertestgroup_u_user_id_26c886de60cceacb_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `student_usertestgroup_u_user_id_26c886de60cceacb_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `st_usertestgroup_id_3d634741f1dd4e4f_fk_student_usertestgroup_id` FOREIGN KEY (`usertestgroup_id`) REFERENCES `student_usertestgroup` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `submissions_score`; @@ -3525,8 +3575,8 @@ CREATE TABLE `submissions_score` ( KEY `submissions_score_fde81f11` (`created_at`), KEY `submissions_score_02d5e83e` (`student_item_id`), KEY `submissions_score_1dd9cfcc` (`submission_id`), - CONSTRAINT `s_student_item_id_7d4d4bb6a7dd0642_fk_submissions_studentitem_id` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`), - CONSTRAINT `subm_submission_id_3fc975fe88442ff7_fk_submissions_submission_id` FOREIGN KEY (`submission_id`) REFERENCES `submissions_submission` (`id`) + CONSTRAINT `subm_submission_id_3fc975fe88442ff7_fk_submissions_submission_id` FOREIGN KEY (`submission_id`) REFERENCES `submissions_submission` (`id`), + CONSTRAINT `s_student_item_id_7d4d4bb6a7dd0642_fk_submissions_studentitem_id` 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_scoreannotation`; @@ -3558,8 +3608,8 @@ CREATE TABLE `submissions_scoresummary` ( KEY `submissions__highest_id_7fd91b8eb312c175_fk_submissions_score_id` (`highest_id`), KEY `submissions_s_latest_id_2b352506a35fd569_fk_submissions_score_id` (`latest_id`), CONSTRAINT `s_student_item_id_32fa0a425a149b1b_fk_submissions_studentitem_id` FOREIGN KEY (`student_item_id`) REFERENCES `submissions_studentitem` (`id`), - CONSTRAINT `submissions__highest_id_7fd91b8eb312c175_fk_submissions_score_id` FOREIGN KEY (`highest_id`) REFERENCES `submissions_score` (`id`), - CONSTRAINT `submissions_s_latest_id_2b352506a35fd569_fk_submissions_score_id` FOREIGN KEY (`latest_id`) REFERENCES `submissions_score` (`id`) + CONSTRAINT `submissions_s_latest_id_2b352506a35fd569_fk_submissions_score_id` FOREIGN KEY (`latest_id`) REFERENCES `submissions_score` (`id`), + CONSTRAINT `submissions__highest_id_7fd91b8eb312c175_fk_submissions_score_id` FOREIGN KEY (`highest_id`) REFERENCES `submissions_score` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `submissions_studentitem`; @@ -3589,6 +3639,7 @@ CREATE TABLE `submissions_submission` ( `created_at` datetime(6) NOT NULL, `raw_answer` longtext NOT NULL, `student_item_id` int(11) NOT NULL, + `status` varchar(1) NOT NULL, PRIMARY KEY (`id`), KEY `su_student_item_id_d3801ff833d05b1_fk_submissions_studentitem_id` (`student_item_id`), KEY `submissions_submission_ef7c876f` (`uuid`), @@ -3614,8 +3665,8 @@ CREATE TABLE `survey_surveyanswer` ( KEY `survey_surveyanswer_c8235886` (`course_key`), KEY `survey_surveyanswer_d6cba1ad` (`form_id`), KEY `survey_surveyanswer_e8701ad4` (`user_id`), - CONSTRAINT `survey_surveyan_form_id_1c835afe12a54912_fk_survey_surveyform_id` FOREIGN KEY (`form_id`) REFERENCES `survey_surveyform` (`id`), - CONSTRAINT `survey_surveyanswer_user_id_4e77d83a82fd0b2b_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `survey_surveyanswer_user_id_4e77d83a82fd0b2b_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `survey_surveyan_form_id_1c835afe12a54912_fk_survey_surveyform_id` FOREIGN KEY (`form_id`) REFERENCES `survey_surveyform` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `survey_surveyform`; @@ -3669,8 +3720,8 @@ CREATE TABLE `teams_courseteammembership` ( PRIMARY KEY (`id`), UNIQUE KEY `teams_courseteammembership_user_id_48efa8e8971947c3_uniq` (`user_id`,`team_id`), KEY `teams_courseteam_team_id_594700d19b04f922_fk_teams_courseteam_id` (`team_id`), - CONSTRAINT `teams_courseteam_team_id_594700d19b04f922_fk_teams_courseteam_id` FOREIGN KEY (`team_id`) REFERENCES `teams_courseteam` (`id`), - CONSTRAINT `teams_courseteammembers_user_id_2d93b28be22c3c40_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `teams_courseteammembers_user_id_2d93b28be22c3c40_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `teams_courseteam_team_id_594700d19b04f922_fk_teams_courseteam_id` FOREIGN KEY (`team_id`) REFERENCES `teams_courseteam` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `third_party_auth_ltiproviderconfig`; @@ -3944,8 +3995,8 @@ CREATE TABLE `verify_student_skippedreverification` ( KEY `verify_student_skippedreverification_ea134da7` (`course_id`), KEY `verify_student_skippedreverification_bef2d98a` (`checkpoint_id`), KEY `verify_student_skippedreverification_e8701ad4` (`user_id`), - CONSTRAINT `D759ffa5ca66ef1a2c8c200f7a21365b` FOREIGN KEY (`checkpoint_id`) REFERENCES `verify_student_verificationcheckpoint` (`id`), - CONSTRAINT `verify_student_skippedr_user_id_6752b392e3d3c501_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `verify_student_skippedr_user_id_6752b392e3d3c501_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `D759ffa5ca66ef1a2c8c200f7a21365b` FOREIGN KEY (`checkpoint_id`) REFERENCES `verify_student_verificationcheckpoint` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `verify_student_softwaresecurephotoverification`; @@ -3979,9 +4030,9 @@ CREATE TABLE `verify_student_softwaresecurephotoverification` ( KEY `verify_student_softwaresecurephotoverification_afd1a1a8` (`updated_at`), KEY `verify_student_softwaresecurephotoverification_ebf78b51` (`display`), KEY `verify_student_softwaresecurephotoverification_22bb6ff9` (`submitted_at`), + CONSTRAINT `verify_student_software_user_id_61ffab9c12020106_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `D01dce17b91c9382bd80d4be23a3e0cf` FOREIGN KEY (`copy_id_photo_from_id`) REFERENCES `verify_student_softwaresecurephotoverification` (`id`), - CONSTRAINT `verify_studen_reviewing_user_id_727fae1d0bcf8aaf_fk_auth_user_id` FOREIGN KEY (`reviewing_user_id`) REFERENCES `auth_user` (`id`), - CONSTRAINT `verify_student_software_user_id_61ffab9c12020106_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `verify_studen_reviewing_user_id_727fae1d0bcf8aaf_fk_auth_user_id` FOREIGN KEY (`reviewing_user_id`) REFERENCES `auth_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `verify_student_verificationcheckpoint`; @@ -4039,8 +4090,8 @@ CREATE TABLE `verify_student_verificationstatus` ( KEY `D4cefb6d3d71c9b26af2a5ece4c37277` (`checkpoint_id`), KEY `verify_student_verifica_user_id_5c19fcd6dc05f211_fk_auth_user_id` (`user_id`), KEY `verify_student_verificationstatus_9acb4454` (`status`), - CONSTRAINT `D4cefb6d3d71c9b26af2a5ece4c37277` FOREIGN KEY (`checkpoint_id`) REFERENCES `verify_student_verificationcheckpoint` (`id`), - CONSTRAINT `verify_student_verifica_user_id_5c19fcd6dc05f211_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `verify_student_verifica_user_id_5c19fcd6dc05f211_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), + CONSTRAINT `D4cefb6d3d71c9b26af2a5ece4c37277` FOREIGN KEY (`checkpoint_id`) REFERENCES `verify_student_verificationcheckpoint` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_article`; @@ -4061,9 +4112,9 @@ CREATE TABLE `wiki_article` ( UNIQUE KEY `current_revision_id` (`current_revision_id`), KEY `wiki_article_0e939a4f` (`group_id`), KEY `wiki_article_5e7b1936` (`owner_id`), + CONSTRAINT `wiki_article_owner_id_b1c1e44609a378f_fk_auth_user_id` FOREIGN KEY (`owner_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `current_revision_id_42a9dbec1e0dd15c_fk_wiki_articlerevision_id` FOREIGN KEY (`current_revision_id`) REFERENCES `wiki_articlerevision` (`id`), - CONSTRAINT `wiki_article_group_id_2b38601b6aa39f3d_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), - CONSTRAINT `wiki_article_owner_id_b1c1e44609a378f_fk_auth_user_id` FOREIGN KEY (`owner_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `wiki_article_group_id_2b38601b6aa39f3d_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_articleforobject`; @@ -4117,9 +4168,9 @@ CREATE TABLE `wiki_articlerevision` ( UNIQUE KEY `wiki_articlerevision_article_id_4b4e7910c8e7b2d0_uniq` (`article_id`,`revision_number`), KEY `fae2b1c6e892c699844d5dda69aeb89e` (`previous_revision_id`), KEY `wiki_articlerevision_user_id_183520686b6ead55_fk_auth_user_id` (`user_id`), + CONSTRAINT `wiki_articlerevision_user_id_183520686b6ead55_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `fae2b1c6e892c699844d5dda69aeb89e` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_articlerevision` (`id`), - CONSTRAINT `wiki_articlerevis_article_id_1f2c587981af1463_fk_wiki_article_id` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), - CONSTRAINT `wiki_articlerevision_user_id_183520686b6ead55_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `wiki_articlerevis_article_id_1f2c587981af1463_fk_wiki_article_id` 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_attachment`; @@ -4157,9 +4208,9 @@ CREATE TABLE `wiki_attachmentrevision` ( KEY `wiki_attachmentrevision_07ba63f5` (`attachment_id`), KEY `wiki_attachmentrevision_e8680b8a` (`previous_revision_id`), KEY `wiki_attachmentrevision_e8701ad4` (`user_id`), + CONSTRAINT `wiki_attachmentrevision_user_id_427e3f452b4bfdcd_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `D68d5cd540b66f536228137e518081f8` FOREIGN KEY (`attachment_id`) REFERENCES `wiki_attachment` (`reusableplugin_ptr_id`), - CONSTRAINT `D8c1f0a8f0ddceb9c3ebc94379fe22c9` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_attachmentrevision` (`id`), - CONSTRAINT `wiki_attachmentrevision_user_id_427e3f452b4bfdcd_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `D8c1f0a8f0ddceb9c3ebc94379fe22c9` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_attachmentrevision` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_image`; @@ -4202,8 +4253,8 @@ CREATE TABLE `wiki_reusableplugin_articles` ( PRIMARY KEY (`id`), UNIQUE KEY `reusableplugin_id` (`reusableplugin_id`,`article_id`), KEY `wiki_reusableplug_article_id_5e893d3b3fb4f7fa_fk_wiki_article_id` (`article_id`), - CONSTRAINT `a9f9f50fd4e8fdafe7ffc0c1a145fee3` FOREIGN KEY (`reusableplugin_id`) REFERENCES `wiki_reusableplugin` (`articleplugin_ptr_id`), - CONSTRAINT `wiki_reusableplug_article_id_5e893d3b3fb4f7fa_fk_wiki_article_id` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`) + CONSTRAINT `wiki_reusableplug_article_id_5e893d3b3fb4f7fa_fk_wiki_article_id` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), + CONSTRAINT `a9f9f50fd4e8fdafe7ffc0c1a145fee3` 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`; @@ -4238,9 +4289,9 @@ CREATE TABLE `wiki_revisionpluginrevision` ( KEY `wiki_revisionpluginrevision_b25eaab4` (`plugin_id`), KEY `wiki_revisionpluginrevision_e8680b8a` (`previous_revision_id`), KEY `wiki_revisionpluginrevision_e8701ad4` (`user_id`), + CONSTRAINT `wiki_revisionpluginrevi_user_id_55a00bd0e2532762_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`), CONSTRAINT `D9574e2f57b828a85a24838761473871` FOREIGN KEY (`plugin_id`) REFERENCES `wiki_revisionplugin` (`articleplugin_ptr_id`), - CONSTRAINT `e524c4f887e857f93c39356f7cf7d4df` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_revisionpluginrevision` (`id`), - CONSTRAINT `wiki_revisionpluginrevi_user_id_55a00bd0e2532762_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) + CONSTRAINT `e524c4f887e857f93c39356f7cf7d4df` FOREIGN KEY (`previous_revision_id`) REFERENCES `wiki_revisionpluginrevision` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `wiki_simpleplugin`; @@ -4277,9 +4328,9 @@ CREATE TABLE `wiki_urlpath` ( KEY `wiki_urlpath_656442a0` (`tree_id`), KEY `wiki_urlpath_c9e9a848` (`level`), KEY `wiki_urlpath_6be37982` (`parent_id`), + CONSTRAINT `wiki_urlpath_site_id_4f30e731b0464e80_fk_django_site_id` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`), CONSTRAINT `wiki_urlpath_article_id_1d1c5eb9a64e1390_fk_wiki_article_id` FOREIGN KEY (`article_id`) REFERENCES `wiki_article` (`id`), - CONSTRAINT `wiki_urlpath_parent_id_24eab80cd168595f_fk_wiki_urlpath_id` FOREIGN KEY (`parent_id`) REFERENCES `wiki_urlpath` (`id`), - CONSTRAINT `wiki_urlpath_site_id_4f30e731b0464e80_fk_django_site_id` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`) + CONSTRAINT `wiki_urlpath_parent_id_24eab80cd168595f_fk_wiki_urlpath_id` FOREIGN KEY (`parent_id`) REFERENCES `wiki_urlpath` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `workflow_assessmentworkflow`; @@ -4356,6 +4407,7 @@ CREATE TABLE `xblock_django_xblockdisableconfig` ( `enabled` tinyint(1) NOT NULL, `disabled_blocks` longtext NOT NULL, `changed_by_id` int(11) DEFAULT NULL, + `disabled_create_blocks` longtext NOT NULL, PRIMARY KEY (`id`), KEY `xblock_django_xbl_changed_by_id_429bdccb9201831c_fk_auth_user_id` (`changed_by_id`), CONSTRAINT `xblock_django_xbl_changed_by_id_429bdccb9201831c_fk_auth_user_id` FOREIGN KEY (`changed_by_id`) REFERENCES `auth_user` (`id`) diff --git a/common/test/db_cache/bok_choy_schema_student_module_history.sql b/common/test/db_cache/bok_choy_schema_student_module_history.sql index 696b1bdf43..5a30d5a35c 100644 --- a/common/test/db_cache/bok_choy_schema_student_module_history.sql +++ b/common/test/db_cache/bok_choy_schema_student_module_history.sql @@ -9,6 +9,33 @@ /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +DROP TABLE IF EXISTS `coursewarehistoryextended_studentmodulehistoryextended`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `coursewarehistoryextended_studentmodulehistoryextended` ( + `version` varchar(255) DEFAULT NULL, + `created` datetime(6) NOT NULL, + `state` longtext, + `grade` double DEFAULT NULL, + `max_grade` double DEFAULT NULL, + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `student_module_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `coursewarehistoryextended_studentmodulehistoryextended_2af72f10` (`version`), + KEY `coursewarehistoryextended_studentmodulehistoryextended_e2fa5388` (`created`) +) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `django_migrations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `django_migrations` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `app` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `applied` datetime(6) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; diff --git a/common/test/db_cache/lettuce.db b/common/test/db_cache/lettuce.db index f61ab66ad95631e1b02e82060f069921a558ce8b..7b1e65071360743f8aee5bebda52f3dbda556521 100644 GIT binary patch delta 42527 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

d$;`TB~f=WK#Fw!A&NFgDK0KOd~ni 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 O-A;uV4#J=&n)F}Ip1C6c literal 0 HcmV?d00001 diff --git a/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py b/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py index 370327f9f2..74bbcb778a 100644 --- a/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py +++ b/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py @@ -2,13 +2,13 @@ from __future__ import unicode_literals from django.db import migrations, models -from django.conf import settings import django.db.models.deletion import coursewarehistoryextended.fields +from django.conf import settings def bump_pk_start(apps, schema_editor): if not schema_editor.connection.alias == 'student_module_history': - return + return StudentModuleHistory = apps.get_model("courseware", "StudentModuleHistory") biggest_id = StudentModuleHistory.objects.all().order_by('-id').first() initial_id = settings.STUDENTMODULEHISTORYEXTENDED_OFFSET diff --git a/pavelib/utils/test/suites/acceptance_suite.py b/pavelib/utils/test/suites/acceptance_suite.py index 70c226dd06..a9081acb9a 100644 --- a/pavelib/utils/test/suites/acceptance_suite.py +++ b/pavelib/utils/test/suites/acceptance_suite.py @@ -69,8 +69,14 @@ class AcceptanceTestSuite(TestSuite): def __init__(self, *args, **kwargs): super(AcceptanceTestSuite, self).__init__(*args, **kwargs) self.root = 'acceptance' - self.db = Env.REPO_ROOT / 'test_root/db/test_edx.db' - self.db_cache = Env.REPO_ROOT / 'common/test/db_cache/lettuce.db' + self.dbs = { + 'default': Env.REPO_ROOT / 'test_root/db/test_edx.db', + 'student_module_history': Env.REPO_ROOT / 'test_root/db/test_student_module_history.db' + } + self.db_caches = { + 'default': Env.REPO_ROOT / 'common/test/db_cache/lettuce.db', + 'student_module_history': Env.REPO_ROOT / 'common/test/db_cache/lettuce_student_module_history.db' + } self.fasttest = kwargs.get('fasttest', False) if kwargs.get('system'): @@ -114,24 +120,30 @@ class AcceptanceTestSuite(TestSuite): definitions to sync and migrate. """ - if self.db.isfile(): - # Since we are using SQLLite, we can reset the database by deleting it on disk. - self.db.remove() + for db in self.dbs.keys(): + if self.dbs[db].isfile(): + # Since we are using SQLLite, we can reset the database by deleting it on disk. + self.dbs[db].remove() - if self.db_cache.isfile(): + if all(self.db_caches[cache].isfile() for cache in self.db_caches.keys()): # To speed up migrations, we check for a cached database file and start from that. # The cached database file should be checked into the repo # Copy the cached database to the test root directory - sh("cp {db_cache} {db}".format(db_cache=self.db_cache, db=self.db)) + for db_alias in self.dbs.keys(): + sh("cp {db_cache} {db}".format(db_cache=self.db_caches[db_alias], db=self.dbs[db_alias])) # Run migrations to update the db, starting from its cached state - sh("./manage.py lms --settings acceptance migrate --traceback --noinput --fake-initial") - sh("./manage.py cms --settings acceptance migrate --traceback --noinput --fake-initial") + for db_alias in sorted(self.dbs.keys()): + # pylint: disable=line-too-long + sh("./manage.py lms --settings acceptance migrate --traceback --noinput --fake-initial --database {}".format(db_alias)) + sh("./manage.py cms --settings acceptance migrate --traceback --noinput --fake-initial --database {}".format(db_alias)) else: # If no cached database exists, syncdb before migrating, then create the cache - sh("./manage.py lms --settings acceptance migrate --traceback --noinput") - sh("./manage.py cms --settings acceptance migrate --traceback --noinput") + for db_alias in sorted(self.dbs.keys()): + sh("./manage.py lms --settings acceptance migrate --traceback --noinput --database {}".format(db_alias)) + sh("./manage.py cms --settings acceptance migrate --traceback --noinput --database {}".format(db_alias)) # Create the cache if it doesn't already exist - sh("cp {db} {db_cache}".format(db_cache=self.db_cache, db=self.db)) + for db_alias in self.dbs.keys(): + sh("cp {db} {db_cache}".format(db_cache=self.db_caches[db_alias], db=self.dbs[db_alias])) diff --git a/scripts/reset-test-db.sh b/scripts/reset-test-db.sh index b5f186e5b3..cd04081909 100755 --- a/scripts/reset-test-db.sh +++ b/scripts/reset-test-db.sh @@ -25,11 +25,12 @@ DB_CACHE_DIR="common/test/db_cache" declare -A databases +declare -a database_order databases=(["default"]="edxtest" ["student_module_history"]="student_module_history_test") - +database_order=("default" "student_module_history") # Ensure the test database exists. -for db in "${!databases[@]}"; do +for db in "${database_order[@]}"; do echo "CREATE DATABASE IF NOT EXISTS ${databases[$db]};" | mysql -u root # Clear out the test database @@ -38,68 +39,62 @@ for db in "${!databases[@]}"; do # "CREATE DATABASE" in case the tests are being run in an environment (e.g. devstack # or a jenkins worker environment) that already ran tests on another commit that had # different migrations that created, dropped, or altered tables. - echo "Issuing a reset_db command to the bok_choy MySQL database." + echo "Issuing a reset_db command to the $db bok_choy MySQL database." ./manage.py lms --settings bok_choy reset_db --traceback --noinput --router $db # If there are cached database schemas/data, load them - if [[ ! -f $DB_CACHE_DIR/bok_choy_schema_$db.sql || ! -f $DB_CACHE_DIR/bok_choy_data_$db.json ]]; then - echo "Missing $DB_CACHE_DIR/bok_choy_schema_$db.sql or $DB_CACHE_DIR/bok_choy_data_$db.json, rebuilding cache" + if [[ ! -f $DB_CACHE_DIR/bok_choy_schema_$db.sql || ! -f $DB_CACHE_DIR/bok_choy_data_$db.json || ! -f $DB_CACHE_DIR/bok_choy_migrations_data_$db.sql ]]; then + echo "Missing $DB_CACHE_DIR/bok_choy_schema_$db.sql or $DB_CACHE_DIR/bok_choy_data_$db.json, or $DB_CACHE_DIR/bok_choy_migrations_data_$db.sql rebuilding cache" REBUILD_CACHE=true fi done -# migrations are only stored in the default database -if [[ ! -f $DB_CACHE_DIR/bok_choy_migrations_data.sql ]]; then - REBUILD_CACHE=true -fi - - - # If there are cached database schemas/data, load them if [[ -z $REBUILD_CACHE ]]; then echo "Found the bok_choy DB cache files. Loading them into the database..." - for db in "${!databases[@]}"; do + for db in "${database_order[@]}"; do # Load the schema, then the data (including the migration history) - echo "Loading the schema from the filesystem into the MySQL DB." + echo "Loading the schema from the filesystem into the $db MySQL DB." mysql -u root "${databases["$db"]}" < $DB_CACHE_DIR/bok_choy_schema_$db.sql - echo "Loading the fixture data from the filesystem into the MySQL DB." + echo "Loading the fixture data from the filesystem into the $db MySQL DB." ./manage.py lms --settings bok_choy loaddata --database $db $DB_CACHE_DIR/bok_choy_data_$db.json + + # Migrations are stored in the default database + echo "Loading the migration data from the filesystem into the $db MySQL DB." + mysql -u root "${databases["$db"]}" < $DB_CACHE_DIR/bok_choy_migrations_data_$db.sql + + # Re-run migrations to ensure we are up-to-date + echo "Running the lms migrations on the $db bok_choy DB." + ./manage.py lms --settings bok_choy migrate --database $db --traceback --noinput + echo "Running the cms migrations on the $db bok_choy DB." + ./manage.py cms --settings bok_choy migrate --database $db --traceback --noinput + done - # Migrations are stored in the default database - echo "Loading the migration data from the filesystem into the MySQL DB." - mysql -u root "${databases['default']}" < $DB_CACHE_DIR/bok_choy_migrations_data.sql - - # Re-run migrations to ensure we are up-to-date - echo "Running the lms migrations on the bok_choy DB." - ./manage.py lms --settings bok_choy migrate --traceback --noinput - echo "Running the cms migrations on the bok_choy DB." - ./manage.py cms --settings bok_choy migrate --traceback --noinput - # Otherwise, update the test database and update the cache else echo "Did not find a bok_choy DB cache. Creating a new one from scratch." # Clean the cache directory mkdir -p $DB_CACHE_DIR && rm -f $DB_CACHE_DIR/bok_choy* - # Re-run migrations on the test database - echo "Issuing a migrate command to the bok_choy MySQL database for the lms django apps." - ./manage.py lms --settings bok_choy migrate --traceback --noinput - echo "Issuing a migrate command to the bok_choy MySQL database for the cms django apps." - ./manage.py cms --settings bok_choy migrate --traceback --noinput + for db in "${database_order[@]}"; do + # Re-run migrations on the test database + echo "Issuing a migrate command to the $db bok_choy MySQL database for the lms django apps." + ./manage.py lms --settings bok_choy migrate --database $db --traceback --noinput + echo "Issuing a migrate command to the $db bok_choy MySQL database for the cms django apps." + ./manage.py cms --settings bok_choy migrate --database $db --traceback --noinput - for db in "${!databases[@]}"; do # Dump the schema and data to the cache - echo "Using the dumpdata command to save the fixture data to the filesystem." + echo "Using the dumpdata command to save the $db fixture data to the filesystem." ./manage.py lms --settings bok_choy dumpdata --database $db > $DB_CACHE_DIR/bok_choy_data_$db.json - echo "Saving the schema of the bok_choy DB to the filesystem." + echo "Saving the schema of the $dh bok_choy DB to the filesystem." mysqldump -u root --no-data --skip-comments --skip-dump-date "${databases[$db]}" > $DB_CACHE_DIR/bok_choy_schema_$db.sql - done - # dump_data does not dump the django_migrations table so we do it separately. - echo "Saving the django_migrations table of the bok_choy DB to the filesystem." - mysqldump -u root --no-create-info "${databases['default']}" django_migrations > $DB_CACHE_DIR/bok_choy_migrations_data.sql + # dump_data does not dump the django_migrations table so we do it separately. + echo "Saving the django_migrations table of the $db bok_choy DB to the filesystem." + mysqldump -u root --no-create-info "${databases["$db"]}" django_migrations > $DB_CACHE_DIR/bok_choy_migrations_data_$db.sql + done fi