Patchwork Implement __unicode__ in models instead of __str__

login
register
mail settings
Submitter Dirk Wallenstein
Date Jan. 15, 2011, 11:16 a.m.
Message ID <1295090181-12195-1-git-send-email-halsmit@t-online.de>
Download mbox | patch
Permalink /patch/79045/
State Accepted
Headers show

Comments

Dirk Wallenstein - Jan. 15, 2011, 11:16 a.m.
According to the Django documentation at [1] it is recommended to
implement __unicode__ and not __str__.  Django's model base class
provides a __str__ method that will use the __unicode__ method and
convert to utf-8.  Also, every text value returned from the DB through
the model is unicode.

It is now possible to edit Patches and Persons that have values with
non-ASCII characters through the admin interface.

[1] http://docs.djangoproject.com/en/1.2/ref/unicode/

Signed-off-by: Dirk Wallenstein <halsmit@t-online.de>
---
 apps/patchwork/models.py |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
Jeremy Kerr - Feb. 11, 2011, 1:11 a.m.
Hi Dirk,

> According to the Django documentation at [1] it is recommended to
> implement __unicode__ and not __str__.  Django's model base class
> provides a __str__ method that will use the __unicode__ method and
> convert to utf-8.  Also, every text value returned from the DB through
> the model is unicode.

Been meaning to do this for a while, thanks for the patch (which I've 
applied).

Cheers,


Jeremy

Patch

diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py
index 6842622..5c0ca95 100644
--- a/apps/patchwork/models.py
+++ b/apps/patchwork/models.py
@@ -47,9 +47,9 @@  class Person(models.Model):
     name = models.CharField(max_length=255, null = True)
     user = models.ForeignKey(User, null = True)
 
-    def __str__(self):
+    def __unicode__(self):
         if self.name:
-            return '%s <%s>' % (self.name, self.email)
+            return u'%s <%s>' % (self.name, self.email)
         else:
             return self.email
 
@@ -66,7 +66,7 @@  class Project(models.Model):
     listid = models.CharField(max_length=255, unique=True)
     listemail = models.CharField(max_length=200)
 
-    def __str__(self):
+    def __unicode__(self):
         return self.name
 
 class UserProfile(models.Model):
@@ -84,7 +84,7 @@  class UserProfile(models.Model):
     def name(self):
         if self.user.first_name or self.user.last_name:
             names = filter(bool, [self.user.first_name, self.user.last_name])
-            return ' '.join(names)
+            return u' '.join(names)
         return self.user.username
 
     def contributor_projects(self):
@@ -129,7 +129,7 @@  class UserProfile(models.Model):
                  person.link_to_user(self.user)
                  person.save()
 
-    def __str__(self):
+    def __unicode__(self):
         return self.name()
 
 class State(models.Model):
@@ -137,7 +137,7 @@  class State(models.Model):
     ordering = models.IntegerField(unique = True)
     action_required = models.BooleanField(default = True)
 
-    def __str__(self):
+    def __unicode__(self):
         return self.name
 
     class Meta:
@@ -193,7 +193,7 @@  class Patch(models.Model):
     commit_ref = models.CharField(max_length=255, null = True, blank = True)
     hash = HashField(null = True, db_index = True)
 
-    def __str__(self):
+    def __unicode__(self):
         return self.name
 
     def comments(self):