From b4e400ba563c9228fac5f2481390b7064e648aeb Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Tue, 7 Aug 2012 10:41:57 -0400 Subject: [PATCH] Make tests pass again again * Move lazyproperty decorator into xmodule so it's accessible during tests * add default xqueue to test system --- common/lib/xmodule/xmodule/course_module.py | 50 +++++++++---------- common/lib/xmodule/xmodule/tests/__init__.py | 2 +- common/lib/xmodule/xmodule/util/__init__.py | 0 .../xmodule/xmodule}/util/decorators.py | 0 4 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 common/lib/xmodule/xmodule/util/__init__.py rename common/{djangoapps => lib/xmodule/xmodule}/util/decorators.py (100%) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 41ed5ab89a..ce1b93aa44 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -3,7 +3,7 @@ import time import dateutil.parser import logging -from util.decorators import lazyproperty +from xmodule.util.decorators import lazyproperty from xmodule.graders import load_grading_policy from xmodule.modulestore import Location from xmodule.seq_module import SequenceDescriptor, SequenceModule @@ -40,80 +40,80 @@ class CourseDescriptor(SequenceDescriptor): @property def grader(self): return self.__grading_policy['GRADER'] - + @property def grade_cutoffs(self): return self.__grading_policy['GRADE_CUTOFFS'] - + @lazyproperty def __grading_policy(self): policy_string = "" - + try: with self.system.resources_fs.open("grading_policy.json") as grading_policy_file: policy_string = grading_policy_file.read() except (IOError, ResourceNotFoundError): log.warning("Unable to load course settings file from grading_policy.json in course " + self.id) - + grading_policy = load_grading_policy(policy_string) - + return grading_policy - - + + @lazyproperty def grading_context(self): """ This returns a dictionary with keys necessary for quickly grading a student. They are used by grades.grade() - - The grading context has two keys: + + The grading context has two keys: graded_sections - This contains the sections that are graded, as well as all possible children modules that can affect the grading. This allows some sections to be skipped if the student hasn't seen any part of it. - + The format is a dictionary keyed by section-type. The values are arrays of dictionaries containing "section_descriptor" : The section descriptor - "xmoduledescriptors" : An array of xmoduledescriptors that + "xmoduledescriptors" : An array of xmoduledescriptors that could possibly be in the section, for any student - + all_descriptors - This contains a list of all xmodules that can effect grading a student. This is used to efficiently fetch all the xmodule state for a StudentModuleCache without walking the descriptor tree again. - - + + """ - + all_descriptors = [] graded_sections = {} - + def yield_descriptor_descendents(module_descriptor): for child in module_descriptor.get_children(): yield child for module_descriptor in yield_descriptor_descendents(child): yield module_descriptor - + for c in self.get_children(): sections = [] for s in c.get_children(): if s.metadata.get('graded', False): # TODO: Only include modules that have a score here xmoduledescriptors = [child for child in yield_descriptor_descendents(s)] - + section_description = { 'section_descriptor' : s, 'xmoduledescriptors' : xmoduledescriptors} - + section_format = s.metadata.get('format', "") graded_sections[ section_format ] = graded_sections.get( section_format, [] ) + [section_description] - - all_descriptors.extend(xmoduledescriptors) + + all_descriptors.extend(xmoduledescriptors) all_descriptors.append(s) - + return { 'graded_sections' : graded_sections, 'all_descriptors' : all_descriptors,} - - + + @staticmethod def id_to_location(course_id): '''Convert the given course_id (org/course/name) to a location object. diff --git a/common/lib/xmodule/xmodule/tests/__init__.py b/common/lib/xmodule/xmodule/tests/__init__.py index 4c0b6fc9b3..aeec2cb9b7 100644 --- a/common/lib/xmodule/xmodule/tests/__init__.py +++ b/common/lib/xmodule/xmodule/tests/__init__.py @@ -32,7 +32,7 @@ i4xs = ModuleSystem( user=Mock(), filestore=fs.osfs.OSFS(os.path.dirname(os.path.realpath(__file__))), debug=True, - xqueue=None, + xqueue={'default_queuename': 'testqueue'}, is_staff=False ) diff --git a/common/lib/xmodule/xmodule/util/__init__.py b/common/lib/xmodule/xmodule/util/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/common/djangoapps/util/decorators.py b/common/lib/xmodule/xmodule/util/decorators.py similarity index 100% rename from common/djangoapps/util/decorators.py rename to common/lib/xmodule/xmodule/util/decorators.py