def set_assessment_content(self, unit, assessment_content, errors=None): """Updates the content of an assessment.""" if errors is None: errors = [] path = self._app_context.fs.impl.physical_to_logical( self.get_assessment_filename(unit.unit_id)) root_name = 'assessment' try: content, noverify_text = verify.convert_javascript_to_python( assessment_content, root_name) assessment = verify.evaluate_python_expression_from_text( content, root_name, verify.Assessment().scope, noverify_text) except Exception: # pylint: disable-msg=broad-except errors.append('Unable to parse %s:\n%s' % ( root_name, str(sys.exc_info()[1]))) return verifier = verify.Verifier() try: verifier.verify_assessment_instance(assessment, path) except verify.SchemaException: errors.append('Error validating %s\n' % root_name) return fs = self.app_context.fs fs.put( path, vfs.string_to_stream(assessment_content), is_draft=not unit.now_available)
def load_csv_course(app_context): """Loads course data from the CSV files.""" logging.info('Initializing datastore from CSV files.') unit_file = os.path.join(app_context.get_data_home(), 'unit.csv') lesson_file = os.path.join(app_context.get_data_home(), 'lesson.csv') # Check files exist. if (not app_context.fs.isfile(unit_file) or not app_context.fs.isfile(lesson_file)): return None, None unit_stream = app_context.fs.open(unit_file) lesson_stream = app_context.fs.open(lesson_file) # Verify CSV file integrity. units = verify.read_objects_from_csv_stream( unit_stream, verify.UNITS_HEADER, verify.Unit) lessons = verify.read_objects_from_csv_stream( lesson_stream, verify.LESSONS_HEADER, verify.Lesson) verifier = verify.Verifier() verifier.verify_unit_fields(units) verifier.verify_lesson_fields(lessons) verifier.verify_unit_lesson_relationships(units, lessons) assert verifier.errors == 0 assert verifier.warnings == 0 # Load data from CSV files into a datastore. units = verify.read_objects_from_csv_stream( app_context.fs.open(unit_file), verify.UNITS_HEADER, Unit12, converter=verify.UNIT_CSV_TO_DB_CONVERTER) lessons = verify.read_objects_from_csv_stream( app_context.fs.open(lesson_file), verify.LESSONS_HEADER, Lesson12, converter=verify.LESSON_CSV_TO_DB_CONVERTER) return units, lessons
def verify_assessment(assessment_text): """Parses and semantically verifies assessment.""" assessment = AssessmentParser13.parse_string_in_scope( assessment_text, verify.Assessment().scope, 'assessment') assert assessment verifier = verify.Verifier() verifier.verify_assessment_instance(assessment, 'test')
def verify_activity(activity_text): """Parses and semantically verifies activity.""" activity = ActivityParser13.parse_string_in_scope( activity_text, verify.Activity().scope, 'activity') assert activity verifier = verify.Verifier() verifier.verify_activity_instance(activity, 'test')
def test_assets_and_date(self): """Verify semantics of all asset and data files.""" def echo(unused_message): pass warnings, errors = verify.Verifier().load_and_verify_model(echo) assert not errors and not warnings
def load_csv_course(app_context): """Loads course data from the CSV files.""" logging.info('Initializing datastore from CSV files') unit_file = os.path.join(app_context.get_data_home(), 'unit.csv') lesson_file = os.path.join(app_context.get_data_home(), 'lesson.csv') biblio_file = os.path.join(app_context.get_data_home(), 'biblio.csv') # Load and validate data from CSV files. units = verify.read_objects_from_csv_stream(app_context.fs.open(unit_file), verify.UNITS_HEADER, verify.Unit) lessons = verify.read_objects_from_csv_stream( app_context.fs.open(lesson_file), verify.LESSONS_HEADER, verify.Lesson) references = verify.read_objects_from_csv_stream( app_context.fs.open(biblio_file), verify.BIBLIO_HEADER, verify.Reference) verifier = verify.Verifier() verifier.verify_unit_fields(units) verifier.verify_lesson_fields(lessons) verifier.verify_unit_lesson_relationships(units, lessons) assert verifier.errors == 0 assert verifier.warnings == 0 # Load data from CSV files into a datastore. new_units = [] new_lessons = [] new_references = [] units = verify.read_objects_from_csv_stream(app_context.fs.open(unit_file), verify.UNITS_HEADER, Unit) lessons = verify.read_objects_from_csv_stream( app_context.fs.open(lesson_file), verify.LESSONS_HEADER, Lesson) references = verify.read_objects_from_csv_stream( app_context.fs.open(biblio_file), verify.BIBLIO_HEADER, Reference) for unit in units: entity = Unit() copy_attributes(unit, entity, verify.UNIT_CSV_TO_DB_CONVERTER) new_units.append(entity) for lesson in lessons: entity = Lesson() copy_attributes(lesson, entity, verify.LESSON_CSV_TO_DB_CONVERTER) new_lessons.append(entity) for reference in references: entity = Reference() copy_attributes(reference, entity, verify.BIBLIO_CSV_TO_DB_CONVERTER) new_references.append(entity) return new_units, new_lessons, new_references