Verified Commit 40a4fd97 authored by Peter Stanko's avatar Peter Stanko
Browse files

Ability to import users from csv

parent efe9a5e3
......@@ -6,6 +6,7 @@ from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from management.data import shared
from management.data.data_cpp import init_cpp_data
from management.data.data_dev import init_dev_data
from management.data.data_prod import init_prod_data
from management.data.data_test import init_test_data
......@@ -45,6 +46,8 @@ class DataManagement(object):
init_prod_data(db=self.db, app=self.app)
if env == 'test':
init_test_data(db=self.db, app=self.app)
if env == 'cpp':
init_cpp_data(app=self.app, db=self.db)
else:
init_dev_data(db=self.db, app=self.app)
......@@ -196,16 +199,26 @@ class DataManagement(object):
users = self._parse_csv_users(file)
created_users = []
for user in users:
if self.rest.find.user(user['username'], throws=False):
log.debug(f"[IMPORT] skipping already existing user {user['username']}: {user}")
continue
log.debug(f"[IMPORT] Adding user {user['username']}: {user}")
created = self.rest.users.create(**user, admin=False)
created_users.append(created)
self._add_users_to_course(created_users, role, group)
self._add_users_to_course(created_users, role, group)
def _parse_csv_users(self, file=None):
def _parse_csv_users(self, file=None) -> list:
fields = ['username', 'uco', 'email', 'name']
def __read_users(reader):
return [user for user in reader]
if file is None:
return csv.DictReader(sys.stdin, fieldnames=fields)
reader = csv.DictReader(sys.stdin, fieldnames=fields)
return __read_users(reader)
with open(file) as f:
return csv.DictReader(f, fieldnames=fields)
reader = csv.DictReader(f, fieldnames=fields)
return __read_users(reader)
def _add_users_to_course(self, created_users, role: Role, group: Group):
for user in created_users:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment