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)
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)
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
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
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)
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)
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)
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)
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)
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)
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)
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()
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)
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
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
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()
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)
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)
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)
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)
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)
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 }) })
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)
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()
def full_url(*args, **kwargs): return urls.full_url(*args, **kwargs) @jinja2.jinjaglobal
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})})