Example #1
0
    def __init__(self, accounts_factory):
        self.account_1 = accounts_factory.create_account()
        self.account_2 = accounts_factory.create_account()

        # cat1
        # |-subcat1
        # | |-thread1
        # | | |-post1
        # | |-thread2
        # |-subcat2
        # cat2
        # | subcat3
        # | |- thread3
        # cat3

        self.cat_1 = CategoryPrototype.create(caption='cat1-caption', slug='cat1-slug', order=0)
        # to test, that subcat.id not correlate with order
        self.subcat_2 = SubCategoryPrototype.create(category=self.cat_1, caption='subcat2-caption', order=1, closed=True)
        self.subcat_1 = SubCategoryPrototype.create(category=self.cat_1, caption='subcat1-caption', order=0)
        self.cat_2 = CategoryPrototype.create(caption='cat2-caption', slug='cat2-slug', order=0)
        self.subcat_3 = SubCategoryPrototype.create(category=self.cat_2, caption='subcat3-caption', order=0)
        self.cat_3 = CategoryPrototype.create(caption='cat3-caption', slug='cat3-slug', order=0)

        self.thread_1 = ThreadPrototype.create(self.subcat_1, 'thread1-caption', self.account_1, 'thread1-text')
        self.thread_2 = ThreadPrototype.create(self.subcat_1, 'thread2-caption', self.account_1, 'thread2-text')
        self.thread_3 = ThreadPrototype.create(self.subcat_3, 'thread3-caption', self.account_1, 'thread3-text')

        self.post_1 = PostPrototype.create(self.thread_1, self.account_1, 'post1-text')

        # create test clan and clean it's forum artifacts
        self.clan_category = CategoryPrototype.create(caption='category-1', slug=clans_settings.FORUM_CATEGORY_SLUG, order=0)
        self.clan_1 = ClanPrototype.create(self.account_1, abbr='abbr1', name='name1', motto='motto', description='description')
Example #2
0
    def test_update_subcategory_on_create(self):
        with mock.patch('the_tale.forum.prototypes.SubCategoryPrototype.update'
                        ) as subcategory_update:
            ThreadPrototype.create(self.subcategory, 'thread-2-caption',
                                   self.account, 'thread-2-text')

        self.assertEqual(subcategory_update.call_count, 1)
Example #3
0
    def setUp(self):
        super(ReadStateTests, self).setUp()

        create_test_map()

        self.account = self.accounts_factory.create_account()
        self.account_2 = self.accounts_factory.create_account()

        category = CategoryPrototype.create(caption='cat-caption',
                                            slug='cat-slug',
                                            order=0)
        self.subcategory = SubCategoryPrototype.create(
            category=category, caption='subcat-caption', order=0)
        self.subcategory_2 = SubCategoryPrototype.create(
            category=category, caption='subcat-2-caption', order=0)

        self.thread = ThreadPrototype.create(self.subcategory,
                                             'thread1-caption', self.account_2,
                                             'thread-text')
        self.thread_2 = ThreadPrototype.create(self.subcategory,
                                               'thread2-caption',
                                               self.account_2, 'thread-2-text')
        self.thread_3 = ThreadPrototype.create(self.subcategory_2,
                                               'thread2-caption', self.account,
                                               'thread-2-text')
Example #4
0
    def test_importans_threads_on_first_page(self):
        texts = [
            self.thread1.caption, (self.thread2.caption, 0),
            (self.thread3.caption, 0)
        ]

        self.thread2._model.important = True
        self.thread2.save()

        for i in xrange(forum_settings.THREADS_ON_PAGE):
            caption = 'thread-x-%d-caption' % i
            ThreadPrototype.create(self.subcat1, caption, self.account,
                                   'thread-text')
            if i != 0:
                texts.append((caption, 0))
            else:
                texts.append(caption)

        self.check_html_ok(self.request_html(
            url('forum:subcategories:show', self.subcat1.id, page=2)),
                           texts=texts)

        self.check_html_ok(self.request_html(
            url('forum:subcategories:show', self.subcat1.id, page=1)),
                           texts=[self.thread2.caption])
Example #5
0
    def setUp(self):
        super(SubscriptionPrototypeTests, self).setUp()
        create_test_map()

        self.account = self.accounts_factory.create_account()
        self.account_2 = self.accounts_factory.create_account()

        self.category = CategoryPrototype.create(caption='cat-caption',
                                                 slug='cat-slug',
                                                 order=0)
        self.subcategory_1 = SubCategoryPrototype.create(
            category=self.category, caption='subcat-1-caption', order=0)
        self.subcategory_2 = SubCategoryPrototype.create(
            category=self.category, caption='subcat-2-caption', order=1)

        self.thread_1_1 = ThreadPrototype.create(self.subcategory_1,
                                                 'thread-1-1-caption',
                                                 self.account,
                                                 'thread-1-1-text')
        self.thread_1_2 = ThreadPrototype.create(self.subcategory_1,
                                                 'thread-1-2-caption',
                                                 self.account,
                                                 'thread-1-2-text')
        self.thread_1_3 = ThreadPrototype.create(self.subcategory_1,
                                                 'thread-1-3-caption',
                                                 self.account_2,
                                                 'thread-1-3-text')
        self.thread_2_1 = ThreadPrototype.create(self.subcategory_2,
                                                 'thread-2-1-caption',
                                                 self.account,
                                                 'thread-2-1-text')
        self.thread_2_2 = ThreadPrototype.create(self.subcategory_2,
                                                 'thread-2-2-caption',
                                                 self.account,
                                                 'thread-2-2-text')
Example #6
0
    def setUp(self):
        super(TestModeration, self).setUp()
        create_test_map()
        register_user('main_user', '*****@*****.**', '111111')
        register_user('moderator', '*****@*****.**', '111111')
        register_user('second_user', '*****@*****.**', '111111')

        self.main_account = AccountPrototype.get_by_nick('main_user')
        self.moderator = AccountPrototype.get_by_nick('moderator')
        self.second_account = AccountPrototype.get_by_nick('second_user')

        group = sync_group(forum_settings.MODERATOR_GROUP_NAME, ['forum.moderate_post', 'forum.moderate_thread'])

        group.user_set.add(self.moderator._model)

        self.client = client.Client()

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=0)
        self.subcategory2 = SubCategoryPrototype.create(category=self.category, caption='subcat2-caption', order=1, closed=True)
        self.thread = ThreadPrototype.create(self.subcategory, 'thread-caption', self.main_account, 'thread-text')
        self.post = PostPrototype.create(self.thread, self.main_account, 'post-text')
        self.post2 = PostPrototype.create(self.thread, self.main_account, 'post2-text')
        self.post5 = PostPrototype.create(self.thread, self.main_account, 'post5-text', technical=True)

        self.thread2 = ThreadPrototype.create(self.subcategory, 'thread2-caption', self.main_account, 'thread2-text')
        self.post3 = PostPrototype.create(self.thread2, self.main_account, 'post3-text')
        self.post4 = PostPrototype.create(self.thread2, self.second_account, 'post4-text')

        self.thread3 = ThreadPrototype.create(self.subcategory, 'thread3-caption', self.second_account, 'thread3-text')
Example #7
0
    def __init__(self):
        register_user('forum_user', '*****@*****.**', '111111')
        register_user('forum_user_2', '*****@*****.**', '111111')

        self.account_1 = AccountPrototype.get_by_nick('forum_user')
        self.account_2 = AccountPrototype.get_by_nick('forum_user_2')

        # cat1
        # |-subcat1
        # | |-thread1
        # | | |-post1
        # | |-thread2
        # |-subcat2
        # cat2
        # | subcat3
        # | |- thread3
        # cat3

        self.cat_1 = CategoryPrototype.create(caption='cat1-caption', slug='cat1-slug', order=0)
        # to test, that subcat.id not correlate with order
        self.subcat_2 = SubCategoryPrototype.create(category=self.cat_1, caption='subcat2-caption', order=1, closed=True)
        self.subcat_1 = SubCategoryPrototype.create(category=self.cat_1, caption='subcat1-caption', order=0)
        self.cat_2 = CategoryPrototype.create(caption='cat2-caption', slug='cat2-slug', order=0)
        self.subcat_3 = SubCategoryPrototype.create(category=self.cat_2, caption='subcat3-caption', order=0)
        self.cat_3 = CategoryPrototype.create(caption='cat3-caption', slug='cat3-slug', order=0)

        self.thread_1 = ThreadPrototype.create(self.subcat_1, 'thread1-caption', self.account_1, 'thread1-text')
        self.thread_2 = ThreadPrototype.create(self.subcat_1, 'thread2-caption', self.account_1, 'thread2-text')
        self.thread_3 = ThreadPrototype.create(self.subcat_3, 'thread3-caption', self.account_1, 'thread3-text')

        self.post_1 = PostPrototype.create(self.thread_1, self.account_1, 'post1-text')

        # create test clan and clean it's forum artifacts
        self.clan_category = CategoryPrototype.create(caption='category-1', slug=clans_settings.FORUM_CATEGORY_SLUG, order=0)
        self.clan_1 = ClanPrototype.create(self.account_1, abbr=u'abbr1', name=u'name1', motto=u'motto', description=u'description')
Example #8
0
    def __init__(self, accounts_factory):
        self.account_1 = accounts_factory.create_account()
        self.account_2 = accounts_factory.create_account()

        # cat1
        # |-subcat1
        # | |-thread1
        # | | |-post1
        # | |-thread2
        # |-subcat2
        # cat2
        # | subcat3
        # | |- thread3
        # cat3

        self.cat_1 = CategoryPrototype.create(caption='cat1-caption',
                                              slug='cat1-slug',
                                              order=0)
        # to test, that subcat.id not correlate with order
        self.subcat_2 = SubCategoryPrototype.create(category=self.cat_1,
                                                    caption='subcat2-caption',
                                                    order=1,
                                                    closed=True)
        self.subcat_1 = SubCategoryPrototype.create(category=self.cat_1,
                                                    caption='subcat1-caption',
                                                    order=0)
        self.cat_2 = CategoryPrototype.create(caption='cat2-caption',
                                              slug='cat2-slug',
                                              order=0)
        self.subcat_3 = SubCategoryPrototype.create(category=self.cat_2,
                                                    caption='subcat3-caption',
                                                    order=0)
        self.cat_3 = CategoryPrototype.create(caption='cat3-caption',
                                              slug='cat3-slug',
                                              order=0)

        self.thread_1 = ThreadPrototype.create(self.subcat_1,
                                               'thread1-caption',
                                               self.account_1, 'thread1-text')
        self.thread_2 = ThreadPrototype.create(self.subcat_1,
                                               'thread2-caption',
                                               self.account_1, 'thread2-text')
        self.thread_3 = ThreadPrototype.create(self.subcat_3,
                                               'thread3-caption',
                                               self.account_1, 'thread3-text')

        self.post_1 = PostPrototype.create(self.thread_1, self.account_1,
                                           'post1-text')

        # create test clan and clean it's forum artifacts
        self.clan_category = CategoryPrototype.create(
            caption='category-1',
            slug=clans_settings.FORUM_CATEGORY_SLUG,
            order=0)
        self.clan_1 = ClanPrototype.create(self.account_1,
                                           abbr='abbr1',
                                           name='name1',
                                           motto='motto',
                                           description='description')
Example #9
0
    def test_post_created_at_turn(self):
        turn.increment(2)

        ThreadPrototype.create(self.subcategory, 'thread-2-caption',
                               self.account, 'thread-2-text')

        self.assertEqual(PostPrototype._db_latest().created_at_turn,
                         turn.number())
Example #10
0
    def test_post_created_at_turn(self):
        current_turn = TimePrototype.get_current_time()

        current_turn.increment_turn()
        current_turn.increment_turn()

        ThreadPrototype.create(self.subcategory, 'thread-2-caption', self.account, 'thread-2-text')

        self.assertEqual(PostPrototype._db_latest().created_at_turn, current_turn.turn_number)
Example #11
0
 def test_subcategory_has_new_messages__new_thread(self):
     SubCategoryReadInfoPrototype.read_all_in_subcategory(
         subcategory=self.subcategory, account=self.account)
     self.assertFalse(self.get_read_state().subcategory_has_new_messages(
         self.subcategory))
     ThreadPrototype.create(self.subcategory, 'new-threwad', self.account_2,
                            'thread-new-text')
     self.assertTrue(self.get_read_state().subcategory_has_new_messages(
         self.subcategory))
Example #12
0
    def test_second_page(self):
        texts = [self.thread1.caption,
                 self.thread2.caption,
                 (self.thread3.caption, 0)]
        for i in range(forum_settings.THREADS_ON_PAGE):
            caption = 'thread-x-%d-caption' % i
            ThreadPrototype.create(self.subcat1, caption, self.account, 'thread-text')
            texts.append((caption, 0))

        self.check_html_ok(self.request_html(url('forum:subcategories:show', self.subcat1.id, page=2)), texts=texts)
Example #13
0
    def test_second_page(self):
        texts = [self.thread1.caption,
                 self.thread2.caption,
                 (self.thread3.caption, 0)]
        for i in xrange(forum_settings.THREADS_ON_PAGE):
            caption = 'thread-x-%d-caption' % i
            ThreadPrototype.create(self.subcat1, caption, self.account, 'thread-text')
            texts.append((caption, 0))

        self.check_html_ok(self.request_html(url('forum:subcategories:show', self.subcat1.id, page=2)), texts=texts)
Example #14
0
    def test_post_created_at_turn(self):
        current_turn = TimePrototype.get_current_time()

        current_turn.increment_turn()
        current_turn.increment_turn()

        ThreadPrototype.create(self.subcategory, 'thread-2-caption',
                               self.account, 'thread-2-text')

        self.assertEqual(PostPrototype._db_latest().created_at_turn,
                         current_turn.turn_number)
Example #15
0
    def setUp(self):
        super(TestModeration, self).setUp()
        create_test_map()
        register_user('main_user', '*****@*****.**', '111111')
        register_user('moderator', '*****@*****.**', '111111')
        register_user('second_user', '*****@*****.**', '111111')

        self.main_account = AccountPrototype.get_by_nick('main_user')
        self.moderator = AccountPrototype.get_by_nick('moderator')
        self.second_account = AccountPrototype.get_by_nick('second_user')

        group = sync_group(forum_settings.MODERATOR_GROUP_NAME,
                           ['forum.moderate_post', 'forum.moderate_thread'])

        group.user_set.add(self.moderator._model)

        self.client = client.Client()

        self.category = CategoryPrototype.create(caption='cat-caption',
                                                 slug='cat-slug',
                                                 order=0)
        self.subcategory = SubCategoryPrototype.create(
            category=self.category, caption='subcat-caption', order=0)
        self.subcategory2 = SubCategoryPrototype.create(
            category=self.category,
            caption='subcat2-caption',
            order=1,
            closed=True)
        self.thread = ThreadPrototype.create(self.subcategory,
                                             'thread-caption',
                                             self.main_account, 'thread-text')
        self.post = PostPrototype.create(self.thread, self.main_account,
                                         'post-text')
        self.post2 = PostPrototype.create(self.thread, self.main_account,
                                          'post2-text')
        self.post5 = PostPrototype.create(self.thread,
                                          self.main_account,
                                          'post5-text',
                                          technical=True)

        self.thread2 = ThreadPrototype.create(self.subcategory,
                                              'thread2-caption',
                                              self.main_account,
                                              'thread2-text')
        self.post3 = PostPrototype.create(self.thread2, self.main_account,
                                          'post3-text')
        self.post4 = PostPrototype.create(self.thread2, self.second_account,
                                          'post4-text')

        self.thread3 = ThreadPrototype.create(self.subcategory,
                                              'thread3-caption',
                                              self.second_account,
                                              'thread3-text')
Example #16
0
    def setUp(self):
        super(SubcategoryPrototypeUpdateTests, self).setUp()

        create_test_map()

        self.account = self.accounts_factory.create_account()
        self.checked_account = self.accounts_factory.create_account()

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=2)

        self.thread_1 = ThreadPrototype.create(self.subcategory, 'thread-1-caption', self.account, 'thread-1-text')
        self.thread_2 = ThreadPrototype.create(self.subcategory, 'thread-2-caption', self.account, 'thread-2-text')
Example #17
0
    def setUp(self):
        super(SubcategoryPrototypeUpdateTests, self).setUp()

        create_test_map()

        self.account = self.accounts_factory.create_account()
        self.checked_account = self.accounts_factory.create_account()

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=2)

        self.thread_1 = ThreadPrototype.create(self.subcategory, 'thread-1-caption', self.account, 'thread-1-text')
        self.thread_2 = ThreadPrototype.create(self.subcategory, 'thread-2-caption', self.account, 'thread-2-text')
Example #18
0
    def setUp(self):
        super(ReadStateTests, self).setUp()

        create_test_map()

        self.account = self.accounts_factory.create_account()
        self.account_2 = self.accounts_factory.create_account()

        category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=category, caption='subcat-caption', order=0)
        self.subcategory_2 = SubCategoryPrototype.create(category=category, caption='subcat-2-caption', order=0)

        self.thread = ThreadPrototype.create(self.subcategory, 'thread1-caption', self.account_2, 'thread-text')
        self.thread_2 = ThreadPrototype.create(self.subcategory, 'thread2-caption', self.account_2, 'thread-2-text')
        self.thread_3 = ThreadPrototype.create(self.subcategory_2, 'thread2-caption', self.account, 'thread-2-text')
Example #19
0
    def test_last_forum_posts_with_permissions(self):

        register_user('granted_user', '*****@*****.**', '111111')
        register_user('wrong_user', '*****@*****.**', '111111')

        granted_account = AccountPrototype.get_by_nick('granted_user')
        wrong_account = AccountPrototype.get_by_nick('wrong_user')

        restricted_subcategory = SubCategoryPrototype.create(
            category=self.category,
            caption='subcat2-caption',
            order=1,
            restricted=True)

        PermissionPrototype.create(granted_account, restricted_subcategory)

        restricted_thread = ThreadPrototype.create(
            restricted_subcategory, 'thread-restricted-caption', self.account,
            'thread-text')

        self.assertEqual(
            set(t.id for t in ThreadPrototype.get_last_threads(account=None,
                                                               limit=3)),
            set([self.thread.id]))

        self.assertEqual(
            set(t.id for t in ThreadPrototype.get_last_threads(
                account=granted_account, limit=3)),
            set([self.thread.id, restricted_thread.id]))

        self.assertEqual(
            set(t.id for t in ThreadPrototype.get_last_threads(
                account=wrong_account, limit=3)), set([self.thread.id]))
Example #20
0
    def create(cls, author, caption, text):

        model = models.Post.objects.create(author=author._model,
                                           caption=caption,
                                           text=text,
                                           state=relations.POST_STATE.ACCEPTED,
                                           created_at_turn=turn.number(),
                                           votes=1)

        thread = ForumThreadPrototype.create(
            ForumSubCategoryPrototype.get_by_uid(
                conf.settings.FORUM_CATEGORY_UID),
            caption=caption,
            author=get_system_user(),
            text='обсуждение [url="%s%s"]произведения[/url]' %
            (project_settings.SITE_URL,
             reverse('blogs:posts:show', args=[model.id])),
            markup_method=MARKUP_METHOD.POSTMARKUP)

        model.forum_thread = thread._model
        model.save()

        post = cls(model)

        VotePrototype.create(post, author)

        for tag_id in conf.settings.DEFAULT_TAGS:
            models.Tagged.objects.create(post_id=post.id, tag_id=tag_id)

        return post
Example #21
0
    def create_thread(self):

        if not can_create_thread(self.account, self.subcategory):
            return self.json_error(
                'forum.create_thread.no_permissions',
                u'Вы не можете создавать темы в данном разделе')

        new_thread_delay = ThreadPrototype.get_new_thread_delay(self.account)
        if new_thread_delay > 0:
            error_message = (
                u'Создавать новые обсуждения можно не чаще раза в %d минут.<br/> Вы сможете создать новое обсуждение через %d сек.'
                %
                (int(forum_settings.THREAD_DELAY / 60), int(new_thread_delay)))
            return self.json_error('forum.create_thread.delay', error_message)

        new_thread_form = forms.NewThreadForm(self.request.POST)

        if not new_thread_form.is_valid():
            return self.json_error('forum.create_thread.form_errors',
                                   new_thread_form.errors)

        thread = ThreadPrototype.create(self.subcategory,
                                        caption=new_thread_form.c.caption,
                                        author=self.account,
                                        text=new_thread_form.c.text)

        return self.json_ok(
            data={
                'thread_url': reverse('forum:threads:show', args=[thread.id]),
                'thread_id': thread.id
            })
Example #22
0
    def create(cls, author, caption, text):

        model = models.Post.objects.create(author=author._model,
                                    caption=caption,
                                    text=text,
                                    state=relations.POST_STATE.ACCEPTED,
                                    created_at_turn=game_prototypes.TimePrototype.get_current_turn_number(),
                                    votes=1)

        thread = ForumThreadPrototype.create(ForumSubCategoryPrototype.get_by_uid(conf.settings.FORUM_CATEGORY_UID),
                                             caption=caption,
                                             author=get_system_user(),
                                             text=u'обсуждение [url="%s%s"]произведения[/url]' % (project_settings.SITE_URL,
                                                                                                  reverse('blogs:posts:show', args=[model.id])),
                                             markup_method=MARKUP_METHOD.POSTMARKUP)

        model.forum_thread = thread._model
        model.save()

        post = cls(model)

        VotePrototype.create(post, author)

        for tag_id in conf.settings.DEFAULT_TAGS:
            models.Tagged.objects.create(post_id=post.id, tag_id=tag_id)

        return post
Example #23
0
    def create(cls, owner, caption, rationale, bill, chronicle_on_accepted):

        model = Bill.objects.create(owner=owner._model,
                                    type=bill.type,
                                    caption=caption,
                                    rationale=rationale,
                                    created_at_turn=TimePrototype.get_current_turn_number(),
                                    technical_data=s11n.to_json(bill.serialize()),
                                    state=BILL_STATE.VOTING,
                                    chronicle_on_accepted=chronicle_on_accepted,
                                    votes_for=1) # author always wote for bill

        bill_prototype = cls(model)

        text = u'Обсуждение [url="%s%s"]закона[/url]' % (project_settings.SITE_URL,
                                                         reverse('game:bills:show', args=[model.id]) )

        thread = ThreadPrototype.create(SubCategoryPrototype.get_by_uid(bills_settings.FORUM_CATEGORY_UID),
                                        caption=caption,
                                        author=get_system_user(),
                                        text=bill_prototype.bill_info_text(text),
                                        technical=True,
                                        markup_method=MARKUP_METHOD.POSTMARKUP)

        model.forum_thread = thread._model
        model.save()

        ActorPrototype.update_actors(bill_prototype, bill_prototype.data.actors)

        VotePrototype.create(owner, bill_prototype, VOTE_TYPE.FOR)

        signals.bill_created.send(sender=cls, bill=bill_prototype)

        return bill_prototype
Example #24
0
    def test_forum_post_might(self):
        thread = ThreadPrototype.create(self.bills_subcategory, 'caption',
                                        self.account_2, 'text')
        PostPrototype.create(thread, self.account, 'text')

        self.assertTrue(calculate_might(self.account) > 0)
        self.assertTrue(calculate_might(self.account_2) > 0)
