python3: use __future__.print_function (#31140)

This commit is contained in:
Paul Marillonnet 2019-01-24 12:10:26 +01:00
parent 4a5311543f
commit 54d01cf903
15 changed files with 81 additions and 62 deletions

View File

@ -1,4 +1,6 @@
#!/usr/bin/python #!/usr/bin/python
from __future__ import print_function
import sys import sys
import os import os
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
@ -59,7 +61,7 @@ if not xmlfiles:
xmlfiles.append (fullname) xmlfiles.append (fullname)
if not xmlfiles: if not xmlfiles:
print 'No xml files found!' print('No xml files found!')
sys.exit (1) sys.exit (1)
else: else:

View File

@ -3,6 +3,8 @@
# Corey Goldberg, Dec 2012 # Corey Goldberg, Dec 2012
# #
from __future__ import print_function
import os import os
import sys import sys
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
@ -55,7 +57,7 @@ def merge_results(xml_files):
def usage(): def usage():
this_file = os.path.basename(__file__) this_file = os.path.basename(__file__)
print 'Usage: %s results1.xml results2.xml' % this_file print('Usage: %s results1.xml results2.xml' % this_file)
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -37,7 +37,7 @@ sys.path.append("/usr/local/lib/python2.6/site-packages/")
try: try:
import lasso import lasso
except: except:
print >> sys.stderr, "Unable to import Lasso." print("Unable to import Lasso.", file=sys.stderr)
apache_configuration= os.path.dirname(__file__) apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration) project = os.path.dirname(apache_configuration)
@ -46,7 +46,7 @@ try:
import authentic2.settings import authentic2.settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'authentic2.settings' os.environ['DJANGO_SETTINGS_MODULE'] = 'authentic2.settings'
except: except:
print >> sys.stderr, "Unable to import settings." print("Unable to import settings.", file=sys.stderr)
import django.core.handlers.wsgi import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler() application = django.core.handlers.wsgi.WSGIHandler()

View File

