Пример #1
0
def _create_or_update_task(
        ctask, user, competition, chain, index, text, comment):
    edit = bool(ctask.task_id)
    if not edit:
        content = MathContent(text=text)
        content.save()
        task = Task(content=content, author=user, hidden=True)
        comment = MathContent(text=comment)
        comment.save()
        ctask.comment = comment
    else:
        task = ctask.task
        task.content.text = text
        task.content.save()
        ctask.comment.text = comment
        ctask.comment.save()

    update_ctask_task(task, competition, chain, index + 1, commit=True)

    if not edit:
        if competition.automatic_task_tags:
            add_tags(task, competition.automatic_task_tags)
        if competition.admin_group:
            ObjectPermission.objects.create(content_object=task,
                    group=competition.admin_group, permission_type=VIEW)
            ObjectPermission.objects.create(content_object=task,
                    group=competition.admin_group, permission_type=EDIT)
        ctask.task = task
Пример #2
0
    def test_get_object_tagged_items(self):
        def CHECK(x, y, z = None):
            names = [item.tag.name for item in get_object_tagged_items(x)]
            self.assertEqual(sorted(names), sorted(y), z)

        self._set_up_tasks()
        CHECK(self.alice_task, ["MEMO", "alg"])
        self.assertIsNotNone(self.alice_task._cache_tagged_items,
                "should fill ._cache_tagged_items")

        CHECK(self.admin_task, ["IMO", "geo"])
        add_tags(self.admin_task, "tb, asdf")
        CHECK(self.admin_task, ["IMO", "geo", "tb", "asdf"])
Пример #3
0
    def test_add_tags(self):
        CHECK = lambda x, y, z = None: \
            self.assertEqual(
                    sorted(x.tags.values_list('name', flat=True)), sorted(y), z)
        self._set_up_tasks()

        CHECK(self.alice_task, ["MEMO", "alg"])
        add_tags(self.alice_task, "memo, tb")
        CHECK(self.alice_task, ["MEMO", "alg", "tb"])
        CHECK(self.admin_task, ["IMO", "geo"])
        add_tags(self.admin_task, "asdf, asdf2")
        CHECK(self.admin_task, ["IMO", "geo", "asdf", "asdf2"])

        self.alice_task._cache_tagged_items = -1
        add_tags(self.alice_task, "memo")
        self.assertIsNotNone(self.alice_task._cache_tagged_items,
                "shouldn't clear ._cache_tagged_items if no new tags added")
        add_tags(self.alice_task, "new-tag")
        self.assertFalse(hasattr(self.alice_task, '._cache_tagged_items'),
                "should delete ._cache_tagged_items if new tags added")
Пример #4
0
 def test_update_search_cache_add_tag(self):
     self.assertSearchTask("foo", [self.task1, self.task3])
     add_tags(self.task2, "foo")
     self.assertSearchTask("foo", [self.task1, self.task2, self.task3])
     add_tags(self.task2, "foo")
     self.assertSearchTask("foo", [self.task1, self.task2, self.task3])