Example #25
0
    def test_forum_post_might__restricted(self):
        thread = ThreadPrototype.create(self.restricted_subcategory, 'caption',
                                        self.account_2, 'text')
        PostPrototype.create(thread, self.account, 'text')

        self.assertEqual(calculate_might(self.account), 0)
        self.assertEqual(calculate_might(self.account_2), 0)
Example #26
0
    def setUp(self):
        super(SubscriptionPrototypeTests, self).setUp()
        create_test_map()

        self.account = self.accounts_factory.create_account()
        self.account_2 = self.accounts_factory.create_account()

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory_1 = SubCategoryPrototype.create(category=self.category, caption='subcat-1-caption', order=0)
        self.subcategory_2 = SubCategoryPrototype.create(category=self.category, caption='subcat-2-caption', order=1)

        self.thread_1_1 = ThreadPrototype.create(self.subcategory_1, 'thread-1-1-caption', self.account, 'thread-1-1-text')
        self.thread_1_2 = ThreadPrototype.create(self.subcategory_1, 'thread-1-2-caption', self.account, 'thread-1-2-text')
        self.thread_1_3 = ThreadPrototype.create(self.subcategory_1, 'thread-1-3-caption', self.account_2, 'thread-1-3-text')
        self.thread_2_1 = ThreadPrototype.create(self.subcategory_2, 'thread-2-1-caption', self.account, 'thread-2-1-text')
        self.thread_2_2 = ThreadPrototype.create(self.subcategory_2, 'thread-2-2-caption', self.account, 'thread-2-2-text')
Example #27
0
    def setUp(self):
        super(SubcategoryPrototypeUpdateTests, self).setUp()

        create_test_map()

        register_user('test_user', '*****@*****.**', '111111')
        register_user('checked_user', '*****@*****.**', '111111')

        self.account = AccountPrototype.get_by_nick('test_user')
        self.checked_account = AccountPrototype.get_by_nick('checked_user')

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=2)

        self.thread_1 = ThreadPrototype.create(self.subcategory, 'thread-1-caption', self.account, 'thread-1-text')
        self.thread_2 = ThreadPrototype.create(self.subcategory, 'thread-2-caption', self.account, 'thread-2-text')
Example #28
0
    def create(cls, owner, caption, rationale, bill, chronicle_on_accepted):

        model = Bill.objects.create(owner=owner._model,
                                    type=bill.type,
                                    caption=caption,
                                    rationale=rationale,
                                    created_at_turn=TimePrototype.get_current_turn_number(),
                                    technical_data=s11n.to_json(bill.serialize()),
                                    state=BILL_STATE.VOTING,
                                    chronicle_on_accepted=chronicle_on_accepted,
                                    votes_for=1) # author always wote for bill

        bill_prototype = cls(model)

        text = u'Обсуждение [url="%s%s"]закона[/url]' % (project_settings.SITE_URL,
                                                         reverse('game:bills:show', args=[model.id]) )

        thread = ThreadPrototype.create(SubCategoryPrototype.get_by_uid(bills_settings.FORUM_CATEGORY_UID),
                                        caption=caption,
                                        author=get_system_user(),
                                        text=bill_prototype.bill_info_text(text),
                                        technical=True,
                                        markup_method=MARKUP_METHOD.POSTMARKUP)

        model.forum_thread = thread._model
        model.save()

        ActorPrototype.update_actors(bill_prototype, bill_prototype.data.actors)

        VotePrototype.create(owner, bill_prototype, VOTE_TYPE.FOR)

        signals.bill_created.send(sender=cls, bill=bill_prototype)

        return bill_prototype
Example #29
0
    def test_last_forum_posts_with_permissions(self):
        granted_account = self.accounts_factory.create_account()
        wrong_account = self.accounts_factory.create_account()

        restricted_subcategory = SubCategoryPrototype.create(
            category=self.category,
            caption='subcat2-caption',
            order=1,
            restricted=True)

        PermissionPrototype.create(granted_account, restricted_subcategory)

        restricted_thread = ThreadPrototype.create(
            restricted_subcategory, 'thread-restricted-caption', self.account,
            'thread-text')

        self.assertEqual(
            set(t.id for t in ThreadPrototype.get_last_threads(account=None,
                                                               limit=3)),
            set([self.thread.id]))

        self.assertEqual(
            set(t.id for t in ThreadPrototype.get_last_threads(
                account=granted_account, limit=3)),
            set([self.thread.id, restricted_thread.id]))

        self.assertEqual(
            set(t.id for t in ThreadPrototype.get_last_threads(
                account=wrong_account, limit=3)), set([self.thread.id]))
Example #30
0
    def setUp(self):
        super(ReadStateTests, self).setUp()
        create_test_map()

        register_user("user_1", "*****@*****.**", "111111")
        register_user("user_2", "*****@*****.**", "111111")

        self.account = AccountPrototype.get_by_nick("user_1")
        self.account_2 = AccountPrototype.get_by_nick("user_2")

        category = CategoryPrototype.create(caption="cat-caption", slug="cat-slug", order=0)
        self.subcategory = SubCategoryPrototype.create(category=category, caption="subcat-caption", order=0)
        self.subcategory_2 = SubCategoryPrototype.create(category=category, caption="subcat-2-caption", order=0)

        self.thread = ThreadPrototype.create(self.subcategory, "thread1-caption", self.account_2, "thread-text")
        self.thread_2 = ThreadPrototype.create(self.subcategory, "thread2-caption", self.account_2, "thread-2-text")
        self.thread_3 = ThreadPrototype.create(self.subcategory_2, "thread2-caption", self.account, "thread-2-text")
