示例#1
0
    def process(self):
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype as PersonalMessagePrototype

        message = PersonalMessagePrototype.get_by_id(self.message_id)

        if message is None:
            return True # message can be removed by admins or with removed thread

        account = message.recipient

        if not account.personal_messages_subscription:
            return True

        if account.id == get_system_user().id or account.is_bot:
            return True

        if not account.email:
            return True

        subject = '«Сказка»: личное сообщение'

        context = {'message': message}

        html_content = jinja2.render(self.EMAIL_HTML_TEMPLATE, context)
        text_content = jinja2.render(self.EMAIL_TEXT_TEMPLATE, context)

        return logic.send_mail([account], subject, text_content, html_content)
示例#2
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)
示例#3
0
    def process(self):
        from the_tale.accounts.personal_messages.prototypes import MessagePrototype as PersonalMessagePrototype

        message = PersonalMessagePrototype.get_by_id(self.message_id)

        if message is None:
            return True  # message can be removed by admins or with removed thread

        account = message.recipient

        if not account.personal_messages_subscription:
            return True

        if account.id == get_system_user().id or account.is_bot:
            return True

        if not account.email:
            return True

        subject = '«Сказка»: личное сообщение'

        context = {'message': message}

        html_content = jinja2.render(self.EMAIL_HTML_TEMPLATE, context)
        text_content = jinja2.render(self.EMAIL_TEXT_TEMPLATE, context)

        return logic.send_mail([account], subject, text_content, html_content)
示例#4
0
 def test_delete_from_recipient(self):
     self.request_login(self.account2.email)
     self.check_ajax_ok(
         self.post_ajax_json(
             url('accounts:messages:delete', self.message.id)))
     message = MessagePrototype.get_by_id(self.message.id)
     self.assertFalse(message.hide_from_sender)
     self.assertTrue(message.hide_from_recipient)
示例#5
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)
示例#6
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)
示例#7
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)
示例#8
0
 def test_delete_from_recipient(self):
     self.request_login(self.account2.email)
     self.check_ajax_ok(self.post_ajax_json(url('accounts:messages:delete', self.message.id)))
     message = MessagePrototype.get_by_id(self.message.id)
     self.assertFalse(message.hide_from_sender)
     self.assertTrue(message.hide_from_recipient)