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)
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)
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)
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 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)
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)