Merge pull request #1810 from MITx/feature/cdodge/integrity-check-mongo-course
pylint/pep8 fixes
This commit is contained in:
@@ -1,39 +1,37 @@
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from xmodule.modulestore.django import modulestore
|
||||
from xmodule.contentstore.django import contentstore
|
||||
from xmodule.modulestore.xml_importer import check_module_metadata_editability
|
||||
from xmodule.course_module import CourseDescriptor
|
||||
|
||||
from request_cache.middleware import RequestCache
|
||||
|
||||
from django.core.cache import get_cache, InvalidCacheBackendError
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = '''Enumerates through the course and find common errors'''
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if len(args) != 1 :
|
||||
if len(args) != 1:
|
||||
raise CommandError("check_course requires one argument: <location>")
|
||||
|
||||
loc_str = args[0]
|
||||
|
||||
loc = CourseDescriptor.id_to_location(loc_str)
|
||||
|
||||
store = modulestore()
|
||||
|
||||
|
||||
# setup a request cache so we don't throttle the DB with all the metadata inheritance requests
|
||||
store.request_cache = RequestCache.get_request_cache()
|
||||
|
||||
course = store.get_item(loc, depth=3)
|
||||
|
||||
err_cnt = 0
|
||||
|
||||
def _xlint_metadata(module):
|
||||
err_cnt = check_module_metadata_editability(module)
|
||||
for child in module.get_children():
|
||||
err_cnt = err_cnt + _xlint_metadata(child)
|
||||
return err_cnt
|
||||
|
||||
_xlint_metadata(course)
|
||||
err_cnt = err_cnt + _xlint_metadata(course)
|
||||
|
||||
# we've had a bug where the xml_attributes field can we rewritten as a string rather than a dict
|
||||
def _check_xml_attributes_field(module):
|
||||
@@ -45,7 +43,7 @@ class Command(BaseCommand):
|
||||
err_cnt = err_cnt + _check_xml_attributes_field(child)
|
||||
return err_cnt
|
||||
|
||||
_check_xml_attributes_field(course)
|
||||
err_cnt = err_cnt + _check_xml_attributes_field(course)
|
||||
|
||||
# check for dangling discussion items, this can cause errors in the forums
|
||||
def _get_discussion_items(module):
|
||||
@@ -58,17 +56,13 @@ class Command(BaseCommand):
|
||||
|
||||
return discussion_items
|
||||
|
||||
discussion_items =_get_discussion_items(course)
|
||||
discussion_items = _get_discussion_items(course)
|
||||
|
||||
# now query all discussion items via get_items() and compare with the tree-traversal
|
||||
queried_discussion_items = store.get_items(['i4x', course.location.org, course.location.course,
|
||||
'discussion', None, None])
|
||||
'discussion', None, None])
|
||||
|
||||
for item in queried_discussion_items:
|
||||
if item.location.url() not in discussion_items:
|
||||
print 'Found dangling discussion module = {0}'.format(item.location.url())
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user