From 908faba24a9703bb0f82686a1841203b64e4622a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Flor=C3=A9al=20Cabanettes?= Date: Mon, 24 Jul 2017 13:00:44 +0200 Subject: [PATCH 1/2] Python3 compatibility: add __str__ functions in addition to __unicode__ functions --- modoboa/admin/models/domain.py | 3 +++ modoboa/core/models.py | 5 +++++ modoboa/lib/form_utils.py | 11 +++++++++++ 3 files changed, 19 insertions(+) diff --git a/modoboa/admin/models/domain.py b/modoboa/admin/models/domain.py index 50a04d97b..6d942d5e6 100644 --- a/modoboa/admin/models/domain.py +++ b/modoboa/admin/models/domain.py @@ -334,6 +334,9 @@ class MXRecord(models.Model): def __unicode__(self): return u"{0.name} ({0.address}) for {0.domain} ".format(self) + def __str__(self): + return "{0.name} ({0.address}) for {0.domain} ".format(self) + class DNSBLQuerySet(models.QuerySet): """Custom manager for DNSBLResultManager.""" diff --git a/modoboa/core/models.py b/modoboa/core/models.py index 3bdaa7a22..376e43697 100644 --- a/modoboa/core/models.py +++ b/modoboa/core/models.py @@ -420,6 +420,11 @@ class ObjectAccess(models.Model): self.user, self.content_object, self.content_type ) + def __str__(self): + return "%s => %s (%s)" % ( + self.user, self.content_object, self.content_type + ) + class Log(models.Model): """Simple log in database.""" diff --git a/modoboa/lib/form_utils.py b/modoboa/lib/form_utils.py index e2b7144b1..cbea6ad4b 100644 --- a/modoboa/lib/form_utils.py +++ b/modoboa/lib/form_utils.py @@ -384,6 +384,17 @@ class CustomRadioInput(RadioChoiceInput): % (label_for, self.tag(), choice_label) ) + def __str__(self): + if "id" in self.attrs: + label_for = ' for="%s"' % self.attrs["id"] + else: + label_for = "" + choice_label = conditional_escape(force_text(self.choice_label)) + return mark_safe( + "" + % (label_for, self.tag(), choice_label) + ) + class InlineRadioRenderer(RadioSelect.renderer): """Custom inline radio renderer.""" From 54a8dc6aabeb8226407ca60e87d31a00d8934809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Flor=C3=A9al=20Cabanettes?= Date: Mon, 24 Jul 2017 14:49:42 +0200 Subject: [PATCH 2/2] Replace __unicode__ functions by python_2_unicode_compatible decorator --- modoboa/admin/models/domain.py | 4 +--- modoboa/core/models.py | 6 +----- modoboa/lib/form_utils.py | 14 ++------------ 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/modoboa/admin/models/domain.py b/modoboa/admin/models/domain.py index 6d942d5e6..af0d10c24 100644 --- a/modoboa/admin/models/domain.py +++ b/modoboa/admin/models/domain.py @@ -315,6 +315,7 @@ class MXQuerySet(models.QuerySet): return self.exists() +@python_2_unicode_compatible class MXRecord(models.Model): """A model used to store MX records for Domain.""" @@ -331,9 +332,6 @@ class MXRecord(models.Model): return False return bool(param_tools.get_global_parameter("valid_mxs").strip()) - def __unicode__(self): - return u"{0.name} ({0.address}) for {0.domain} ".format(self) - def __str__(self): return "{0.name} ({0.address}) for {0.domain} ".format(self) diff --git a/modoboa/core/models.py b/modoboa/core/models.py index 376e43697..a118d52e2 100644 --- a/modoboa/core/models.py +++ b/modoboa/core/models.py @@ -405,6 +405,7 @@ def populate_callback(user, group="SimpleUsers"): sender="populate_callback", user=user) +@python_2_unicode_compatible class ObjectAccess(models.Model): user = models.ForeignKey(User) content_type = models.ForeignKey(ContentType) @@ -415,11 +416,6 @@ class ObjectAccess(models.Model): class Meta(object): unique_together = (("user", "content_type", "object_id"),) - def __unicode__(self): - return "%s => %s (%s)" % ( - self.user, self.content_object, self.content_type - ) - def __str__(self): return "%s => %s (%s)" % ( self.user, self.content_object, self.content_type diff --git a/modoboa/lib/form_utils.py b/modoboa/lib/form_utils.py index cbea6ad4b..b869ba183 100644 --- a/modoboa/lib/form_utils.py +++ b/modoboa/lib/form_utils.py @@ -13,7 +13,7 @@ from django.forms.fields import Field from django.forms.widgets import RadioSelect from django.forms.widgets import RadioChoiceInput from django.shortcuts import render -from django.utils.encoding import force_text, force_str +from django.utils.encoding import python_2_unicode_compatible, force_text, force_str from django.utils.html import conditional_escape from django.utils.safestring import mark_safe from django.utils.translation import ugettext as _, ugettext_lazy @@ -370,20 +370,10 @@ class TabForms(object): # +@python_2_unicode_compatible class CustomRadioInput(RadioChoiceInput): """Custom radio input.""" - def __unicode__(self): - if "id" in self.attrs: - label_for = ' for="%s"' % self.attrs["id"] - else: - label_for = "" - choice_label = conditional_escape(force_text(self.choice_label)) - return mark_safe( - u"" - % (label_for, self.tag(), choice_label) - ) - def __str__(self): if "id" in self.attrs: label_for = ' for="%s"' % self.attrs["id"]