Пример #1
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)
Пример #2
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)
Пример #3
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
Пример #4
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
Пример #5
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')
        }

        pm_logic.send_message(sender_id=initiator.id,
                              recipients_ids=[self.account.id],
                              body=message)
Пример #6
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)}

        pm_tt_api.send_message(sender_id=initiator.id,
                              recipients_ids=[removed_account.id],
                              body=message)
Пример #7
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)}

        pm_tt_api.send_message(sender_id=initiator.id,
                              recipients_ids=[self.account.id],
                              body=message)
Пример #8
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)
Пример #9
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)
Пример #10
0
    def create_request_message(self, initiator):
        message = '''
Игрок %(account)s просит принять его в вашу гильдию:

%(text)s

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

        pm_tt_api.send_message(sender_id=initiator.id,
                              recipients_ids=[self.clan.get_leader().id],
                              body=message)
Пример #11
0
def give_reward_for_template(template):

    if template.author_id is None:
        print(1)
        return

    updated = prototypes.ContributionPrototype._db_filter(
        type=relations.CONTRIBUTION_TYPE.TEMPLATE,
        entity_id=template.id,
        account=template.author_id,
        reward_given=False).update(reward_given=True)

    if not updated:
        return

    cards_logic.give_new_cards(
        account_id=template.author_id,
        operation_type='give-card-for-linguistic-template',
        allow_premium_cards=True,
        available_for_auction=True)

    message = '''Поздравляем! Ваша [url={template}]фраза[/url] добавлена в игру!\n\nВ награду вы можете получить дополнительную карту судьбы (на странице игры). Карту можно будет продать на рынке.'''

    message = message.format(
        template=full_url('http', 'linguistics:templates:show', template.id))

    pm_tt_api.send_message(sender_id=accounts_logic.get_system_user_id(),
                           recipients_ids=[template.author_id],
                           body=message,
                           async=False)
Пример #12
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()
Пример #13
0
    def add_achievement(self, achievement, notify):
        from the_tale.collections.prototypes import GiveItemTaskPrototype
        from the_tale.accounts.personal_messages import tt_api as pm_tt_api
        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
            })

        pm_tt_api.send_message(get_system_user().id, [self.account.id],
                               message,
                               async=True)
Пример #14
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
Пример #15
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
        pm_tt_api.send_message(sender_id=friend_1.id,
                               recipients_ids=[friend_2.id],
                               body=message)

        return prototype
Пример #16
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()
Пример #17
0
    def _confirm(self):
        self._model.is_confirmed = True
        self.save()

        account_link = '[url={}]{}[/url]'.format(
            full_url('http', 'accounts:show', self.friend_2.id),
            self.friend_2.nick_verbose)
        message = 'игрок {account_link} подтвердил, что вы являетесь друзьями'.format(
            account_link=account_link)

        pm_tt_api.send_message(sender_id=accounts_logic.get_system_user_id(),
                               recipients_ids=[self.friend_1.id],
                               body=message)
Пример #18
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)
Пример #19
0
    def notify_about_premium_expiration(self):
        from the_tale.accounts.personal_messages import tt_api as pm_tt_api
        from the_tale.accounts import logic

        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('https', 'shop:')}

        pm_tt_api.send_message(logic.get_system_user_id(), [self.id], message, async=True)
Пример #20
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)
Пример #21
0
    def create_invite_message(self, initiator):
        message = u'''
Игрок %(clan_leader_link)s предлагает вам вступить в гильдию %(clan_link)s:

%(text)s

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

        MessagePrototype.create(initiator, self.account, message)
Пример #22
0
 def referrals(self):
     return self.template(
         'guide/referrals.html', {
             'section':
             'referrals',
             'account':
             self.account,
             'accounts_settings':
             accounts_settings,
             'referral_link':
             full_url(
                 'http', 'portal:', **{
                     accounts_settings.REFERRAL_URL_ARGUMENT:
                     self.account.id if self.account else None
                 })
         })
Пример #23
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)
Пример #24
0
    def remove_friendship(cls, initiator, friend):
        request = cls.get_for_bidirectional(initiator, friend)

        if request is None:
            return

        account_link = '[url="{}"]{}[/url]'.format(
            full_url('http', 'accounts:show', initiator.id),
            initiator.nick_verbose)

        if request.is_confirmed:
            message = 'игрок {account_link} удалил вас из списка друзей'.format(
                account_link=account_link)
        else:
            message = 'игрок {account_link} отказался добавить вас в список друзей'.format(
                account_link=account_link)

        pm_tt_api.send_message(sender_id=accounts_logic.get_system_user_id(),
                               recipients_ids=[friend.id],
                               body=message)

        request.remove()
Пример #25
0
def full_url(*args, **kwargs): return urls.full_url(*args, **kwargs)

@jinja2.jinjaglobal
Пример #26
0
 def referrals(self):
     return self.template('guide/referrals.html', {'section': 'referrals',
                                                   'account': self.account,
                                                   'accounts_settings': accounts_settings,
                                                   'referral_link': full_url('http', 'portal:',
                                                                             **{accounts_settings.REFERRAL_URL_ARGUMENT: self.account.id if self.account else None})})