use argparse in user migration command (#22529)

This commit is contained in:
Josue Kouka 2018-03-14 18:32:37 +01:00
parent b71d066bdb
commit 93b45751a4
1 changed files with 14 additions and 22 deletions

View File

@ -4,7 +4,6 @@ import csv
import json
import ldif
import logging
from optparse import make_option
from django.core.management.base import BaseCommand
from django.db import IntegrityError
@ -29,41 +28,34 @@ def get_issuer():
class Command(BaseCommand):
args = '<filename>'
help = 'Migrate users from ldif file or csv file'
option_list = BaseCommand.option_list + (
make_option(
def add_arguments(self, parser):
parser.add_argument('filename', metavar='FILENAME', type=str,
help='name of file to import')
parser.add_argument(
'--ldap',
action='store_true',
default=False,
help='Migrate users from a ldap dump file'
),
make_option(
)
parser.add_argument(
'--csv',
action='store_true',
default=False,
help='Migrate users from a csv file'
)
)
def handle(self, *args, **kwargs):
if len(args) < 1:
self.stdout.write('An input file is required')
return False
def handle(self, filename, *args, **kwargs):
if kwargs.get('csv'):
for filename in args:
data = self.get_csv_data(filename)
self.migrate(data)
data = self.get_csv_data(filename)
self.migrate(data)
else:
for filename in args:
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
]
self.migrate(data)
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]
self.migrate(data)
def get_ldif_data(self, filename):
with open(filename, 'rb') as fd: