Example #1
0
    def serializable(self, timezone=None):
        """Return a serializable representation of the message."""

        # We cannot do `serializable(self, timezone=None):` because tests need
        # to be able to ovveride the time zone
        if timezone is None:
            timezone = settings.TIME_ZONE

        zone = pytz.timezone(timezone)

        return {
            'id': self.pk,
            'sent_at': str(self.created_at.astimezone(zone)),
            'sender': {
                'sender':
                str(self.sender),
                'sender_is_staff':
                self.sender.is_staff,
                'sender_url':
                reverse('user_details', kwargs={'user_uuid':
                                                self.sender.uuid}),
            },
            'group': unicode_or_empty(self.thread.group),
            'snippet': self.snippet,
            'text': self.text,
            'reply_url': reverse('create_reply', args=[self.thread_id]),
            'flag_url': reverse('flag_message', kwargs={'message_id':
                                                        self.pk}),
            'read': getattr(self, 'read', None),
            'is_system_message': self.is_system_message,
            'pending': (self.status == 'pending')
        }
Example #2
0
    def serializable(self, timezone=None):
        """Return a serializable representation of the message."""

        # We cannot do `serializable(self, timezone=None):` because tests need
        # to be able to ovveride the time zone
        if timezone is None:
            timezone = settings.TIME_ZONE

        zone = pytz.timezone(timezone)

        return {
            'id': self.pk,
            'sent_at': str(self.created_at.astimezone(zone)),
            'sender': {
                'sender': str(self.sender),
                'sender_is_staff': self.sender.is_staff,
                'sender_url': reverse(
                    'user_details', kwargs={'user_uuid': self.sender.uuid}),
            },
            'group': unicode_or_empty(self.thread.group),
            'snippet': self.snippet,
            'text': self.text,
            'reply_url': reverse('create_reply', args=[self.thread_id]),
            'flag_url': reverse(
                'flag_message', kwargs={'message_id': self.pk}
            ),
            'read': getattr(self, 'read', None),
            'is_system_message': self.is_system_message,
            'pending': (self.status == 'pending')
        }
Example #3
0
 def test_unicode_or_empty(self):
     """Test unicode_or_empty() function"""
     self.assertEqual(unicode_or_empty(None), u'')
     self.assertEqual(unicode_or_empty(True), u'True')
     self.assertIsInstance(unicode_or_empty(None), unicode)
Example #4
0
    def serializable(self, timezone=None):
        """Returns a serializable version of the Thread model"""

        # We cannot do `serializable(self, timezone=None):` because tests need
        # to be able to ovveride the time zone
        if timezone is None:
            timezone = settings.TIME_ZONE

        zone = pytz.timezone(timezone)

        if self.group:
            category = self.group.category.slug
            group_url = reverse('group_details', kwargs={'pk': self.group.pk})
            reply_url = reverse('create_reply', args=[self.pk])
            group_id = self.group.pk
        else:
            category = None
            group_url = ''
            reply_url = reverse('create_direct_message_reply', args=[self.pk])
            group_id = None

        if not self.group and not self.is_system_thread:
            recipients = self.recipients.all()
        else:
            recipients = None

        if getattr(self, 'read', None):
            unread_messages = 0
        elif getattr(self, 'last_read_at', None):
            last_read_at = (self.last_read_at.astimezone(zone))
            unread_messages = self.message_set.filter(
                created_at__gt=last_read_at).count()
        else:
            unread_messages = self.total_messages

        response = {
            'id':
            self.pk,
            'total_messages':
            str(self.total_messages),
            'subject':
            unicode(self.subject),
            'snippet':
            unicode(self.first_message.snippet),
            'latest_message_at':
            str(self.latest_message.created_at.astimezone(zone)),
            'json_url':
            str(reverse('thread_details_json', args=[self.pk])),
            'reply_url':
            reply_url,
            'unsubscribe_url':
            self.get_unsubscribe_url(),
            'read':
            getattr(self, 'read', None),
            'group':
            unicode_or_empty(self.group),
            'group_url':
            group_url,
            'group_id':
            group_id,
            'type':
            str(self.thread_type),
            'category':
            unicode_or_empty(category),
            'unread_messages':
            unread_messages,
            'is_system_thread':
            self.is_system_thread,
            'userthread_status':
            getattr(self, 'userthread_status', None)
        }

        if recipients:
            response['recipients'] = [
                str(recipient) for recipient in recipients
            ]

        return response
Example #5
0
    def serializable(self, timezone=None):
        """Returns a serializable version of the Thread model"""

        # We cannot do `serializable(self, timezone=None):` because tests need
        # to be able to ovveride the time zone
        if timezone is None:
            timezone = settings.TIME_ZONE

        zone = pytz.timezone(timezone)

        if self.group:
            category = self.group.category.slug
            group_url = reverse('group_details', kwargs={'pk': self.group.pk})
            reply_url = reverse('create_reply', args=[self.pk])
            group_id = self.group.pk
        else:
            category = None
            group_url = ''
            reply_url = reverse('create_direct_message_reply', args=[self.pk])
            group_id = None

        if not self.group and not self.is_system_thread:
            recipients = self.recipients.all()
        else:
            recipients = None

        if getattr(self, 'read', None):
            unread_messages = 0
        elif getattr(self, 'last_read_at', None):
            last_read_at = (self.last_read_at.astimezone(zone))
            unread_messages = self.message_set.filter(
                created_at__gt=last_read_at).count()
        else:
            unread_messages = self.total_messages

        response = {
            'id': self.pk,
            'total_messages': str(self.total_messages),
            'subject': unicode(self.subject),
            'snippet': unicode(self.first_message.snippet),
            'latest_message_at': str(
                self.latest_message.created_at.astimezone(zone)),
            'json_url': str(reverse('thread_details_json', args=[self.pk])),
            'reply_url': reply_url,
            'unsubscribe_url': self.get_unsubscribe_url(),
            'read': getattr(self, 'read', None),
            'group': unicode_or_empty(self.group),
            'group_url': group_url,
            'group_id': group_id,
            'type': str(self.thread_type),
            'category': unicode_or_empty(category),
            'unread_messages': unread_messages,
            'is_system_thread': self.is_system_thread,
            'userthread_status': getattr(self, 'userthread_status', None)
        }

        if recipients:
            response['recipients'] = [
                str(recipient) for recipient in recipients
            ]

        return response
 def test_unicode_or_empty(self):
     """Test unicode_or_empty() function"""
     self.assertEqual(unicode_or_empty(None), u'')
     self.assertEqual(unicode_or_empty(True), u'True')
     self.assertIsInstance(unicode_or_empty(None), unicode)