2024-01-18 12:03:37 +01:00

71 lines
2.3 KiB
Python

import csv
import os
import sys
from django.conf import settings
from django.contrib.auth.models import Group
from django.core.management.base import BaseCommand
from user.models import Organization, User
class Command(BaseCommand):
help = """
Programatically create entries for model User
"""
def handle(self, *args, **options):
csv_fpath = os.path.join(settings.RESOURCES_DIR, 'users.csv')
csv.field_size_limit(sys.maxsize)
created_entries = 0
existing_entries = 0
admin_group, created = Group.objects.get_or_create(name='Admin')
operater_group, created = Group.objects.get_or_create(name='Operater')
with open(csv_fpath) as f:
reader = csv.DictReader(f)
default_organization = Organization.objects.get_or_create(name='Državna geodetska uprava')[0]
for row in reader:
username = row['usrname']
first_name = row['ime']
last_name = row['prezime']
email = row['email']
email_confirmed = True
if not email:
print("User {} {} doesn't have email but it's required. Setting fake email...".format(
first_name, last_name
))
# set fake email
email = '{}.{}@example.com'.format(first_name, last_name)
email_confirmed = False
obj, created = User.objects.get_or_create(
username=username,
first_name=first_name,
last_name=last_name,
email=email,
email_confirmed=email_confirmed,
organization=default_organization
)
if row['rola'] == 'operater':
obj.groups.add(operater_group)
elif row['rola'] == 'admin':
obj.groups.add(admin_group)
else:
obj.groups.clear()
if created:
created_entries += 1
print("Kreiran user {} {}".format(obj.first_name, obj.last_name))
else:
existing_entries += 1
print("Created: {}".format(created_entries))
print("Existing: {}".format(existing_entries))