From: Patrick Samson Date: Wed, 6 Feb 2013 21:51:17 +0000 (+0100) Subject: Resolve a PendingDeprecationWarning (in relation with Pull Request 8) X-Git-Tag: 3.0.0~5 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=d5057dbba592c29083389893958a0556202ae4bc;p=django-postman.git Resolve a PendingDeprecationWarning (in relation with Pull Request 8) --- diff --git a/CHANGELOG b/CHANGELOG index d5b4c27..53a2d70 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,10 @@ Django Postman changelog ======================== +Version 2.1.1, December 2012 +---------------------------- +* Fix issue #21, a missing unicode/str encoding migration + Version 2.1.0, December 2012 ---------------------------- * Make the app compatible with the new 'Custom Auth Model' feature of Django 1.5 diff --git a/postman/future_1_4.py b/postman/future_1_4.py new file mode 100644 index 0000000..6b360ac --- /dev/null +++ b/postman/future_1_4.py @@ -0,0 +1,23 @@ +""" +A forwards compatibility module. + +Implements some features of Django 1.4 when the application is run with a lower version of Django: +- text truncating +""" + +from __future__ import unicode_literals + +from django.utils.functional import allow_lazy +from django.utils.text import truncate_words + +class Truncator(object): + "A simplified version of django.utils.text.Truncator" + def __init__(self, text): + self.text = text + + def words(self, num): + s = truncate_words(self.text, num) + if s.endswith(' ...'): + s = s.replace(' ...', '...') + return s + words = allow_lazy(words) diff --git a/postman/models.py b/postman/models.py index e43036c..9da2e28 100644 --- a/postman/models.py +++ b/postman/models.py @@ -8,7 +8,10 @@ except ImportError: from postman.future_1_5 import get_user_model from django.core.exceptions import ValidationError from django.db import models -from django.utils.text import truncate_words +try: + from django.utils.text import Truncator # Django 1.4 +except ImportError: + from postman.future_1_4 import Truncator from django.utils.translation import ugettext, ugettext_lazy as _ try: from django.utils.timezone import now # Django 1.4 aware datetimes @@ -262,7 +265,7 @@ class Message(models.Model): ordering = ['-sent_at', '-id'] def __unicode__(self): - return "{0}>{1}:{2}".format(self.obfuscated_sender, self.obfuscated_recipient, truncate_words(self.subject,5)) + return "{0}>{1}:{2}".format(self.obfuscated_sender, self.obfuscated_recipient, Truncator(self.subject).words(5)) @models.permalink def get_absolute_url(self): diff --git a/postman/tests.py b/postman/tests.py index 7d49de6..1251b24 100644 --- a/postman/tests.py +++ b/postman/tests.py @@ -1094,6 +1094,14 @@ class MessageTest(BaseTest): self.check_parties(m, s=self.user1, email=self.email ) self.check_parties(m, email=self.email, r=self.user2) + def test_representation(self): + "Test the message representation as text." + m = Message(sender=self.user1, recipient=self.user2) + m.subject = 'one two three four last' + self.assertEqual(str(m), 'foo>bar:one two three four last') + m.subject = 'one two three four last over' + self.assertEqual(str(m), 'foo>bar:one two three four last...') + def test_status(self): "Test status." m = Message.objects.create(subject='s')