def handle(self, *args, **options): name = options["curriculum"] curriculum = Curriculum.objects.get(name=name) for x in get_ordered_content_items(curriculum): print( f"{x.content_item} - flavours {x.flavours} - tags {[str(s) for s in x.content_item.tags.all()]} {x.content_item.url}" )
def get_export_dict(curriculum): content_requirements = CurriculumContentRequirement.objects.filter( curriculum=curriculum) all_content_items = [ o.content_item for o in get_ordered_content_items(curriculum) ] export = { "curriculum": { "short_name": curriculum.short_name, "name": curriculum.name, }, "curriculum_content_requirements": [{ "content_item": o.content_item.url, "hard_requirement": o.hard_requirement, "order": o.order, "flavours": o.flavour_names, } for o in content_requirements], "content_items": [{ "content_type": o.content_type, "title": o.title, "slug": o.slug, "url": o.url, "story_points": o.story_points, "tags": o.tag_names, "available_flavours": o.available_flavour_names, "topic_needs_review": o.topic_needs_review, "project_submission_type": o.project_submission_type, "continue_from_repo": o.continue_from_repo and o.continue_from_repo.url, "template_repo": o.template_repo, "link_regex": o.link_regex, } for o in all_content_items], "content_item_orders": [], } for item in all_content_items: for o in ContentItemOrder.objects.filter(post=item): export["content_item_orders"].append({ "post": o.post.url, "pre": o.pre.url, "hard_requirement": o.hard_requirement, }) return export
def test_prereq_with_flavours(self): """ requirements have flavours and prereq does too, therefore moar cards """ content_item = factories.ContentItemFactory( flavours=[TYPESCRIPT, JAVASCRIPT] ) requirement1 = factories.CurriculumContentRequirementFactory( content_item=factories.ContentItemFactory(flavours=[TYPESCRIPT]), curriculum=self.curriculum, hard_requirement=True, flavours=[TYPESCRIPT], ) requirement2 = factories.CurriculumContentRequirementFactory( content_item=factories.ContentItemFactory(flavours=[JAVASCRIPT]), curriculum=self.curriculum, hard_requirement=False, flavours=[JAVASCRIPT], ) factories.ContentItemOrderFactory( post=requirement1.content_item, pre=content_item ) factories.ContentItemOrderFactory( post=requirement2.content_item, pre=content_item ) l = gen_helpers.get_ordered_content_items(self.curriculum) # since content_item has available flavours, it will be associated with TWO cards self.assertEqual(len(l), 4) self.assertEqual(l[0].content_item, content_item) self.assertEqual(l[0].is_hard_milestone, False) self.assertEqual(l[0].is_soft_milestone, False) self.assertEqual([o.name for o in l[0].flavours], [TYPESCRIPT]) self.assertEqual(l[1].content_item, requirement1.content_item) self.assertEqual(l[1].is_hard_milestone, True) self.assertEqual(l[1].is_soft_milestone, False) self.assertEqual([o.name for o in l[1].flavours], [TYPESCRIPT]) self.assertEqual(l[2].content_item, content_item) self.assertEqual(l[2].is_hard_milestone, False) self.assertEqual(l[2].is_soft_milestone, False) self.assertEqual([o.name for o in l[2].flavours], [JAVASCRIPT]) self.assertEqual(l[3].content_item, requirement2.content_item) self.assertEqual(l[3].is_hard_milestone, False) self.assertEqual(l[3].is_soft_milestone, True) self.assertEqual([o.name for o in l[3].flavours], [JAVASCRIPT])
def test_no_prepreq(self): requirement1 = factories.CurriculumContentRequirementFactory( curriculum=self.curriculum, hard_requirement=True) requirement2 = factories.CurriculumContentRequirementFactory( curriculum=self.curriculum, hard_requirement=False) l = gen_helpers.get_ordered_content_items(self.curriculum) self.assertEqual(l[0].content_item, requirement1.content_item) self.assertEqual(l[0].is_hard_milestone, True) self.assertEqual(l[0].is_soft_milestone, False) self.assertEqual(l[0].flavours, []) self.assertEqual(l[1].content_item, requirement2.content_item) self.assertEqual(l[1].is_hard_milestone, False) self.assertEqual(l[1].is_soft_milestone, True) self.assertEqual(l[1].flavours, [])
def handle(self, *args, **options): name = options["curriculum"] curriculum = Curriculum.objects.get(Q(short_name=name) | Q(name=name)) for x in get_ordered_content_items(curriculum): print(f"{x.content_item.content_type} - {x.content_item}")
def test_no_cards(self): l = gen_helpers.get_ordered_content_items(self.curriculum) self.assertEqual(l, [])