mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-13 03:32:22 +01:00
53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
import json
|
|
|
|
from django.core.management.base import BaseCommand
|
|
from django.contrib.auth import get_user_model
|
|
from ...utils import get_first_queue
|
|
|
|
USERDB_FORMAT = b'UserID username Fullname password Level Studie\n'
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Import users from a JSON file exported from a previous version of Marietje.'
|
|
|
|
def add_arguments(self, parser):
|
|
group = parser.add_mutually_exclusive_group()
|
|
group.add_argument('--json_file')
|
|
group.add_argument('--tsv_file')
|
|
|
|
def handle(self, *args, **options):
|
|
if options['json_file']:
|
|
filename = options['json_file']
|
|
User = get_user_model()
|
|
|
|
with open(filename) as fp:
|
|
for line in fp:
|
|
import_user = json.loads(line)
|
|
user = User()
|
|
user.username = import_user['_id'].lower().strip()
|
|
user.name = import_user['n'].strip()
|
|
user.email = user.username + '@science.ru.nl'
|
|
user.password = 'md5$$' + import_user['p']
|
|
user.queue = get_first_queue()
|
|
user.save()
|
|
|
|
if options['tsv_file']:
|
|
filename = options['tsv_file']
|
|
User = get_user_model()
|
|
|
|
with open(filename, 'rb') as fp:
|
|
line = fp.readline()
|
|
assert line == USERDB_FORMAT, 'bad 1st line: {}'.format(line)
|
|
for line in fp:
|
|
import_user = line.strip(b'\n').split(b'\t')
|
|
username = import_user[1].decode('utf-8', errors='strict').lower().strip()
|
|
user, created = User.objects.get_or_create(username=username)
|
|
user.name = import_user[2].decode('utf-8', errors='ignore').strip()
|
|
user.email = user.username + '@science.ru.nl'
|
|
user.password = import_user[3].decode('utf-8', errors='strict')
|
|
user.queue = get_first_queue()
|
|
user.study = import_user[5].decode('utf-8', errors='ignore').strip()
|
|
user.save()
|
|
|
|
print('Done importing users.')
|