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}"
            )
Beispiel #2
0
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
Beispiel #3
0
    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])
Beispiel #4
0
    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, [])
Beispiel #5
0
    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}")
Beispiel #6
0
 def test_no_cards(self):
     l = gen_helpers.get_ordered_content_items(self.curriculum)
     self.assertEqual(l, [])