Projet

Général

Profil

0002-use-argparse-in-user-migration-command-22529.patch

Josué Kouka, 14 mars 2018 18:36

Télécharger (2,61 ko)

Voir les différences:

Subject: [PATCH 2/2] use argparse in user migration command (#22529)

 .../mandaye/management/commands/migrate-users.py   | 36 +++++++++-------------
 1 file changed, 14 insertions(+), 22 deletions(-)
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:
70
-