Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Master Project Assignment Software
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Odin Johan Vatne
Master Project Assignment Software
Commits
e5d3ed29
Commit
e5d3ed29
authored
3 years ago
by
Odin Johan Vatne
Browse files
Options
Downloads
Patches
Plain Diff
Fix readcsv using username_getter for new users
(cherry picked from commit
93f187ab
)
parent
f32d7970
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
pasapp/management/commands/_readcsv.py
+11
-9
11 additions, 9 deletions
pasapp/management/commands/_readcsv.py
with
11 additions
and
9 deletions
pasapp/management/commands/_readcsv.py
+
11
−
9
View file @
e5d3ed29
...
...
@@ -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
,
user
name
_getter
=
None
):
if
user
name
_getter
==
None
:
user
name
_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
=
user
name
_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
=
user
name
_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
=
user
name
_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
=
user
name
_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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment