use python_2_unicode_compatible for objects representation (#39533)

This commit is contained in:
Emmanuel Cazenave 2020-02-04 17:13:50 +01:00
parent 090e4d2bc3
commit 90bdb52e90
2 changed files with 15 additions and 13 deletions

View File

@ -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')

View File

@ -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):