Example #31
0
    def test_delete(self):
        category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)

        subcategory_1 = SubCategoryPrototype.create(category=category, caption='subcat-1-caption', order=2)
        subcategory_2 = SubCategoryPrototype.create(category=category, caption='subcat-2-caption', order=1)

        thread_1_1 = ThreadPrototype.create(subcategory_1, 'thread-1_1-caption', self.account, 'thread-1_1-text')
        thread_1_2 = ThreadPrototype.create(subcategory_1, 'thread-1_2-caption', self.account, 'thread-1_2-text')
        thread_2_1 = ThreadPrototype.create(subcategory_2, 'thread-2_1-caption', self.account, 'thread-2_1-text')

        subcategory_1.delete()

        self.assertFalse(ThreadPrototype._db_filter(id__in=(thread_1_1.id, thread_1_2.id)).exists())
        self.assertTrue(ThreadPrototype._db_filter(id=thread_2_1.id).exists())

        self.assertFalse(SubCategoryPrototype._db_filter(id=subcategory_1.id).exists())
        self.assertTrue(SubCategoryPrototype._db_filter(id=subcategory_2.id).exists())
Example #32
0
    def test_importans_threads_on_first_page(self):
        texts = [self.thread1.caption,
                 (self.thread2.caption, 0),
                 (self.thread3.caption, 0)]

        self.thread2._model.important = True
        self.thread2.save()

        for i in xrange(forum_settings.THREADS_ON_PAGE):
            caption = 'thread-x-%d-caption' % i
            ThreadPrototype.create(self.subcat1, caption, self.account, 'thread-text')
            if i != 0:
                texts.append((caption, 0))
            else:
                texts.append(caption)

        self.check_html_ok(self.request_html(url('forum:subcategories:show', self.subcat1.id, page=2)), texts=texts)

        self.check_html_ok(self.request_html(url('forum:subcategories:show', self.subcat1.id, page=1)), texts=[self.thread2.caption])
Example #33
0
    def setUp(self):
        super(SubscriptionPrototypeTests, self).setUp()
        create_test_map()

        register_user('user_1', '*****@*****.**', '111111')
        register_user('user_2', '*****@*****.**', '111111')

        self.account = AccountPrototype.get_by_nick('user_1')
        self.account_2 = AccountPrototype.get_by_nick('user_2')

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory_1 = SubCategoryPrototype.create(category=self.category, caption='subcat-1-caption', order=0)
        self.subcategory_2 = SubCategoryPrototype.create(category=self.category, caption='subcat-2-caption', order=1)

        self.thread_1_1 = ThreadPrototype.create(self.subcategory_1, 'thread-1-1-caption', self.account, 'thread-1-1-text')
        self.thread_1_2 = ThreadPrototype.create(self.subcategory_1, 'thread-1-2-caption', self.account, 'thread-1-2-text')
        self.thread_1_3 = ThreadPrototype.create(self.subcategory_1, 'thread-1-3-caption', self.account_2, 'thread-1-3-text')
        self.thread_2_1 = ThreadPrototype.create(self.subcategory_2, 'thread-2-1-caption', self.account, 'thread-2-1-text')
        self.thread_2_2 = ThreadPrototype.create(self.subcategory_2, 'thread-2-2-caption', self.account, 'thread-2-2-text')
Example #34
0
    def setUp(self):
        super(ThreadPrototypeTests, self).setUp()
        create_test_map()

        register_user('test_user', '*****@*****.**', '111111')
        self.account = AccountPrototype.get_by_nick('test_user')

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=0)

        self.thread = ThreadPrototype.create(self.subcategory, 'thread-caption', self.account, 'thread-text')
Example #35
0
    def setUp(self):
        super(NewForumThreadTests, self).setUp()

        create_test_map()

        self.account_1 = self.accounts_factory.create_account()

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=0)
        self.thread = ThreadPrototype.create(self.subcategory, 'thread_1-caption', self.account_1, 'thread-text')

        self.message = MessagePrototype.get_priority_message()
Example #36
0
    def setUp(self):
        super(NewForumThreadTests, self).setUp()
        create_test_map()

        register_user('user_1', '*****@*****.**', '111111')
        self.account_1 = AccountPrototype.get_by_nick('user_1')

        self.category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        self.subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat-caption', order=0)
        self.thread = ThreadPrototype.create(self.subcategory, 'thread_1-caption', self.account_1, 'thread-text')

        self.message = MessagePrototype.get_priority_message()
Example #37
0
    def setUp(self):
        super(SubscriptionPrototypeTests, self).setUp()
        create_test_map()

        register_user('user_1', '*****@*****.**', '111111')
        register_user('user_2', '*****@*****.**', '111111')

        self.account = AccountPrototype.get_by_nick('user_1')
        self.account_2 = AccountPrototype.get_by_nick('user_2')

        self.category = CategoryPrototype.create(caption='cat-caption',
                                                 slug='cat-slug',
                                                 order=0)
        self.subcategory_1 = SubCategoryPrototype.create(
            category=self.category, caption='subcat-1-caption', order=0)
        self.subcategory_2 = SubCategoryPrototype.create(
            category=self.category, caption='subcat-2-caption', order=1)

        self.thread_1_1 = ThreadPrototype.create(self.subcategory_1,
                                                 'thread-1-1-caption',
                                                 self.account,
                                                 'thread-1-1-text')
        self.thread_1_2 = ThreadPrototype.create(self.subcategory_1,
                                                 'thread-1-2-caption',
                                                 self.account,
                                                 'thread-1-2-text')
        self.thread_1_3 = ThreadPrototype.create(self.subcategory_1,
                                                 'thread-1-3-caption',
                                                 self.account_2,
                                                 'thread-1-3-text')
        self.thread_2_1 = ThreadPrototype.create(self.subcategory_2,
                                                 'thread-2-1-caption',
                                                 self.account,
                                                 'thread-2-1-text')
        self.thread_2_2 = ThreadPrototype.create(self.subcategory_2,
                                                 'thread-2-2-caption',
                                                 self.account,
                                                 'thread-2-2-text')
Example #38
0
    def setUp(self):
        super(SubcategoryPrototypeUpdateTests, self).setUp()

        create_test_map()

        register_user('test_user', '*****@*****.**', '111111')
        register_user('checked_user', '*****@*****.**', '111111')

        self.account = AccountPrototype.get_by_nick('test_user')
        self.checked_account = AccountPrototype.get_by_nick('checked_user')

        self.category = CategoryPrototype.create(caption='cat-caption',
                                                 slug='cat-slug',
                                                 order=0)
        self.subcategory = SubCategoryPrototype.create(
            category=self.category, caption='subcat-caption', order=2)

        self.thread_1 = ThreadPrototype.create(self.subcategory,
                                               'thread-1-caption',
                                               self.account, 'thread-1-text')
        self.thread_2 = ThreadPrototype.create(self.subcategory,
                                               'thread-2-caption',
                                               self.account, 'thread-2-text')
Example #39
0
    def setUp(self):
        super(ThreadReadInfoPrototypeTests, self).setUp()
        create_test_map()

        register_user('user_1', '*****@*****.**', '111111')
        register_user('user_2', '*****@*****.**', '111111')

        self.account = AccountPrototype.get_by_nick('user_1')
        self.account_2 = AccountPrototype.get_by_nick('user_2')

        category = CategoryPrototype.create(caption='cat-caption', slug='cat-slug', order=0)
        subcategory = SubCategoryPrototype.create(category=category, caption='subcat-caption', order=0)

        self.thread = ThreadPrototype.create(subcategory, 'thread1-caption', self.account, 'thread-text')
Example #40
0
    def setUp(self):
        super(ThreadPrototypeTests, self).setUp()
        create_test_map()

        register_user('test_user', '*****@*****.**', '111111')
        self.account = AccountPrototype.get_by_nick('test_user')

        self.category = CategoryPrototype.create(caption='cat-caption',
                                                 slug='cat-slug',
                                                 order=0)
        self.subcategory = SubCategoryPrototype.create(
            category=self.category, caption='subcat-caption', order=0)

        self.thread = ThreadPrototype.create(self.subcategory,
                                             'thread-caption', self.account,
                                             'thread-text')
Example #41
0
    def setUp(self):
        super(NewForumThreadTests, self).setUp()

        create_test_map()

        self.account_1 = self.accounts_factory.create_account()

        self.category = CategoryPrototype.create(caption='cat-caption',
                                                 slug='cat-slug',
                                                 order=0)
        self.subcategory = SubCategoryPrototype.create(
            category=self.category, caption='subcat-caption', order=0)
        self.thread = ThreadPrototype.create(self.subcategory,
                                             'thread_1-caption',
                                             self.account_1, 'thread-text')

        self.message = MessagePrototype.get_priority_message()
Example #42
0
    def test_last_forum_posts_with_permissions(self):
        granted_account = self.accounts_factory.create_account()
        wrong_account = self.accounts_factory.create_account()

        restricted_subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat2-caption', order=1, restricted=True)

        PermissionPrototype.create(granted_account, restricted_subcategory)

        restricted_thread = ThreadPrototype.create(restricted_subcategory, 'thread-restricted-caption', self.account, 'thread-text')

        self.assertEqual(set(t.id for t in ThreadPrototype.get_last_threads(account=None, limit=3)),
                         set([self.thread.id]))

        self.assertEqual(set(t.id for t in ThreadPrototype.get_last_threads(account=granted_account, limit=3)),
                         set([self.thread.id, restricted_thread.id]))

        self.assertEqual(set(t.id for t in ThreadPrototype.get_last_threads(account=wrong_account, limit=3)),
                         set([self.thread.id]))
Example #43
0
    def setUp(self):
        super(ThreadReadInfoPrototypeTests, self).setUp()
        create_test_map()

        register_user('user_1', '*****@*****.**', '111111')
        register_user('user_2', '*****@*****.**', '111111')

        self.account = AccountPrototype.get_by_nick('user_1')
        self.account_2 = AccountPrototype.get_by_nick('user_2')

        category = CategoryPrototype.create(caption='cat-caption',
                                            slug='cat-slug',
                                            order=0)
        subcategory = SubCategoryPrototype.create(category=category,
                                                  caption='subcat-caption',
                                                  order=0)

        self.thread = ThreadPrototype.create(subcategory, 'thread1-caption',
                                             self.account, 'thread-text')
Example #44
0
    def test_feed_page(self):

        self.thread1._model.created_at -= datetime.timedelta(
            seconds=forum_settings.FEED_ITEMS_DELAY + 1)
        self.thread1.save()

        self.thread3._model.created_at -= datetime.timedelta(
            seconds=forum_settings.FEED_ITEMS_DELAY + 1)
        self.thread3.save()

        PostPrototype.create(self.thread1, self.account, 'post2-text')
        PostPrototype.create(self.thread1, self.account, 'post3-text')
        PostPrototype.create(self.thread2, self.account, 'post4-text')
        PostPrototype.create(self.thread2, self.account, 'post5-text')
        PostPrototype.create(self.thread3, self.account, 'post6-text')

        # restricted
        self.subcat2._model.restricted = True
        self.subcat2.save()

        thread2_2 = ThreadPrototype.create(self.subcat2, 'thread2_2-caption',
                                           self.account, 'thread2_2-text')

        PostPrototype.create(thread2_2, self.account, 'post7-text')
        PostPrototype.create(thread2_2, self.account, 'post8-text')

        texts = [
            ('thread1-caption', 1),
            ('thread1-text', 1),
            ('thread2-caption', 0),  # not pass throught time limit
            ('thread2-text', 0),
            ('thread3-caption', 1),
            ('thread3-text', 1),
            ('thread2_2-caption', 0),
            ('thread2_2-text', 0)
        ]

        texts.extend([('post%d-text' % i, 0) for i in xrange(0, 9)])

        self.check_html_ok(self.request_html(url('forum:feed')),
                           texts=texts,
                           content_type='application/atom+xml')
Example #45
0
    def test_feed_page(self):

        self.thread1._model.created_at -= datetime.timedelta(seconds=forum_settings.FEED_ITEMS_DELAY+1)
        self.thread1.save()

        self.thread3._model.created_at -= datetime.timedelta(seconds=forum_settings.FEED_ITEMS_DELAY+1)
        self.thread3.save()

        PostPrototype.create(self.thread1, self.account, 'post2-text')
        PostPrototype.create(self.thread1, self.account, 'post3-text')
        PostPrototype.create(self.thread2, self.account, 'post4-text')
        PostPrototype.create(self.thread2, self.account, 'post5-text')
        PostPrototype.create(self.thread3, self.account, 'post6-text')

        # restricted
        self.subcat2._model.restricted = True
        self.subcat2.save()

        thread2_2 = ThreadPrototype.create(self.subcat2, 'thread2_2-caption', self.account, 'thread2_2-text')

        PostPrototype.create(thread2_2, self.account, 'post7-text')
        PostPrototype.create(thread2_2, self.account, 'post8-text')

        texts = [('thread1-caption', 1),
                 ('thread1-text', 1),

                 ('thread2-caption', 0), # not pass throught time limit
                 ('thread2-text', 0),

                 ('thread3-caption', 1),
                 ('thread3-text', 1),

                 ('thread2_2-caption', 0),
                 ('thread2_2-text', 0)]

        texts.extend([('post%d-text' % i, 0) for i in xrange(0, 9)])

        self.check_html_ok(self.request_html(url('forum:feed')), texts=texts, content_type='application/atom+xml')
Example #46
0
    def test_last_forum_posts_with_permissions(self):

        register_user('granted_user', '*****@*****.**', '111111')
        register_user('wrong_user', '*****@*****.**', '111111')


        granted_account = AccountPrototype.get_by_nick('granted_user')
        wrong_account = AccountPrototype.get_by_nick('wrong_user')

        restricted_subcategory = SubCategoryPrototype.create(category=self.category, caption='subcat2-caption', order=1, restricted=True)

        PermissionPrototype.create(granted_account, restricted_subcategory)

        restricted_thread = ThreadPrototype.create(restricted_subcategory, 'thread-restricted-caption', self.account, 'thread-text')

        self.assertEqual(set(t.id for t in ThreadPrototype.get_last_threads(account=None, limit=3)),
                         set([self.thread.id]))

        self.assertEqual(set(t.id for t in ThreadPrototype.get_last_threads(account=granted_account, limit=3)),
                         set([self.thread.id, restricted_thread.id]))

        self.assertEqual(set(t.id for t in ThreadPrototype.get_last_threads(account=wrong_account, limit=3)),
                         set([self.thread.id]))
Example #47
0
    def create_thread(self):

        if not can_create_thread(self.account, self.subcategory):
            return self.json_error('forum.create_thread.no_permissions', 'Вы не можете создавать темы в данном разделе')

        new_thread_delay = ThreadPrototype.get_new_thread_delay(self.account)
        if new_thread_delay > 0:
            error_message = ('Создавать новые обсуждения можно не чаще раза в %d минут.<br/> Вы сможете создать новое обсуждение через %d сек.' %
                             ( int(forum_settings.THREAD_DELAY / 60),
                               int(new_thread_delay)))
            return self.json_error('forum.create_thread.delay', error_message)

        new_thread_form = forms.NewThreadForm(self.request.POST)

        if not new_thread_form.is_valid():
            return self.json_error('forum.create_thread.form_errors', new_thread_form.errors)

        thread = ThreadPrototype.create(self.subcategory,
                                        caption=new_thread_form.c.caption,
                                        author=self.account,
                                        text=new_thread_form.c.text)

        return self.json_ok(data={'thread_url': reverse('forum:threads:show', args=[thread.id]),
                                  'thread_id': thread.id})
Example #48
0
    def test_forum_post_might(self):
        thread = ThreadPrototype.create(self.bills_subcategory, 'caption', self.account_2, 'text')
        PostPrototype.create(thread, self.account, 'text')

        self.assertTrue(calculate_might(self.account) > 0)
        self.assertTrue(calculate_might(self.account_2) > 0)
Example #49
0
    def test_forum_thread_might(self):
        ThreadPrototype.create(self.bills_subcategory, 'caption', self.account, 'text')

        self.assertTrue(calculate_might(self.account) > 0)
        self.assertEqual(calculate_might(self.account_2), 0)
Example #50
0
 def test_subcategory_has_new_messages__new_thread(self):
     SubCategoryReadInfoPrototype.read_all_in_subcategory(subcategory=self.subcategory, account=self.account)
     self.assertFalse(self.get_read_state().subcategory_has_new_messages(self.subcategory))
     ThreadPrototype.create(self.subcategory, 'new-threwad', self.account_2, 'thread-new-text')
     self.assertTrue(self.get_read_state().subcategory_has_new_messages(self.subcategory))
Example #51
0
    def test_update_subcategory_on_create(self):
        with mock.patch('the_tale.forum.prototypes.SubCategoryPrototype.update') as subcategory_update:
            ThreadPrototype.create(self.subcategory, 'thread-2-caption', self.account, 'thread-2-text')

        self.assertEqual(subcategory_update.call_count, 1)
Example #52
0
    def test_forum_post_might__restricted(self):
        thread = ThreadPrototype.create(self.restricted_subcategory, 'caption', self.account_2, 'text')
        PostPrototype.create(thread, self.account, 'text')

        self.assertEqual(calculate_might(self.account), 0)
        self.assertEqual(calculate_might(self.account_2), 0)
Example #53
0
 def test_forum_thread_might__restricted(self):
     ThreadPrototype.create(self.restricted_subcategory, 'caption',
                            self.account, 'text')
     self.assertEqual(calculate_might(self.account), 0)
Example #54
0
 def test_forum_thread_might__restricted(self):
     ThreadPrototype.create(self.restricted_subcategory, 'caption', self.account, 'text')
     self.assertEqual(calculate_might(self.account),  0)