python3: py2 unicode compatible __str__ magid methods (#31184)
This commit is contained in:
parent
edece01766
commit
43769fb2a7
|
@ -36,7 +36,7 @@ class RoleAdmin(admin.ModelAdmin):
|
|||
readonly_fields = ('uuid',)
|
||||
prepopulated_fields = {"slug": ("name",)}
|
||||
filter_horizontal = ('members', 'permissions')
|
||||
list_display = ('__unicode__', 'slug', 'ou', 'service', 'admin_scope')
|
||||
list_display = ('__str__', 'slug', 'ou', 'service', 'admin_scope')
|
||||
list_select_related = True
|
||||
list_filter = ['ou', 'service']
|
||||
inlines = [RoleAttributeInline]
|
||||
|
|
|
@ -25,6 +25,7 @@ from authentic2.decorators import GlobalCache
|
|||
from . import managers, fields
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class OrganizationalUnit(OrganizationalUnitAbstractBase):
|
||||
|
||||
RESET_LINK_POLICY = 0
|
||||
|
@ -134,6 +135,9 @@ class OrganizationalUnit(OrganizationalUnitAbstractBase):
|
|||
'validate_emails': self.validate_emails
|
||||
}
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
OrganizationalUnit._meta.natural_key = [['uuid'], ['slug'], ['name']]
|
||||
|
||||
|
@ -293,11 +297,15 @@ Role._meta.natural_key = [
|
|||
]
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class RoleParenting(RoleParentingAbstractBase):
|
||||
class Meta(RoleParentingAbstractBase.Meta):
|
||||
verbose_name = _('role parenting relation')
|
||||
verbose_name_plural = _('role parenting relations')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class RoleAttribute(models.Model):
|
||||
KINDS = (
|
||||
|
|
|
@ -251,7 +251,7 @@ class AuthenticUserAdmin(UserAdmin):
|
|||
)
|
||||
readonly_fields = ('uuid',)
|
||||
list_filter = UserAdmin.list_filter + (UserRealmListFilter,ExternalUserListFilter)
|
||||
list_display = ['__unicode__', 'ou', 'first_name', 'last_name', 'email']
|
||||
list_display = ['__str__', 'ou', 'first_name', 'last_name', 'email']
|
||||
|
||||
def get_fieldsets(self, request, obj=None):
|
||||
fieldsets = deepcopy(super(AuthenticUserAdmin, self).get_fieldsets(request, obj))
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
from django.db import models
|
||||
from django.conf import settings
|
||||
from django.utils import six
|
||||
|
||||
from . import util
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class ClientCertificate(models.Model):
|
||||
serial = models.CharField(max_length=255, blank=True)
|
||||
subject_dn = models.CharField(max_length=255)
|
||||
|
@ -10,7 +12,7 @@ class ClientCertificate(models.Model):
|
|||
cert = models.TextField()
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.subject_dn
|
||||
|
||||
def explode_subject_dn(self):
|
||||
|
|
|
@ -95,6 +95,7 @@ class IsVerifiedDescriptor(object):
|
|||
return IsVerified(obj)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class User(AbstractBaseUser, PermissionMixin):
|
||||
"""
|
||||
An abstract base class implementing a fully featured User model with
|
||||
|
@ -182,7 +183,7 @@ class User(AbstractBaseUser, PermissionMixin):
|
|||
'members', queryset=self.__class__.objects.filter(pk=self.pk), to_attr='member'))
|
||||
return qs
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
human_name = self.username or self.email or self.get_full_name()
|
||||
short_id = self.uuid[:6]
|
||||
return u'%s (%s)' % (human_name, short_id)
|
||||
|
|
|
@ -42,6 +42,7 @@ class DeletedUser(models.Model):
|
|||
verbose_name = _('user to delete')
|
||||
verbose_name_plural = _('users to delete')
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class UserExternalId(models.Model):
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||
verbose_name=_('user'))
|
||||
|
@ -54,7 +55,7 @@ class UserExternalId(models.Model):
|
|||
updated = models.DateTimeField(auto_now=True,
|
||||
verbose_name=_('last update date'))
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return u'{0} is {1} on {2}'.format(
|
||||
self.user, self.external_id, self.source)
|
||||
|
||||
|
@ -68,6 +69,7 @@ class UserExternalId(models.Model):
|
|||
verbose_name = _('user external id')
|
||||
verbose_name_plural = _('user external ids')
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class AuthenticationEvent(models.Model):
|
||||
'''Record authentication events whatever the source'''
|
||||
when = models.DateTimeField(auto_now=True,
|
||||
|
@ -85,7 +87,7 @@ class AuthenticationEvent(models.Model):
|
|||
verbose_name = _('authentication log')
|
||||
verbose_name_plural = _('authentication logs')
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return _('Authentication of %(who)s by %(how)s at %(when)s') % \
|
||||
self.__dict__
|
||||
|
||||
|
@ -124,6 +126,7 @@ class LogoutUrl(LogoutUrlAbstract):
|
|||
verbose_name_plural = _('logout URL')
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Attribute(models.Model):
|
||||
label = models.CharField(verbose_name=_('label'), max_length=63,
|
||||
unique=True)
|
||||
|
@ -248,7 +251,7 @@ class Attribute(models.Model):
|
|||
def natural_key(self):
|
||||
return (self.name,)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.label
|
||||
|
||||
class Meta:
|
||||
|
@ -292,6 +295,7 @@ class AttributeValue(models.Model):
|
|||
)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class PasswordReset(models.Model):
|
||||
user = models.OneToOneField(settings.AUTH_USER_MODEL,
|
||||
verbose_name=_('user'))
|
||||
|
@ -306,10 +310,11 @@ class PasswordReset(models.Model):
|
|||
verbose_name = _('password reset')
|
||||
verbose_name_plural = _('password reset')
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return six.text_type(self.user)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Service(models.Model):
|
||||
name = models.CharField(
|
||||
verbose_name=_('name'),
|
||||
|
@ -359,7 +364,7 @@ class Service(models.Model):
|
|||
def natural_key(self):
|
||||
return [self.ou and self.ou.natural_key(), self.slug]
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def __repr__(self):
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import datetime as dt
|
||||
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils import timezone, six
|
||||
|
||||
__all__ = ('Nonce',)
|
||||
|
||||
|
@ -12,6 +12,7 @@ class NonceManager(models.Manager):
|
|||
now = now or timezone.now()
|
||||
self.filter(not_on_or_after__lt=now).delete()
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Nonce(models.Model):
|
||||
value = models.CharField(max_length=_NONCE_LENGTH_CONSTANT)
|
||||
context = models.CharField(max_length=_NONCE_LENGTH_CONSTANT, blank=True,
|
||||
|
@ -20,5 +21,5 @@ class Nonce(models.Model):
|
|||
|
||||
objects = NonceManager()
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
|
|
@ -161,6 +161,7 @@ AUTHSAML2_UNAUTH_TRANSIENT = (
|
|||
)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class SPOptionsIdPPolicy(models.Model):
|
||||
'''
|
||||
Policies configured as a SAML2 identity provider.
|
||||
|
@ -232,9 +233,10 @@ class SPOptionsIdPPolicy(models.Model):
|
|||
verbose_name = _('service provider options policy')
|
||||
verbose_name_plural = _('service provider options policies')
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class SAMLAttribute(models.Model):
|
||||
ATTRIBUTE_NAME_FORMATS = (
|
||||
('basic', 'Basic'),
|
||||
|
@ -294,7 +296,7 @@ class SAMLAttribute(models.Model):
|
|||
for text_value in normalize_attribute_values(values):
|
||||
yield (name, name_format, friendly_name, text_value)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return u'%s %s %s' % (self.name, self.name_format_uri(), self.attribute_name)
|
||||
|
||||
def natural_key(self):
|
||||
|
@ -307,6 +309,7 @@ class SAMLAttribute(models.Model):
|
|||
'friendly_name', 'attribute_name'),)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class LibertyProvider(Service):
|
||||
entity_id = models.URLField(max_length=256, unique=True,
|
||||
verbose_name=_('Entity ID'))
|
||||
|
@ -329,7 +332,7 @@ class LibertyProvider(Service):
|
|||
|
||||
objects = managers.LibertyProviderManager()
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
@ -387,6 +390,7 @@ def get_all_custom_or_default(instance, name):
|
|||
|
||||
# TODO: The IdP must look to the preferred binding order for sso in the SP metadata (AssertionConsumerService)
|
||||
# expect if the protocol for response is defined in the request (ProtocolBinding attribute)
|
||||
@six.python_2_unicode_compatible
|
||||
class LibertyServiceProvider(models.Model):
|
||||
liberty_provider = models.OneToOneField(LibertyProvider,
|
||||
primary_key = True, related_name = 'service_provider')
|
||||
|
@ -411,7 +415,7 @@ class LibertyServiceProvider(models.Model):
|
|||
def natural_key(self):
|
||||
return (self.liberty_provider.slug,)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return six.text_type(self.liberty_provider)
|
||||
|
||||
class Meta:
|
||||
|
@ -463,6 +467,7 @@ def nameid2kwargs(name_id):
|
|||
# XXX: for retrocompatibility
|
||||
federation_delete = managers.federation_delete
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class LibertyFederation(models.Model):
|
||||
"""Store a federation, i.e. an identifier shared with another provider, be
|
||||
it IdP or SP"""
|
||||
|
@ -519,10 +524,11 @@ class LibertyFederation(models.Model):
|
|||
verbose_name = _("SAML federation")
|
||||
verbose_name_plural = _("SAML federations")
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name_id_content
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class LibertySession(models.Model):
|
||||
"""Store the link between a Django session and a SAML session"""
|
||||
django_session_key = models.CharField(max_length = 128)
|
||||
|
@ -572,13 +578,14 @@ class LibertySession(models.Model):
|
|||
qs = qs.filter(Q(name_id_sp_name_qualifier__isnull=True)|Q(name_id_sp_name_qualifier=provider_id))
|
||||
return qs
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return '<LibertySession %s>' % self.__dict__
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("SAML session")
|
||||
verbose_name_plural = _("SAML sessions")
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class KeyValue(models.Model):
|
||||
key = models.CharField(max_length=128, primary_key=True)
|
||||
value = PickledObjectField()
|
||||
|
@ -586,7 +593,7 @@ class KeyValue(models.Model):
|
|||
|
||||
objects = a2_managers.ExpireManager()
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.key
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -2,6 +2,7 @@ import uuid
|
|||
import json
|
||||
|
||||
from django.db import models
|
||||
from django.utils import six
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
|
@ -24,6 +25,7 @@ def validate_jwkset(data):
|
|||
raise ValidationError(_('Invalid JWKSet: %s') % e)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class OIDCProvider(models.Model):
|
||||
STRATEGY_CREATE = 'create'
|
||||
STRATEGY_FIND_UUID = 'find-uuid'
|
||||
|
@ -145,7 +147,7 @@ class OIDCProvider(models.Model):
|
|||
return JWK(kty='oct', k=base64url_encode(self.client_secret.encode('utf-8')))
|
||||
return None
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def authorization_claims_parameter(self):
|
||||
|
@ -166,6 +168,7 @@ class OIDCProvider(models.Model):
|
|||
return '<OIDCProvider %r>' % self.issuer
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class OIDCClaimMapping(models.Model):
|
||||
NOT_VERIFIED = 0
|
||||
VERIFIED_CLAIM = 1
|
||||
|
@ -210,7 +213,7 @@ class OIDCClaimMapping(models.Model):
|
|||
def natural_key(self):
|
||||
return (self.claim, self.attribute, self.verified, self.required)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
s = u'{0} -> {1}'.format(self.claim, self.attribute)
|
||||
if self.verified:
|
||||
s += u', verified'
|
||||
|
@ -226,6 +229,7 @@ class OIDCClaimMapping(models.Model):
|
|||
self.verified, self.required)
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class OIDCAccount(models.Model):
|
||||
created = models.DateTimeField(
|
||||
verbose_name=_('created'),
|
||||
|
@ -246,7 +250,7 @@ class OIDCAccount(models.Model):
|
|||
max_length=256,
|
||||
unique=True)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return u'{0} on {1} linked to {2}'.format(self.sub, self.provider and self.provider.issuer,
|
||||
self.user)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from django.db import models
|
||||
from django.utils import six
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.timezone import now
|
||||
from django.core.validators import URLValidator
|
||||
|
@ -12,6 +13,7 @@ from . import managers, utils, constants
|
|||
|
||||
url_validator = URLValidator(schemes=['http', 'https', 'ftp', 'ftps', 'imap', 'imaps', 'sieve', 'smtp', 'smtps', 'ssh'])
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Service(LogoutUrlAbstract, Service):
|
||||
urls = models.TextField(max_length=128,
|
||||
verbose_name=_('urls'))
|
||||
|
@ -53,7 +55,7 @@ class Service(LogoutUrlAbstract, Service):
|
|||
wanted.add(attribute.attribute_name)
|
||||
return list(wanted)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
|
@ -61,6 +63,7 @@ class Service(LogoutUrlAbstract, Service):
|
|||
verbose_name_plural = _('services')
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Attribute(models.Model):
|
||||
service = models.ForeignKey(Service, verbose_name=_('service'))
|
||||
slug = models.SlugField(verbose_name=_('slug'))
|
||||
|
@ -70,7 +73,7 @@ class Attribute(models.Model):
|
|||
verbose_name=_('enabled'),
|
||||
default=True)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return u'%s <- %s' % (self.slug, self.attribute_name)
|
||||
|
||||
class Meta:
|
||||
|
@ -81,6 +84,7 @@ class Attribute(models.Model):
|
|||
def make_uuid():
|
||||
return utils.make_id(constants.SERVICE_TICKET_PREFIX)
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Ticket(models.Model):
|
||||
'''Session ticket with a CAS 1.0 or 2.0 consumer'''
|
||||
|
||||
|
@ -107,7 +111,7 @@ class Ticket(models.Model):
|
|||
|
||||
objects = managers.TicketManager()
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.ticket_id
|
||||
|
||||
def valid(self):
|
||||
|
|
|
@ -312,6 +312,7 @@ GenericRelation('authentic2_idp_oidc.OIDCAuthorization',
|
|||
OrganizationalUnit, 'oidc_authorizations')
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class OIDCClaim(models.Model):
|
||||
client = models.ForeignKey(
|
||||
to=OIDCClient, verbose_name=_('client'))
|
||||
|
@ -325,7 +326,7 @@ class OIDCClaim(models.Model):
|
|||
max_length=128, blank=True,
|
||||
verbose_name=_('attribute scopes'))
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return u'%s - %s - %s' % (self.name, self.value, self.scopes)
|
||||
|
||||
def get_scopes(self):
|
||||
|
|
|
@ -23,6 +23,7 @@ from django.contrib import auth
|
|||
from . import utils, constants, managers, backends
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class AbstractBase(models.Model):
|
||||
'''Abstract base model for all models having a name and uuid and a
|
||||
slug
|
||||
|
@ -44,7 +45,7 @@ class AbstractBase(models.Model):
|
|||
|
||||
objects = managers.AbstractBaseManager()
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def __repr__(self):
|
||||
|
@ -100,6 +101,7 @@ class OrganizationalUnit(OrganizationalUnitAbstractBase):
|
|||
swappable = constants.RBAC_OU_MODEL_SETTING
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class Operation(models.Model):
|
||||
name = models.CharField(
|
||||
max_length=128,
|
||||
|
@ -112,7 +114,7 @@ class Operation(models.Model):
|
|||
def natural_key(self):
|
||||
return [self.slug]
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
return six.text_type(_(self.name))
|
||||
|
||||
def export_json(self):
|
||||
|
@ -124,6 +126,7 @@ class Operation(models.Model):
|
|||
Operation._meta.natural_key = ['slug']
|
||||
|
||||
|
||||
@six.python_2_unicode_compatible
|
||||
class PermissionAbstractBase(models.Model):
|
||||
operation = models.ForeignKey(
|
||||
to=Operation,
|
||||
|
@ -157,7 +160,7 @@ class PermissionAbstractBase(models.Model):
|
|||
"target": self.target.natural_key_json()
|
||||
}
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
ct = ContentType.objects.get_for_id(self.target_ct_id)
|
||||
ct_ct = ContentType.objects.get_for_model(ContentType)
|
||||
if ct == ct_ct:
|
||||
|
|
Loading…
Reference in New Issue