Skip to content
Snippets Groups Projects
Commit e5d3ed29 authored by Odin Johan Vatne's avatar Odin Johan Vatne
Browse files

Fix readcsv using username_getter for new users

(cherry picked from commit 93f187ab)
parent f32d7970
Branches
No related tags found
No related merge requests found
......@@ -16,9 +16,9 @@ to_bool = lambda str: bool(strtobool(str))
short_map = {'w': 'weeks', 'd': 'days', 'h': 'hours', 'm': 'minutes'}
cest_tz = timezone(timedelta(hours=+5), 'CEST')
def read_csv(input_folder, user_getter=None):
if user_getter == None:
user_getter = lambda x: x
def read_csv(input_folder, username_getter=None):
if username_getter == None:
username_getter = lambda x: x
tag_category_map = {}
tag_map = {}
......@@ -47,7 +47,9 @@ def read_csv(input_folder, user_getter=None):
if key.startswith('f_') or key.startswith('ff_'): continue # foreign keys, case-by-case handling
value = row[col]
if value == '': continue # uses model default, use ' ' if a blank string is needed
if key.startswith('b_'): # boolean fields
if key == 'username':
value = username_getter(value)
elif key.startswith('b_'): # boolean fields
key = key[2:]
value = to_bool(value)
elif key.startswith('i_'): # integer fields
......@@ -196,7 +198,7 @@ def read_csv(input_folder, user_getter=None):
user = User.objects.get(username=form_args['username'])
created_cnt += 1
else:
logging.warning(f"Could not create User {row[col_map['username']]}, found at row {row_num} of 'users.csv':")
logging.warning(f"Could not create User {form_args['username']}, found at row {row_num} of 'users.csv':")
logging.warning(form.errors)
failed_cnt += 1
if 'ff_tags' in col_map and user:
......@@ -253,7 +255,7 @@ def read_csv(input_folder, user_getter=None):
else:
with error_logger.handle(row_num):
ref_id = row[col_map['ref_id']] if 'ref_id' in col_map else None
professor = User.objects.get(username=user_getter(row[col_map['f_professor']]))
professor = User.objects.get(username=username_getter(row[col_map['f_professor']]))
params = get_params(col_map.items(), row)
copies = Project.objects.filter(title=row[col_map['title']], professor=professor, status=row[col_map['status']])
if len(copies) > 0:
......@@ -321,7 +323,7 @@ def read_csv(input_folder, user_getter=None):
with error_logger.handle(row_num):
ref_id = row[col_map['ref_id']] if 'ref_id' in col_map else None
project_id = get_or_throw(project_map, row[col_map['f_project']]) #Project.objects.get(id=row[col_map['f_project']])
username = user_getter(row[col_map['f_student']])
username = username_getter(row[col_map['f_student']])
student = User.objects.get(username=username)
group_members = []
if 'ff_members' in col_map and row[col_map['ff_members']]:
......@@ -340,7 +342,7 @@ def read_csv(input_folder, user_getter=None):
if not member:
continue #empty string
try:
user = User.objects.get(username=user_getter(member))
user = User.objects.get(username=username_getter(member))
retrieved.group_members.add(user)
except Exception as e:
member_error_cnt += 1
......@@ -386,7 +388,7 @@ def read_csv(input_folder, user_getter=None):
with error_logger.handle(row_num):
ref_id = row[col_map['ref_id']] if 'ref_id' in col_map else None
application_id = get_or_throw(application_map, row[col_map['f_application']])
username = user_getter(row[col_map['f_sender']])
username = username_getter(row[col_map['f_sender']])
sender = User.objects.get(username=username)
params = get_params(col_map.items(), row)
existing = Comment.objects.filter(application_id=application_id, sender=sender, message=params['message']) # ignores duplicates at different datetimes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment