Beispiel #1
0
def portal_day_started(sender, **kwargs): # pylint: disable=W0613
    accounts_query = AccountPrototype.live_query().filter(active_end_at__gt=datetime.datetime.now(),
                                                          ban_game_end_at__lt=datetime.datetime.now(),
                                                          ban_forum_end_at__lt=datetime.datetime.now(),
                                                          premium_end_at__lt=datetime.datetime.now())

    accounts_number = accounts_query.count()
    if accounts_number < 1:
        return

    account_model = accounts_query[random.randint(0, accounts_number-1)]

    account = AccountPrototype(model=account_model)

    settings[portal_settings.SETTINGS_ACCOUNT_OF_THE_DAY_KEY] = str(account.id)

    environment.workers.accounts_manager.cmd_run_account_method(account_id=account.id,
                                                                method_name=AccountPrototype.prolong_premium.__name__,
                                                                data={'days': portal_settings.PREMIUM_DAYS_FOR_HERO_OF_THE_DAY})

    message = u'''
Поздравляем!

Ваш герой выбран героем дня и Вы получаете %(days)d дней подписки!
''' % {'days': portal_settings.PREMIUM_DAYS_FOR_HERO_OF_THE_DAY}

    MessagePrototype.create(get_system_user(), account, message)
Beispiel #2
0
    def request_friendship(cls, friend_1, friend_2, text=None):
        own_request = cls._get_for(friend_1, friend_2)
        if own_request:
            if text is not None: #
                own_request._model.text = text
                own_request.save()
            return own_request

        his_request = cls._get_for(friend_2, friend_1)
        if his_request:
            his_request._confirm()
            return his_request

        model = cls._model_class.objects.create(friend_1=friend_1._model,
                                                friend_2=friend_2._model,
                                                text=text)
        prototype = cls(model=model)

        message = u'''
игрок %(account_link)s предлагает вам дружить:

%(text)s

----------
принять или отклонить предложение вы можете на этой странице: %(friends_link)s
''' % {'account_link': u'[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', friend_1.id), friend_1.nick_verbose),
       'text': text,
       'friends_link': u'[url="%s"]предложения дружбы[/url]' % full_url('http', 'accounts:friends:candidates')}

        # send message from name of user, who request friendship
        # since many users try to respod to system user
        MessagePrototype.create(friend_1, friend_2, message)

        return prototype
Beispiel #3
0
    def create_reject_request_message(self, initiator):
        message = '''
Игрок %(clan_leader_link)s отказал вам в принятии в гильдию %(clan_link)s.
''' % {'clan_leader_link': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', initiator.id), initiator.nick_verbose),
       'clan_link': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:clans:show', self.clan.id), self.clan.name)}

        MessagePrototype.create(initiator, self.account, message)
Beispiel #4
0
    def create_remove_member_message(self, initiator, removed_account):
        message = '''
Игрок %(clan_leader_link)s исключил вас из гильдии %(clan_link)s.
''' % {'clan_leader_link': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', initiator.id), initiator.nick_verbose),
       'clan_link': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:clans:show', self.id), self.name)}

        MessagePrototype.create(initiator, removed_account, message)
Beispiel #5
0
def portal_day_started(sender, **kwargs):  # pylint: disable=W0613
    accounts_query = AccountPrototype.live_query().filter(
        active_end_at__gt=datetime.datetime.now(),
        ban_game_end_at__lt=datetime.datetime.now(),
        ban_forum_end_at__lt=datetime.datetime.now(),
        premium_end_at__lt=datetime.datetime.now())

    accounts_number = accounts_query.count()
    if accounts_number < 1:
        return

    account_model = accounts_query[random.randint(0, accounts_number - 1)]

    account = AccountPrototype(model=account_model)

    settings[portal_settings.SETTINGS_ACCOUNT_OF_THE_DAY_KEY] = str(account.id)

    environment.workers.accounts_manager.cmd_run_account_method(
        account_id=account.id,
        method_name=AccountPrototype.prolong_premium.__name__,
        data={'days': portal_settings.PREMIUM_DAYS_FOR_HERO_OF_THE_DAY})

    message = '''
Поздравляем!

Ваш герой выбран героем дня и Вы получаете %(days)d дней подписки!
''' % {
        'days': portal_settings.PREMIUM_DAYS_FOR_HERO_OF_THE_DAY
    }

    MessagePrototype.create(get_system_user(), account, message)
Beispiel #6
0
    def process(self):
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype as PersonalMessagePrototype
        from the_tale.accounts.logic import get_system_user

        accounts_ids = AccountPrototype.live_query().filter(
            is_fast=False,
            created_at__lt=datetime.datetime.now() -
            accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER,
            active_end_at__gt=datetime.datetime.now(),
            premium_end_at__lt=datetime.datetime.now()).exclude(
                id=self.initiator_id).values_list('id', flat=True)

        if not accounts_ids:
            return False

        account = AccountPrototype.get_by_id(random.choice(accounts_ids))

        with transaction.atomic():
            account.prolong_premium(self.days)
            account.save()

            PersonalMessagePrototype.create(get_system_user(), account,
                                            self.MESSAGE % {'days': self.days})

            self.receiver_id = account.id
            self.state = relations.RANDOM_PREMIUM_REQUEST_STATE.PROCESSED
            self.save()

        return True
Beispiel #7
0
    def remove_friendship(cls, initiator, friend):
        request = cls.get_for_bidirectional(initiator, friend)

        if request is None: return

        if request.is_confirmed:
            MessagePrototype.create(
                get_system_user(), friend,
                'игрок %(account_link)s удалил вас из списка друзей' % {
                    'account_link':
                    '[url="%s"]%s[/url]' %
                    (full_url('http', 'accounts:show',
                              initiator.id), initiator.nick_verbose)
                })
        else:
            MessagePrototype.create(
                get_system_user(), friend,
                'игрок %(account_link)s отказался добавить вас в список друзей'
                % {
                    'account_link':
                    '[url="%s"]%s[/url]' %
                    (full_url('http', 'accounts:show',
                              initiator.id), initiator.nick_verbose)
                })

        request.remove()

        return
Beispiel #8
0
    def process(self):
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype as PersonalMessagePrototype
        from the_tale.accounts.logic import get_system_user

        accounts_ids = AccountPrototype.live_query().filter(is_fast=False,
                                                            created_at__lt=datetime.datetime.now() - accounts_settings.RANDOM_PREMIUM_CREATED_AT_BARRIER,
                                                            active_end_at__gt=datetime.datetime.now(),
                                                            premium_end_at__lt=datetime.datetime.now()).exclude(id=self.initiator_id).values_list('id', flat=True)

        if not accounts_ids:
            return False

        account = AccountPrototype.get_by_id(random.choice(accounts_ids))

        with transaction.atomic():
            account.prolong_premium(self.days)
            account.save()

            PersonalMessagePrototype.create(get_system_user(), account, self.MESSAGE % {'days': self.days})

            self.receiver_id = account.id
            self.state = relations.RANDOM_PREMIUM_REQUEST_STATE.PROCESSED
            self.save()

        return True
Beispiel #9
0
 def _confirm(self):
     MessagePrototype.create(get_system_user(),
                             self.friend_1,
                             u'игрок %(account_link)s подтвердил, что вы являетесь друзьями' %
                             {'account_link': u'[url=%s]%s[/url]' % (full_url('http', 'accounts:show', self.friend_2.id), self.friend_2.nick_verbose)})
     self._model.is_confirmed = True
     self.save()
Beispiel #10
0
def reset_bans(context):

    context.master_account.reset_ban_forum()
    context.master_account.reset_ban_game()

    MessagePrototype.create(logic.get_system_user(), context.master_account,
                            'С вас сняли все ограничения, наложенные ранее.')

    return dext_views.AjaxOk()
Beispiel #11
0
    def test_index_second_page(self):
        for i in range(conf.settings.MESSAGES_ON_PAGE):
            MessagePrototype.create(self.account2, self.account1, 'test message_2_1 %d' % i)

        texts = []
        for i in range(conf.settings.MESSAGES_ON_PAGE):
            texts.append(('test message_2_1 %d' % i, 1))

        self.request_login(self.account1.email)
        self.check_html_ok(self.request_html(url('accounts:messages:')), texts=texts)
Beispiel #12
0
def reset_bans(context):

    context.master_account.reset_ban_forum()
    context.master_account.reset_ban_game()

    MessagePrototype.create(logic.get_system_user(),
                            context.master_account,
                            u'С вас сняли все ограничения, наложенные ранее.')

    return dext_views.AjaxOk()
Beispiel #13
0
    def setUp(self):
        super(PrototypeTests, self).setUp()
        create_test_map()

        self.account1 = self.accounts_factory.create_account()
        self.account2 = self.accounts_factory.create_account()
        self.account3 = self.accounts_factory.create_account()

        self.message = MessagePrototype.create(self.account1, self.account2, 'message 1')
        self.message_2 = MessagePrototype.create(self.account1, self.account2, 'message 2')
Beispiel #14
0
 def _confirm(self):
     MessagePrototype.create(
         get_system_user(), self.friend_1,
         'игрок %(account_link)s подтвердил, что вы являетесь друзьями' % {
             'account_link':
             '[url=%s]%s[/url]' %
             (full_url('http', 'accounts:show',
                       self.friend_2.id), self.friend_2.nick_verbose)
         })
     self._model.is_confirmed = True
     self.save()
Beispiel #15
0
    def setUp(self):
        super(PrototypeTests, self).setUp()
        create_test_map()

        self.account1 = self.accounts_factory.create_account()
        self.account2 = self.accounts_factory.create_account()
        self.account3 = self.accounts_factory.create_account()

        self.message = MessagePrototype.create(self.account1, self.account2,
                                               'message 1')
        self.message_2 = MessagePrototype.create(self.account1, self.account2,
                                                 'message 2')
Beispiel #16
0
    def test_index_second_page(self):
        for i in xrange(conf.settings.MESSAGES_ON_PAGE):
            MessagePrototype.create(self.account2, self.account1,
                                    'test message_2_1 %d' % i)

        texts = []
        for i in xrange(conf.settings.MESSAGES_ON_PAGE):
            texts.append(('test message_2_1 %d' % i, 1))

        self.request_login(self.account1.email)
        self.check_html_ok(self.request_html(url('accounts:messages:')),
                           texts=texts)
Beispiel #17
0
    def test_remove_old_messages__hiden_by_recipients(self):
        message_3 = MessagePrototype.create(self.account1, self.account2, 'message 3')
        MessagePrototype.create(self.account1, self.account2, 'message 3')

        self.message.hide_from(sender=True)
        self.message_2.hide_from(recipient=True)
        message_3.hide_from(sender=True, recipient=True)

        with self.check_delta(MessagePrototype._db_count, -1):
            MessagePrototype.remove_old_messages()

        self.assertEqual(MessagePrototype.get_by_id(message_3.id), None)
    def increment_level(self, send_message=False):
        from the_tale.accounts.prototypes import AccountPrototype
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype
        from the_tale.accounts.logic import get_system_user

        self._model.level += 1
        self.add_message('hero_common_journal_level_up', hero=self, level=self.level)

        self.force_save_required = True

        if send_message:
            account = AccountPrototype.get_by_id(self.account_id)
            MessagePrototype.create(get_system_user(), account, text=u'Поздравляем, Ваш герой получил %d уровень!' % self.level)
Beispiel #19
0
    def test_mail_send__to_system_user(self):
        from the_tale.accounts.logic import get_system_user

        Message.objects.all().delete()

        PersonalMessagePrototype.create(self.account_1, get_system_user(), 'test text')

        message = MessagePrototype.get_priority_message()

        self.assertEqual(len(mail.outbox), 0)
        message.process()
        self.assertTrue(message.state.is_PROCESSED)
        self.assertEqual(len(mail.outbox), 0)
Beispiel #20
0
    def test_remove_old_messages__hiden_by_recipients(self):
        message_3 = MessagePrototype.create(self.account1, self.account2,
                                            'message 3')
        MessagePrototype.create(self.account1, self.account2, 'message 3')

        self.message.hide_from(sender=True)
        self.message_2.hide_from(recipient=True)
        message_3.hide_from(sender=True, recipient=True)

        with self.check_delta(MessagePrototype._db_count, -1):
            MessagePrototype.remove_old_messages()

        self.assertEqual(MessagePrototype.get_by_id(message_3.id), None)
Beispiel #21
0
    def create_request_message(self, initiator):
        message = '''
Игрок %(account)s просит принять его в вашу гильдию:

%(text)s

----------
принять или отклонить предложение вы можете на этой странице: %(invites_link)s
''' % {'account': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', self.account.id), self.account.nick_verbose),
       'text': self.text,
       'invites_link': '[url="%s"]Заявки в гильдию[/url]' % full_url('http', 'accounts:clans:membership:for-clan')}

        MessagePrototype.create(initiator, self.clan.get_leader(), message)
Beispiel #22
0
    def increment_level(self, send_message=False):
        from the_tale.accounts.prototypes import AccountPrototype
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype
        from the_tale.accounts.logic import get_system_user

        self._model.level += 1
        self.add_message('hero_common_journal_level_up', hero=self, level=self.level)

        self.force_save_required = True

        if send_message:
            account = AccountPrototype.get_by_id(self.account_id)
            MessagePrototype.create(get_system_user(), account, text=u'Поздравляем, Ваш герой получил %d уровень!' % self.level)
Beispiel #23
0
    def test_remove_old_messages__system_user(self):

        system_user = get_system_user()

        messages = [
            MessagePrototype.create(self.account1, self.account2, 'message 1'),
            MessagePrototype.create(system_user, self.account2, 'message 2'),
            MessagePrototype.create(self.account1, system_user, 'message 3'),
            MessagePrototype.create(system_user, system_user, 'message 4'),
            MessagePrototype.create(self.account1, self.account2, 'message 5'),
            MessagePrototype.create(system_user, self.account2, 'message 6'),
            MessagePrototype.create(self.account1, system_user, 'message 7'),
            MessagePrototype.create(system_user, system_user, 'message 8')
        ]

        for message in messages[-4:]:
            message._model.created_at = datetime.datetime.now(
            ) - conf.settings.SYSTEM_MESSAGES_LEAVE_TIME
            message.save()

        with self.check_delta(MessagePrototype._db_count, -3):
            MessagePrototype.remove_old_messages()

        for message in messages[:5]:
            self.assertNotEqual(MessagePrototype.get_by_id(message.id), None)
Beispiel #24
0
    def notify_about_premium_expiration(self):
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype as PersonalMessagePrototype
        from the_tale.accounts.logic import get_system_user

        current_time = datetime.datetime.now()

        message = u'''
До окончания подписки осталось: %(verbose_timedelta)s.

Вы можете продлить подписку на странице нашего %(shop_link)s.
''' % {'verbose_timedelta': verbose_timedelta(self.premium_end_at - current_time),
       'shop_link': u'[url="%s"]магазина[/url]' % full_url('http', 'shop:shop')}

        PersonalMessagePrototype.create(get_system_user(), self, message)
Beispiel #25
0
    def create_invite_message(self, initiator):
        message = '''
Игрок %(clan_leader_link)s предлагает вам вступить в гильдию %(clan_link)s:

%(text)s

----------
принять или отклонить предложение вы можете на этой странице: %(invites_link)s
''' % {'clan_leader_link': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', initiator.id), initiator.nick_verbose),
       'text': self.text,
       'clan_link': '[url="%s"]%s[/url]' % (full_url('http', 'accounts:clans:show', self.clan.id), self.clan.name),
       'invites_link': '[url="%s"]Приглашения в гильдию [/url]' % full_url('http', 'accounts:clans:membership:for-account')}

        MessagePrototype.create(initiator, self.account, message)
Beispiel #26
0
    def test_mail_send__to_system_user(self):
        from the_tale.accounts.logic import get_system_user

        Message.objects.all().delete()

        PersonalMessagePrototype.create(self.account_1, get_system_user(),
                                        'test text')

        message = MessagePrototype.get_priority_message()

        self.assertEqual(len(mail.outbox), 0)
        message.process()
        self.assertTrue(message.state.is_PROCESSED)
        self.assertEqual(len(mail.outbox), 0)
Beispiel #27
0
    def setUp(self):
        super(PrototypeTests, self).setUp()
        create_test_map()

        result, account_id, bundle_id = register_user('test_user1', '*****@*****.**', '111111')
        self.account1 = AccountPrototype.get_by_id(account_id)

        result, account_id, bundle_id = register_user('test_user2', '*****@*****.**', '111111')
        self.account2 = AccountPrototype.get_by_id(account_id)

        result, account_id, bundle_id = register_user('test_user3', '*****@*****.**', '111111')
        self.account3 = AccountPrototype.get_by_id(account_id)

        self.message = MessagePrototype.create(self.account1, self.account2, 'message 1')
        self.message_2 = MessagePrototype.create(self.account1, self.account2, 'message 2')
Beispiel #28
0
 def test_answer_to_no_permissions(self):
     message = MessagePrototype.create(self.account2, self.account3,
                                       'message_2_3 1')
     self.check_html_ok(self.post_ajax_html(
         url('accounts:messages:new', answer_to=message.id),
         {'recipients': self.account2.id}),
                        texts=[('pgf-error-no_permissions_to_answer_to', 1)
                               ])
Beispiel #29
0
 def test_answer_to(self):
     message = MessagePrototype.create(self.account2, self.account1,
                                       'message_2_1 1')
     self.check_html_ok(self.post_ajax_html(
         url('accounts:messages:new', answer_to=message.id),
         {'recipients': self.account2.id}),
                        texts=[('pgf-new-message-form', 1),
                               ('message_2_1 1', 1)])
Beispiel #30
0
    def setUp(self):
        super(IndexRequestsTests, self).setUp()

        self.messages_1_2 = [
            MessagePrototype.create(self.account1, self.account2,
                                    'message_1_2 1'),
            MessagePrototype.create(self.account1, self.account2,
                                    'message_1_2 2'),
            MessagePrototype.create(self.account1, self.account2,
                                    'message_1_2 3')
        ]

        self.messages_2_1 = [
            MessagePrototype.create(self.account2, self.account1,
                                    'message_2_1 1'),
            MessagePrototype.create(self.account2, self.account1,
                                    'message_2_1 2')
        ]

        self.messages_3_1 = [
            MessagePrototype.create(self.account3, self.account1,
                                    'message_3_1 1')
        ]
        self.messages_3_2 = [
            MessagePrototype.create(self.account3, self.account2,
                                    'message_3_2 1')
        ]
Beispiel #31
0
    def notify_about_premium_expiration(self):
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype as PersonalMessagePrototype
        from the_tale.accounts.logic import get_system_user

        current_time = datetime.datetime.now()

        message = '''
До окончания подписки осталось: %(verbose_timedelta)s.

Вы можете продлить подписку на странице нашего %(shop_link)s.
''' % {
            'verbose_timedelta':
            verbose_timedelta(self.premium_end_at - current_time),
            'shop_link':
            '[url="%s"]магазина[/url]' % full_url('http', 'shop:shop')
        }

        PersonalMessagePrototype.create(get_system_user(), self, message)
Beispiel #32
0
    def add_achievement(self, achievement, notify):
        from the_tale.collections.prototypes import GiveItemTaskPrototype
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype
        from the_tale.accounts.logic import get_system_user

        already_had_achievement = self.achievements.has_achievement(
            achievement)

        self.achievements.add_achievement(achievement)
        self._model.points = self.achievements.get_points()

        rewards = achievement.rewards
        approved_rewards = achievement.approved_rewards

        for item in rewards:
            GiveItemTaskPrototype.create(self.account_id, item.id)

        if not notify or already_had_achievement:
            return

        rewards_message = ''

        if approved_rewards:
            reward_texts = []
            for item in approved_rewards:
                reward_texts.append('[url=%s#k%d]%s[/url]' % (full_url(
                    'http', 'collections:collections:show',
                    item.kit.collection.id), item.kit.id, item.caption))
            rewards_message = 'Награды: %s' % ', '.join(reward_texts)

        message = (
            'Вы заработали достижение «%(achievement)s» — %(description)s. %(rewards_message)s'
            % {
                'achievement':
                '[url=%s#a%d]%s[/url]' %
                (full_url('http', 'accounts:achievements:group', achievement.
                          group.slug), achievement.id, achievement.caption),
                'description':
                achievement.description,
                'rewards_message':
                rewards_message
            })

        MessagePrototype.create(get_system_user(), self.account, message)
Beispiel #33
0
    def remove_friendship(cls, initiator, friend):
        request = cls.get_for_bidirectional(initiator, friend)

        if request is None: return

        if request.is_confirmed:
            MessagePrototype.create(get_system_user(),
                                    friend,
                                    u'игрок %(account_link)s удалил вас из списка друзей' %
                                    {'account_link': u'[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', initiator.id), initiator.nick_verbose)})
        else:
            MessagePrototype.create(get_system_user(),
                                    friend,
                                    u'игрок %(account_link)s отказался добавить вас в список друзей' %
                                    {'account_link': u'[url="%s"]%s[/url]' % (full_url('http', 'accounts:show', initiator.id), initiator.nick_verbose)})

        request.remove()

        return
Beispiel #34
0
def ban(context):

    if context.form.c.ban_type.is_FORUM:
        context.master_account.ban_forum(context.form.c.ban_time.days)
        message = 'Вы лишены права общаться на форуме. Причина: \n\n%(message)s'
    elif context.form.c.ban_type.is_GAME:
        context.master_account.ban_game(context.form.c.ban_time.days)
        message = 'Ваш герой лишён возможности влиять на мир игры. Причина: \n\n%(message)s'
    elif context.form.c.ban_type.is_TOTAL:
        context.master_account.ban_forum(context.form.c.ban_time.days)
        context.master_account.ban_game(context.form.c.ban_time.days)
        message = 'Вы лишены права общаться на форуме, ваш герой лишён возможности влиять на мир игры. Причина: \n\n%(message)s'
    else:
        raise dext_views.ViewError(code='unknown_ban_type',
                                   message='Неизвестный тип бана')

    MessagePrototype.create(logic.get_system_user(), context.master_account,
                            message % {'message': context.form.c.description})

    return dext_views.AjaxOk()
Beispiel #35
0
def ban(context):

    if context.form.c.ban_type.is_FORUM:
        context.master_account.ban_forum(context.form.c.ban_time.days)
        message = u'Вы лишены права общаться на форуме. Причина: \n\n%(message)s'
    elif context.form.c.ban_type.is_GAME:
        context.master_account.ban_game(context.form.c.ban_time.days)
        message = u'Ваш герой лишён возможности влиять на мир игры. Причина: \n\n%(message)s'
    elif context.form.c.ban_type.is_TOTAL:
        context.master_account.ban_forum(context.form.c.ban_time.days)
        context.master_account.ban_game(context.form.c.ban_time.days)
        message = u'Вы лишены права общаться на форуме, ваш герой лишён возможности влиять на мир игры. Причина: \n\n%(message)s'
    else:
        raise dext_views.ViewError(code='unknown_ban_type', message=u'Неизвестный тип бана')

    MessagePrototype.create(logic.get_system_user(),
                            context.master_account,
                            message % {'message': context.form.c.description})

    return dext_views.AjaxOk()