@ -1,4 +1,4 @@
from __future__ import unicode_literals from __future__ import unicode_literals, print_function
import getpass import getpass
@ -42,23 +42,23 @@ class Command(BaseCommand):
raise CommandError("user '%s' does not exist" % username) raise CommandError("user '%s' does not exist" % username)
except MultipleObjectsReturned: except MultipleObjectsReturned:
while True: while True:
print 'Select an user:' print('Select a user:')
for i, user in enumerate(qs): for i, user in enumerate(qs):
print '%d.' % (i+1), user print('%d.' % (i+1), user)
print '> ', print('> ', end=' ')
try: try:
j = input() j = input()
except SyntaxError: except SyntaxError:
print 'Please enter an integer' print('Please enter an integer')
continue continue
if not isinstance(uid, int): if not isinstance(uid, int):
print 'Please enter an integer' print('Please enter an integer')
continue continue
try: try:
u = qs[j-1] u = qs[j-1]
break break
except IndexError: except IndexError:
print 'Please enter an integer between 1 and %d' % qs.count() print('Please enter an integer between 1 and %d' % qs.count())
continue continue
self.stdout.write("Changing password for user '%s'\n" % u) self.stdout.write("Changing password for user '%s'\n" % u)

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import logging import logging
import datetime import datetime
@ -16,7 +18,7 @@ def print_table(table):
for line in table: for line in table:
line = u"| " + u" | ".join(u"{0:>{1}}".format(x, col_width[i]) line = u"| " + u" | ".join(u"{0:>{1}}".format(x, col_width[i])
for i, x in enumerate(line)) + u" |" for i, x in enumerate(line)) + u" |"
print line print(line)
class Command(BaseCommand): class Command(BaseCommand):
help = '''Clean unused accounts''' help = '''Clean unused accounts'''

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import logging import logging
import sys import sys
from StringIO import StringIO from StringIO import StringIO
@ -38,19 +40,19 @@ class Command(BaseCommand):
if attrs['filter'] != '(objectClass=*)': if attrs['filter'] != '(objectClass=*)':
m = re.match(r'\((\w*)=(.*)\)', attrs['filter']) m = re.match(r'\((\w*)=(.*)\)', attrs['filter'])
if not m: if not m:
print 'RESULT' print('RESULT')
print 'code: 1' print('code: 1')
print 'info: invalid filter' print('info: invalid filter')
print print()
return return
for user_attribute, ldap_attribute in MAPPING.iteritems(): for user_attribute, ldap_attribute in MAPPING.iteritems():
if ldap_attribute == m.group(1): if ldap_attribute == m.group(1):
break break
else: else:
print 'RESULT' print('RESULT')
print 'code: 1' print('code: 1')
print 'info: unknown attribute in filter' print('info: unknown attribute in filter')
print print()
return return
value = m.group(2) value = m.group(2)
if value.endswith('*') and value.startswith('*'): if value.endswith('*') and value.startswith('*'):
@ -74,12 +76,12 @@ class Command(BaseCommand):
dn = 'uid=%s,%s' % (escape_dn_chars(o['uid'][0]), attrs['suffix']) dn = 'uid=%s,%s' % (escape_dn_chars(o['uid'][0]), attrs['suffix'])
self.logger.debug(u'sending entry %s %s', dn, o) self.logger.debug(u'sending entry %s %s', dn, o)
ldif_writer.unparse(dn, o) ldif_writer.unparse(dn, o)
print out.getvalue(), print(out.getvalue())
out.close() out.close()
print 'RESULT' print('RESULT')
print 'code: 0' print('code: 0')
print 'info: RockNRoll' print('info: RockNRoll')
print print()
def handle(self, *args, **options): def handle(self, *args, **options):
self.logger = logging.getLogger(__name__) self.logger = logging.getLogger(__name__)

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import sys import sys
import xml.etree.ElementTree as etree import xml.etree.ElementTree as etree
import os import os
@ -127,8 +129,8 @@ def load_acs(tree, provider, pks, verbosity):
attribute, created = SAMLAttribute.objects.get_or_create( attribute, created = SAMLAttribute.objects.get_or_create(
defaults=defaults, **kwargs) defaults=defaults, **kwargs)
if created and verbosity > 1: if created and verbosity > 1:
print _('Created new attribute %(name)s for %(provider)s') % \ print(_('Created new attribute %(name)s for %(provider)s') % \
{'name': oid, 'provider': provider} {'name': oid, 'provider': provider})
pks.append(attribute.pk) pks.append(attribute.pk)
except SAMLAttribute.MultipleObjectsReturned: except SAMLAttribute.MultipleObjectsReturned:
pks.extend(SAMLAttribute.objects.filter(**kwargs).values_list('pk', flat=True)) pks.extend(SAMLAttribute.objects.filter(**kwargs).values_list('pk', flat=True))
@ -159,7 +161,7 @@ def load_one_entity(tree, options, sp_policy=None, afp=None):
sp = check_support_saml2(tree.find(SP_SSO_DESCRIPTOR_TN)) sp = check_support_saml2(tree.find(SP_SSO_DESCRIPTOR_TN))
if options.get('delete'): if options.get('delete'):
LibertyProvider.objects.filter(entity_id=entity_id).delete() LibertyProvider.objects.filter(entity_id=entity_id).delete()
print 'Deleted', entity_id print('Deleted', entity_id)
return return
if sp: if sp:
# build an unique slug # build an unique slug
@ -177,8 +179,8 @@ def load_one_entity(tree, options, sp_policy=None, afp=None):
what = 'Creating' what = 'Creating'
else: else:
what = 'Updating' what = 'Updating'
print '%(what)s %(name)s, %(id)s' % { print('%(what)s %(name)s, %(id)s' % {
'what': what, 'name': name.encode('utf8'), 'id': entity_id} 'what': what, 'name': name.encode('utf8'), 'id': entity_id})
provider.name = name[:128] provider.name = name[:128]
provider.metadata = etree.tostring(tree, encoding='utf-8').decode('utf-8').strip() provider.metadata = etree.tostring(tree, encoding='utf-8').decode('utf-8').strip()
provider.protocol_conformance = 3 provider.protocol_conformance = 3
@ -199,8 +201,8 @@ def load_one_entity(tree, options, sp_policy=None, afp=None):
kwargs, defaults = build_saml_attribute_kwargs(provider, name) kwargs, defaults = build_saml_attribute_kwargs(provider, name)
if not kwargs: if not kwargs:
if verbosity > 1: if verbosity > 1:
print >>sys.stderr, _('Unable to find an LDAP definition for attribute %(name)s on %(provider)s') % \ print(_('Unable to find an LDAP definition for attribute %(name)s on %(provider)s') % \
{'name': name, 'provider': provider} {'name': name, 'provider': provider}, file=sys.stderr)
continue continue
# create object with default attribute mapping to the same name # create object with default attribute mapping to the same name
# as the attribute if no SAMLAttribute model already exists, # as the attribute if no SAMLAttribute model already exists,
@ -209,7 +211,7 @@ def load_one_entity(tree, options, sp_policy=None, afp=None):
attribute, created = SAMLAttribute.objects.get_or_create( attribute, created = SAMLAttribute.objects.get_or_create(
defaults=defaults, **kwargs) defaults=defaults, **kwargs)
if created and verbosity > 1: if created and verbosity > 1:
print (_('Created new attribute %(name)s for %(provider)s') print(_('Created new attribute %(name)s for %(provider)s')
% {'name': name, 'provider': provider}) % {'name': name, 'provider': provider})
pks.append(attribute.pk) pks.append(attribute.pk)
except SAMLAttribute.MultipleObjectsReturned: except SAMLAttribute.MultipleObjectsReturned:
@ -331,16 +333,17 @@ Any other kind of attribute filter policy is unsupported.
try: try:
sp_policy = SPOptionsIdPPolicy.objects.get(name=sp_policy_name) sp_policy = SPOptionsIdPPolicy.objects.get(name=sp_policy_name)
if verbosity > 1: if verbosity > 1:
print 'Service providers are set with the following SAML2 \ print('Service providers are set with the following SAML2 \
options policy: %s' % sp_policy options policy: %s' % sp_policy)
except: except:
if verbosity > 0: if verbosity > 0:
print >>sys.stderr, _('SAML2 service provider options ' print(_('SAML2 service provider options '
'policy with name %s not found') % sp_policy_name 'policy with name %s not found') % sp_policy_name,
file=sys.stderr)
raise CommandError() raise CommandError()
else: else:
if verbosity > 1: if verbosity > 1:
print 'No SAML2 service provider options policy provided' print('No SAML2 service provider options policy provided')
loaded = [] loaded = []
if doc.getroot().tag == ENTITY_DESCRIPTOR_TN: if doc.getroot().tag == ENTITY_DESCRIPTOR_TN:
entity_descriptors = [doc.getroot()] entity_descriptors = [doc.getroot()]
@ -357,12 +360,13 @@ Any other kind of attribute filter policy is unsupported.
if not options['ignore-errors']: if not options['ignore-errors']:
raise raise
if verbosity > 0: if verbosity > 0:
print >>sys.stderr, (_('Failed to load entity descriptor for %s') print((_('Failed to load entity descriptor for %s')
% entity_descriptor.get(ENTITY_ID)) % entity_descriptor.get(ENTITY_ID)),
file=sys.stderr)
raise CommandError() raise CommandError()
if options['source']: if options['source']:
if options['delete']: if options['delete']:
print 'Finally delete all providers for source: %s...' % source print('Finally delete all providers for source: %s...' % source)
LibertyProvider.objects.filter(federation_source=source).delete() LibertyProvider.objects.filter(federation_source=source).delete()
else: else:
to_delete = [] to_delete = []
@ -371,10 +375,10 @@ Any other kind of attribute filter policy is unsupported.
to_delete.append(provider) to_delete.append(provider)
for provider in to_delete: for provider in to_delete:
if verbosity > 1: if verbosity > 1:
print _('Deleted obsolete provider %s') % provider.entity_id print(_('Deleted obsolete provider %s') % provider.entity_id)
provider.delete() provider.delete()
else: else:
raise CommandError('%s is not a SAMLv2 metadata file' % metadata_file) raise CommandError('%s is not a SAMLv2 metadata file' % metadata_file)
if not options.get('delete'): if not options.get('delete'):
if verbosity > 1: if verbosity > 1:
print 'Loaded', options.get('count', 0), 'providers' print('Loaded', options.get('count', 0), 'providers')

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import xml.etree.ElementTree as etree import xml.etree.ElementTree as etree
from authentic2.compat_lasso import lasso from authentic2.compat_lasso import lasso
from authentic2.saml import x509utils from authentic2.saml import x509utils
@ -205,4 +207,4 @@ if __name__ == '__main__':
'SingleSignOn': (('sso',), sso_protocol_profiles), 'SingleSignOn': (('sso',), sso_protocol_profiles),
}, options) }, options)
root = meta.root_element() root = meta.root_element()
print etree.tostring(root) print(etree.tostring(root))

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import xml.etree.ElementTree as etree import xml.etree.ElementTree as etree
import collections import collections
from authentic2.compat_lasso import lasso from authentic2.compat_lasso import lasso
@ -435,4 +437,4 @@ if __name__ == '__main__':
[ lasso.SAML2_METADATA_BINDING_POST ], 'acs'),), [ lasso.SAML2_METADATA_BINDING_POST ], 'acs'),),
options) options)
root = meta.root_element() root = meta.root_element()
print etree.tostring(root) print(etree.tostring(root))

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from utils import FancyTreeBuilder from utils import FancyTreeBuilder
@ -65,6 +67,6 @@ if __name__ == '__main__':
import sys import sys
for key, values in parse_attribute_filters_file(sys.argv[1]).iteritems(): for key, values in parse_attribute_filters_file(sys.argv[1]).iteritems():
print '-', key, ':' print('-', key, ':')
for value in values: for value in values:
print ' *', value print(' *', value)

View File

@ -1,3 +1,5 @@
from __future__ import print_function
import json import json
import pprint import pprint
@ -117,16 +119,16 @@ class Command(BaseCommand):
OIDCClaimMapping.objects.filter(provider=provider, claim__in=delete_claims) OIDCClaimMapping.objects.filter(provider=provider, claim__in=delete_claims)
if options.get('show'): if options.get('show'):
for field in OIDCProvider._meta.fields: for field in OIDCProvider._meta.fields:
print unicode(field.verbose_name), ':', print(field.verbose_name, ':')
value = getattr(provider, field.name) value = getattr(provider, field.name)
if isinstance(value, dict): if isinstance(value, dict):
print print
pprint.pprint(value) pprint.pprint(value)
elif hasattr(provider, str('get_' + field.attname + '_display')): elif hasattr(provider, str('get_' + field.attname + '_display')):
print getattr(provider, 'get_' + field.attname + '_display')(), '(%s)' % value print(getattr(provider, 'get_' + field.attname + '_display')(), '(%s)' % value)
else: else:
print value print(value)
print 'Mappings:' print('Mappings:')
for claim_mapping in provider.claim_mappings.all(): for claim_mapping in provider.claim_mappings.all():
print '-', claim_mapping print('-', claim_mapping)

View File

