Révision 93b45751
Ajouté par Josué Kouka il y a environ 6 ans
mandayejs/mandaye/management/commands/migrate-users.py | ||
---|---|---|
4 | 4 |
import json |
5 | 5 |
import ldif |
6 | 6 |
import logging |
7 |
from optparse import make_option |
|
8 | 7 |
|
9 | 8 |
from django.core.management.base import BaseCommand |
10 | 9 |
from django.db import IntegrityError |
... | ... | |
29 | 28 |
|
30 | 29 |
|
31 | 30 |
class Command(BaseCommand): |
32 |
args = '<filename>' |
|
33 | 31 |
help = 'Migrate users from ldif file or csv file' |
34 | 32 |
|
35 |
option_list = BaseCommand.option_list + ( |
|
36 |
make_option( |
|
33 |
def add_arguments(self, parser): |
|
34 |
parser.add_argument('filename', metavar='FILENAME', type=str, |
|
35 |
help='name of file to import') |
|
36 |
parser.add_argument( |
|
37 | 37 |
'--ldap', |
38 | 38 |
action='store_true', |
39 | 39 |
default=False, |
40 | 40 |
help='Migrate users from a ldap dump file' |
41 |
),
|
|
42 |
make_option(
|
|
41 |
) |
|
42 |
parser.add_argument(
|
|
43 | 43 |
'--csv', |
44 | 44 |
action='store_true', |
45 | 45 |
default=False, |
46 | 46 |
help='Migrate users from a csv file' |
47 | 47 |
) |
48 |
) |
|
49 |
|
|
50 |
def handle(self, *args, **kwargs): |
|
51 |
if len(args) < 1: |
|
52 |
self.stdout.write('An input file is required') |
|
53 |
return False |
|
54 | 48 |
|
49 |
def handle(self, filename, *args, **kwargs): |
|
55 | 50 |
if kwargs.get('csv'): |
56 |
for filename in args: |
|
57 |
data = self.get_csv_data(filename) |
|
58 |
self.migrate(data) |
|
51 |
data = self.get_csv_data(filename) |
|
52 |
self.migrate(data) |
|
59 | 53 |
else: |
60 |
for filename in args: |
|
61 |
data = self.get_ldif_data(filename) |
|
62 |
data = [d[1] for d in data] |
|
63 |
data = [ |
|
64 |
{k: ''.join(v) for k, v in d.items()} for d in data |
|
65 |
] |
|
66 |
self.migrate(data) |
|
54 |
data = self.get_ldif_data(filename) |
|
55 |
data = [d[1] for d in data] |
|
56 |
data = [ |
|
57 |
{k: ''.join(v) for k, v in d.items()} for d in data] |
|
58 |
self.migrate(data) |
|
67 | 59 |
|
68 | 60 |
def get_ldif_data(self, filename): |
69 | 61 |
with open(filename, 'rb') as fd: |
Formats disponibles : Unified diff
use argparse in user migration command (#22529)