Beispiel #36
0
    def setUp(self):
        super(PersonalMessagesTests, self).setUp()

        create_test_map()

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

        self.personal_message = PersonalMessagePrototype.create(self.account_1, self.account_2, 'test text')

        self.message = MessagePrototype.get_priority_message()
Beispiel #37
0
    def request_friendship(cls, friend_1, friend_2, text=None):
        own_request = cls._get_for(friend_1, friend_2)
        if own_request:
            if text is not None:  #
                own_request._model.text = text
                own_request.save()
            return own_request

        his_request = cls._get_for(friend_2, friend_1)
        if his_request:
            his_request._confirm()
            return his_request

        model = cls._model_class.objects.create(friend_1=friend_1._model,
                                                friend_2=friend_2._model,
                                                text=text)
        prototype = cls(model=model)

        message = '''
игрок %(account_link)s предлагает вам дружить:

%(text)s

----------
принять или отклонить предложение вы можете на этой странице: %(friends_link)s
''' % {
            'account_link':
            '[url="%s"]%s[/url]' % (full_url(
                'http', 'accounts:show', friend_1.id), friend_1.nick_verbose),
            'text':
            text,
            'friends_link':
            '[url="%s"]предложения дружбы[/url]' %
            full_url('http', 'accounts:friends:candidates')
        }

        # send message from name of user, who request friendship
        # since many users try to respod to system user
        MessagePrototype.create(friend_1, friend_2, message)

        return prototype
Beispiel #38
0
    def setUp(self):
        super(PersonalMessagesTests, self).setUp()

        create_test_map()

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

        self.personal_message = PersonalMessagePrototype.create(
            self.account_1, self.account_2, 'test text')

        self.message = MessagePrototype.get_priority_message()
    def setUp(self):
        super(PersonalMessagesTests, self).setUp()
        create_test_map()

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

        register_user('user_2', '*****@*****.**', '111111')
        self.account_2 = AccountPrototype.get_by_nick('user_2')

        self.personal_message = PersonalMessagePrototype.create(self.account_1, self.account_2, 'test text')

        self.message = MessagePrototype.get_priority_message()
Beispiel #40
0
    def add_achievement(self, achievement, notify):
        from the_tale.collections.prototypes import GiveItemTaskPrototype
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype
        from the_tale.accounts.logic import get_system_user

        already_had_achievement = self.achievements.has_achievement(achievement)

        self.achievements.add_achievement(achievement)
        self._model.points = self.achievements.get_points()

        rewards = achievement.rewards
        approved_rewards = achievement.approved_rewards

        for item in rewards:
            GiveItemTaskPrototype.create(self.account_id, item.id)

        if not notify or already_had_achievement:
            return

        rewards_message = ''

        if approved_rewards:
            reward_texts = []
            for item in approved_rewards:
                reward_texts.append( '[url=%s#k%d]%s[/url]' % (full_url('http', 'collections:collections:show', item.kit.collection.id),
                                                                item.kit.id,
                                                                item.caption))
            rewards_message = 'Награды: %s' % ', '.join(reward_texts)


        message = ('Вы заработали достижение «%(achievement)s» — %(description)s. %(rewards_message)s' %
                   {'achievement': '[url=%s#a%d]%s[/url]' % (full_url('http', 'accounts:achievements:group', achievement.group.slug),
                                                              achievement.id,
                                                              achievement.caption),
                    'description': achievement.description,
                    'rewards_message': rewards_message})

        MessagePrototype.create(get_system_user(), self.account, message)
Beispiel #41
0
    def setUp(self):
        super(IndexRequestsTests, self).setUp()

        self.messages_1_2 = [MessagePrototype.create(self.account1, self.account2, 'message_1_2 1'),
                             MessagePrototype.create(self.account1, self.account2, 'message_1_2 2'),
                             MessagePrototype.create(self.account1, self.account2, 'message_1_2 3')]

        self.messages_2_1 = [MessagePrototype.create(self.account2, self.account1, 'message_2_1 1'),
                             MessagePrototype.create(self.account2, self.account1, 'message_2_1 2')]

        self.messages_3_1 = [MessagePrototype.create(self.account3, self.account1, 'message_3_1 1')]
        self.messages_3_2 = [MessagePrototype.create(self.account3, self.account2, 'message_3_2 1')]
    def setUp(self):
        super(PersonalMessagesTests, self).setUp()
        create_test_map()

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

        register_user('user_2', '*****@*****.**', '111111')
        self.account_2 = AccountPrototype.get_by_nick('user_2')

        self.personal_message = PersonalMessagePrototype.create(
            self.account_1, self.account_2, 'test text')

        self.message = MessagePrototype.get_priority_message()
Beispiel #43
0
    def test_remove_old_messages__system_user(self):

        system_user = get_system_user()

        messages = [ MessagePrototype.create(self.account1, self.account2, 'message 1'),
                     MessagePrototype.create(system_user, self.account2, 'message 2'),
                     MessagePrototype.create(self.account1, system_user, 'message 3'),
                     MessagePrototype.create(system_user, system_user, 'message 4'),

                     MessagePrototype.create(self.account1, self.account2, 'message 5'),
                     MessagePrototype.create(system_user, self.account2, 'message 6'),
                     MessagePrototype.create(self.account1, system_user, 'message 7'),
                     MessagePrototype.create(system_user, system_user, 'message 8') ]

        for message in messages[-4:]:
            message._model.created_at = datetime.datetime.now() - conf.settings.SYSTEM_MESSAGES_LEAVE_TIME
            message.save()

        with self.check_delta(MessagePrototype._db_count, -3):
            MessagePrototype.remove_old_messages()

        for message in messages[:5]:
            self.assertNotEqual(MessagePrototype.get_by_id(message.id), None)
