use argparse in user migration command (#22529)
This commit is contained in:
parent
b71d066bdb
commit
93b45751a4
|
@ -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:
|
||||
|
|
Reference in New Issue