@ -1,3 +1,5 @@
from __future__ import print_function
try: try:
import ldap import ldap
from ldap.dn import str2dn, dn2str from ldap.dn import str2dn, dn2str
@ -154,12 +156,12 @@ class Command(BaseCommand):
if not fake: if not fake:
conn.modify(dn, modlist) conn.modify(dn, modlist)
if verbosity > 1: if verbosity > 1:
print '- Replace %s values for %s' % (dn, ', '.join(ldap_attributes.keys())) print('- Replace %s values for %s' % (dn, ', '.join(ldap_attributes.keys())))
else: else:
if not fake: if not fake:
conn.add(dn, ldap.modlist.addModlist(ldap_attributes)) conn.add(dn, ldap.modlist.addModlist(ldap_attributes))
if verbosity > 1: if verbosity > 1:
print '- Add %s with values for %s' % (dn, ', '.join(ldap_attributes.keys())) print('- Add %s with values for %s' % (dn, ', '.join(ldap_attributes.keys())))
# wait for results # wait for results
if not fake: if not fake:
for x in ldap_users: for x in ldap_users:
@ -174,7 +176,7 @@ class Command(BaseCommand):
todelete.add(dn) todelete.add(dn)
if delete: if delete:
if verbosity > 1: if verbosity > 1:
print '- Deleting:', ', '.join(todelete) print('- Deleting:', ', '.join(todelete))
if not fake: if not fake:
for dn in todelete: for dn in todelete:
conn.delete(dn) conn.delete(dn)

View File

@ -1,3 +1,5 @@
from __future__ import print_function
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
@ -11,11 +13,11 @@ class Command(BaseCommand):
Permission = get_permission_model() Permission = get_permission_model()
count = Permission.objects.cleanup() count = Permission.objects.cleanup()
if count: if count:
print 'Deleted %d permissions.' % count print('Deleted %d permissions.' % count)
Role = get_role_model() Role = get_role_model()
count = 0 count = 0
count = Role.objects.cleanup() count = Role.objects.cleanup()
if count: if count:
print 'Deleted %d roles.' % count print('Deleted %d roles.' % count)

View File

@ -775,8 +775,6 @@ def test_users_email(app, ou1, admin, user_ou1, mailoutbox):
assert len(mailoutbox) == 1 assert len(mailoutbox) == 1
mail = mailoutbox[0] mail = mailoutbox[0]
print mail.to
print mail.body
assert mail.to[0] == new_email assert mail.to[0] == new_email
assert 'http://testserver/accounts/change-email/verify/' in mail.body assert 'http://testserver/accounts/change-email/verify/' in mail.body

View File

@ -43,17 +43,14 @@ def test_deterministic_encryption():
crypted2 = crypto.aes_base64url_deterministic_encrypt(key, raw, salt, crypted2 = crypto.aes_base64url_deterministic_encrypt(key, raw, salt,
hash_name=hash_name, count=count) hash_name=hash_name, count=count)
assert crypted1 == crypted2 assert crypted1 == crypted2
print 'Crypted', hash_name, count, len(crypted1), crypted1
t = time.time() t = time.time()
for i in range(100): for i in range(100):
crypted1 = crypto.aes_base64url_deterministic_encrypt(key, raw, salt, crypted1 = crypto.aes_base64url_deterministic_encrypt(key, raw, salt,
hash_name=hash_name, hash_name=hash_name,
count=count) count=count)
print 'Encryption time:', hash_name, count, (time.time() - t) / 100.0
t = time.time() t = time.time()
for i in range(1000): for i in range(1000):
assert crypto.aes_base64url_deterministic_decrypt(key, crypted1, salt, assert crypto.aes_base64url_deterministic_decrypt(key, crypted1, salt,
max_count=count) == raw max_count=count) == raw
print 'Decryption time:', hash_name, count, (time.time() - t) / 1000.0