Beispiel #44
0
 def setUp(self):
     super(DeleteAllRequestsTests, self).setUp()
     self.message = MessagePrototype.create(self.account1, self.account2,
                                            'message_1_2 1')
     self.message_2 = MessagePrototype.create(self.account2, self.account1,
                                              'message_2_1 1')
Beispiel #45
0
 def test_answer_to_not_found(self):
     MessagePrototype.create(self.account2, self.account1, 'message_2_1 1')
     self.check_html_ok(self.post_ajax_html(url('accounts:messages:new', answer_to=666), {'recipients': self.account2.id}),
                        texts=[('pgf-error-answer_to.wrong_value', 1)])
Beispiel #46
0
 def test_answer_to_no_permissions(self):
     message = MessagePrototype.create(self.account2, self.account3, 'message_2_3 1')
     self.check_html_ok(self.post_ajax_html(url('accounts:messages:new', answer_to=message.id), {'recipients': self.account2.id}),
                        texts=[('pgf-error-no_permissions_to_answer_to', 1)])
Beispiel #47
0
 def test_answer_to(self):
     message = MessagePrototype.create(self.account2, self.account1, 'message_2_1 1')
     self.check_html_ok(self.post_ajax_html(url('accounts:messages:new', answer_to=message.id), {'recipients': self.account2.id}),
                        texts=[('pgf-new-message-form', 1),
                               ('message_2_1 1', 1)])
Beispiel #48
0
 def setUp(self):
     super(DeleteAllRequestsTests, self).setUp()
     self.message = MessagePrototype.create(self.account1, self.account2, 'message_1_2 1')
     self.message_2 = MessagePrototype.create(self.account2, self.account1, 'message_2_1 1')
Beispiel #49
0
 def test_answer_to_not_found(self):
     MessagePrototype.create(self.account2, self.account1, 'message_2_1 1')
     self.check_html_ok(self.post_ajax_html(
         url('accounts:messages:new', answer_to=666),
         {'recipients': self.account2.id}),
                        texts=[('pgf-error-answer_to.wrong_value', 1)])