mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-12 23:52:21 +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.")
|