""" The data type and use of it for declaratively creating test courses. """ import datetime from collections import namedtuple # used to create course subtrees in ModuleStoreTestCase.create_test_course # adds to self properties w/ the given block_id which hold the UsageKey for easy retrieval. # fields is a dictionary of keys and values. sub_tree is a collection of BlockInfo BlockInfo = namedtuple('BlockInfo', 'block_id, category, fields, sub_tree') default_block_info_tree = [ # pylint: disable=invalid-name BlockInfo( 'chapter_x', 'chapter', {}, [ BlockInfo( 'sequential_x1', 'sequential', {}, [ BlockInfo( 'vertical_x1a', 'vertical', {}, [ BlockInfo('problem_x1a_1', 'problem', {}, []), BlockInfo('problem_x1a_2', 'problem', {}, []), BlockInfo('problem_x1a_3', 'problem', {}, []), BlockInfo('html_x1a_1', 'html', {}, []), ] ) ] ) ] ), BlockInfo( 'chapter_y', 'chapter', {}, [ BlockInfo( 'sequential_y1', 'sequential', {}, [ BlockInfo( 'vertical_y1a', 'vertical', {}, [ BlockInfo('problem_y1a_1', 'problem', {}, []), BlockInfo('problem_y1a_2', 'problem', {}, []), BlockInfo('problem_y1a_3', 'problem', {}, []), ] ) ] ) ] ) ] # equivalent to toy course in xml TOY_BLOCK_INFO_TREE = [ BlockInfo( 'Overview', "chapter", {"display_name": "Overview"}, [ BlockInfo( "Toy_Videos", "sequential", { "xml_attributes": {"filename": ["", None]}, "display_name": "Toy Videos", "format": "Lecture Sequence" # lint-amnesty, pylint: disable=line-too-long }, [ BlockInfo( "secret:toylab", "html", { "data": "Lab 2A: Superposition Experiment\n\n\n

Isn't the toy course great?

\n" "\n

Let's add some markup that uses non-ascii characters.\n'For example," " we should be able to write words like encyclopædia, or foreign words like " "français.\nLooking beyond latin-1, we should handle math symbols: " " πr² ≤ ∞.\nAnd it shouldn't matter if we use entities or numeric" " codes — Ω ≠ π ≡ Ω ≠ π.\n

\n\n", "xml_attributes": {"filename": ["html/secret/toylab.xml", "html/secret/toylab.xml"]}, "display_name": "Toy lab" }, [] ), BlockInfo( "toyjumpto", "html", { "data": "This is a link to another page and some Chinese 四節比分和七年前

Some more Chinese 四節比分和七年前

\n", # lint-amnesty, pylint: disable=line-too-long "xml_attributes": {"filename": ["html/toyjumpto.xml", "html/toyjumpto.xml"]} }, []), BlockInfo( "toyhtml", "html", { "data": "Sample", "xml_attributes": {"filename": ["html/toyhtml.xml", "html/toyhtml.xml"]} }, []), BlockInfo( "nonportable", "html", { "data": "link\n", "xml_attributes": {"filename": ["html/nonportable.xml", "html/nonportable.xml"]} }, []), BlockInfo( "nonportable_link", "html", { "data": "link\n\n", "xml_attributes": {"filename": ["html/nonportable_link.xml", "html/nonportable_link.xml"]} }, []), BlockInfo( "badlink", "html", { "data": "\n", "xml_attributes": {"filename": ["html/badlink.xml", "html/badlink.xml"]} }, []), BlockInfo( "with_styling", "html", { "data": "

Red text here

", # lint-amnesty, pylint: disable=line-too-long "xml_attributes": {"filename": ["html/with_styling.xml", "html/with_styling.xml"]} }, []), BlockInfo( "just_img", "html", { "data": "", "xml_attributes": {"filename": ["html/just_img.xml", "html/just_img.xml"]} }, []), BlockInfo( "Video_Resources", "video", { "youtube_id_1_0": "1bK-WdDi6Qw", "display_name": "Video Resources" }, []), ]), BlockInfo( "Welcome", "video", {"data": "", "youtube_id_1_0": "p2Q6BrNhdh8", "display_name": "Welcome"}, [] ), BlockInfo( "video_123456789012", "video", {"data": "", "youtube_id_1_0": "p2Q6BrNhdh8", "display_name": "Test Video"}, [] # lint-amnesty, pylint: disable=line-too-long ), BlockInfo( "video_4f66f493ac8f", "video", {"youtube_id_1_0": "p2Q6BrNhdh8"}, [] ) ] ), BlockInfo( "secret:magic", "chapter", { "xml_attributes": {"filename": ["chapter/secret/magic.xml", "chapter/secret/magic.xml"]} }, [ BlockInfo( "toyvideo", "video", {"youtube_id_1_0": "OEoXaMPEzfMA", "display_name": "toyvideo"}, [] ) ] ), BlockInfo( "poll_test", "chapter", {}, [ BlockInfo( "T1_changemind_poll_foo", "poll_question", { "question": "

Have you changed your mind? ’

", "answers": [{"text": "Yes", "id": "yes"}, {"text": "No", "id": "no"}], "xml_attributes": {"reset": "false", "filename": ["", None]}, "display_name": "Change your answer" }, [])] ), BlockInfo( "vertical_container", "chapter", { "xml_attributes": {"filename": ["chapter/vertical_container.xml", "chapter/vertical_container.xml"]} }, [ BlockInfo("vertical_sequential", "sequential", {}, [ BlockInfo("vertical_test", "vertical", { "xml_attributes": {"filename": ["vertical/vertical_test.xml", "vertical_test"]} }, [ BlockInfo( "sample_video", "video", { "youtube_id_1_25": "AKqURZnYqpk", "youtube_id_0_75": "JMD_ifUUfsU", "youtube_id_1_0": "OEoXaMPEzfM", "display_name": "default", "youtube_id_1_5": "DYpADpL7jAY" }, []), BlockInfo( "separate_file_video", "video", { "youtube_id_1_25": "AKqURZnYqpk", "youtube_id_0_75": "JMD_ifUUfsU", "youtube_id_1_0": "OEoXaMPEzfM", "display_name": "default", "youtube_id_1_5": "DYpADpL7jAY" }, []), BlockInfo( "video_with_end_time", "video", { "youtube_id_1_25": "AKqURZnYqpk", "display_name": "default", "youtube_id_1_0": "OEoXaMPEzfM", "end_time": datetime.timedelta(seconds=10), "youtube_id_1_5": "DYpADpL7jAY", "youtube_id_0_75": "JMD_ifUUfsU" }, []), BlockInfo( "T1_changemind_poll_foo_2", "poll_question", { "question": "

Have you changed your mind?

", "answers": [{"text": "Yes", "id": "yes"}, {"text": "No", "id": "no"}], "xml_attributes": {"reset": "false", "filename": ["", None]}, "display_name": "Change your answer" }, []), ]), BlockInfo("unicode", "html", { "data": "…", "xml_attributes": {"filename": ["", None]} }, []) ]), ] ), BlockInfo( "handout_container", "chapter", { "xml_attributes": {"filename": ["chapter/handout_container.xml", "chapter/handout_container.xml"]} }, [ BlockInfo( "html_7e5578f25f79", "html", { "data": " handouts", "xml_attributes": {"filename": ["", None]} }, [] ), ] ) ]