py3: fix encoding management in migrate-users command

This commit is contained in:
Frédéric Péters 2020-07-28 13:50:52 +02:00
parent 3bde928c12
commit 88fcce8f37
1 changed files with 6 additions and 5 deletions

View File

@ -9,6 +9,7 @@ from django.core.management.base import BaseCommand
from django.db import IntegrityError
from django.contrib.auth.models import User
from django.core.exceptions import ImproperlyConfigured
from django.utils.encoding import force_text
from mandayejs.mandaye.models import UserCredentials
from mellon.models import UserSAMLIdentifier
@ -54,15 +55,15 @@ class Command(BaseCommand):
data = self.get_ldif_data(filename)
data = [d[1] for d in data]
data = [
{k: ''.join(v) for k, v in d.items()} for d in data]
{k: b''.join(v) for k, v in d.items()} for d in data]
self.migrate(data)
def get_ldif_data(self, filename):
with open(filename, 'rb') as fd:
with open(filename, 'r') as fd:
return ldif.ParseLDIF(fd)
def get_csv_data(self, filename):
with open(filename, 'rb') as fd:
with open(filename, 'r') as fd:
fieldnames = ['idpUniqueID', 'spPostValues']
reader = csv.DictReader(fd, delimiter=';', quotechar='|', fieldnames=fieldnames)
return list(reader)
@ -72,11 +73,11 @@ class Command(BaseCommand):
for data in parsed_data:
try:
name_id = data.get('idpUniqueID')
name_id = force_text(data.get('idpUniqueID'))
credentials = json.loads(data.get('spPostValues'))
user, created = User.objects.get_or_create(
username=name_id, last_name=data.get('spLogin', ''))
username=name_id, last_name=force_text(data.get('spLogin', '')))
uc = UserCredentials(user=user, locators=credentials)
uc.save()