diff --git a/atreal_openads/models.py b/atreal_openads/models.py index 81dfcee..5ca4b30 100644 --- a/atreal_openads/models.py +++ b/atreal_openads/models.py @@ -36,6 +36,7 @@ from django.utils.translation import ugettext_lazy as _ from django.core.files.base import ContentFile from django.core.exceptions import ValidationError from django.utils.encoding import force_text +from django.utils import six from passerelle.base.models import BaseResource, HTTPResource from passerelle.utils.api import endpoint @@ -65,6 +66,7 @@ from .utils import ( ) +@six.python_2_unicode_compatible class ForwardFile(models.Model, BaseModel): # pylint: disable=too-many-instance-attributes """Represent a file uploaded by a user, to be forwarded to openADS.API.""" @@ -133,7 +135,7 @@ class ForwardFile(models.Model, BaseModel): # pylint: disable=too-many-instance self.numero_demande, self.numero_dossier, self.type_fichier, self.orig_filename, self.upload_status) - def __unicode__(self): + def __str__(self): return u"%s[%s]" % (trunc_str_values(self.orig_filename, 20), self.get_status()) def get_url_params(self, primary_key=True): @@ -200,6 +202,7 @@ class ForwardFile(models.Model, BaseModel): # pylint: disable=too-many-instance return ret +@six.python_2_unicode_compatible class Collectivite(models.Model, BaseModel): """Represent a "collectivite".""" @@ -245,11 +248,10 @@ class Collectivite(models.Model, BaseModel): force_text(self.connecteur) if hasattr(self, 'connecteur') else None, self.openADS_id, # pylint: disable=no-member - unicode(self.guichet) if hasattr(self, 'guichet') else None) - - def __unicode__(self): - return self.name if isinstance(self.name, unicode) else unicode(self.name) + force_text(self.guichet) if hasattr(self, 'guichet') else None) + def __str__(self): + return self.name if isinstance(self.name, six.text_type) else force_text(self.name) def get_fields_kv(self): fields = super(Collectivite, self).get_fields_kv() # moving related fields field at the end of the list @@ -270,6 +272,7 @@ class Collectivite(models.Model, BaseModel): return params +@six.python_2_unicode_compatible class Guichet(models.Model, BaseModel): """Represent a "Guichet".""" @@ -315,7 +318,7 @@ class Guichet(models.Model, BaseModel): force_text(self.collectivite) if hasattr(self, 'collectivite') else None, force_text(self)) - def __unicode__(self): + def __str__(self): return u'%s %s -> %s %s [%s/%s]' % ( force_text(self.DAYS[self.ouverture_sem_d - 1][1]), # pylint: disable=no-member @@ -366,6 +369,7 @@ class Guichet(models.Model, BaseModel): return False +@six.python_2_unicode_compatible class AtrealOpenads(BaseResource, HTTPResource, BaseModel): """API that proxy/relay communications with/to openADS.""" @@ -403,8 +407,8 @@ class AtrealOpenads(BaseResource, HTTPResource, BaseModel): self.collectivites.count(), # pylint: disable=no-member self.default_collectivite_openADS_id) - def __unicode__(self): - return self.slug if isinstance(self.slug, unicode) else unicode(self.slug) + def __str__(self): + return self.slug if isinstance(self.slug, six.string_types) else force_text(self.slug) def get_url_name(self, prefix='', plural=False): return '%s%s' % (prefix + '-' if prefix else '', 'connector') diff --git a/atreal_openads/utils.py b/atreal_openads/utils.py index 19fe0de..e1bc79d 100644 --- a/atreal_openads/utils.py +++ b/atreal_openads/utils.py @@ -32,6 +32,7 @@ import sys from HTMLParser import HTMLParser from django.urls import reverse_lazy +from django.utils import six from django.utils.encoding import force_text @@ -161,6 +162,7 @@ def trunc_str_values(value, limit, visited=None, truncate_text=u'…'): return value +@six.python_2_unicode_compatible class DictDumper(object): """Helper to dump a dictionary to a string representation with lazy processing. @@ -184,14 +186,10 @@ class DictDumper(object): return u'DictDumper(dic=%r,max_str_len=%r,use_json_dumps=%r)' % ( self.dic, self.max_str_len, self.use_json_dumps) - @force_encoded_string_output def __str__(self): - return unicode(self) - - def __unicode__(self): dict_trunc = trunc_str_values(copy.deepcopy(self.dic), self.max_str_len) dict_ref = json.dumps(dict_trunc) if self.use_json_dumps else dict_trunc - return unicode(dict_ref) + return force_text(dict_ref) class BaseModel(object):