Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Odevzdávací Systém MO
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
Odevzdávací Systém MO
Commits
8053f7c3
Commit
8053f7c3
authored
1 year ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Import: Účastníci bez mailové adresy
parent
372e57ed
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
mo/imports.py
+22
-14
22 additions, 14 deletions
mo/imports.py
with
22 additions
and
14 deletions
mo/imports.py
+
22
−
14
View file @
8053f7c3
...
@@ -104,8 +104,11 @@ class Import:
...
@@ -104,8 +104,11 @@ class Import:
except
ValueError
:
except
ValueError
:
return
self
.
error
(
'
ID uživatele není číslo
'
)
return
self
.
error
(
'
ID uživatele není číslo
'
)
def
parse_email
(
self
,
email
:
str
)
->
Optional
[
str
]:
def
parse_email
(
self
,
email
:
str
,
optional
:
bool
)
->
Optional
[
str
]:
if
email
==
""
:
if
email
==
""
:
if
optional
:
return
""
else
:
return
self
.
error
(
'
Chybí e-mailová adresa
'
)
return
self
.
error
(
'
Chybí e-mailová adresa
'
)
try
:
try
:
...
@@ -212,7 +215,6 @@ class Import:
...
@@ -212,7 +215,6 @@ class Import:
return
self
.
error
(
'
Pořadí kola v kategorii není číslo
'
)
return
self
.
error
(
'
Pořadí kola v kategorii není číslo
'
)
def
find_or_create_user
(
self
,
email
:
str
,
krestni
:
Optional
[
str
],
prijmeni
:
Optional
[
str
],
is_org
:
bool
)
->
Optional
[
db
.
User
]:
def
find_or_create_user
(
self
,
email
:
str
,
krestni
:
Optional
[
str
],
prijmeni
:
Optional
[
str
],
is_org
:
bool
)
->
Optional
[
db
.
User
]:
try
:
try
:
try
:
user
,
is_new
,
is_user_to_org
=
mo
.
users
.
find_or_create_user
(
email
,
krestni
,
prijmeni
,
is_org
,
allow_change_user_to_org
=
self
.
allow_change_user_to_org
,
reason
=
'
import
'
)
user
,
is_new
,
is_user_to_org
=
mo
.
users
.
find_or_create_user
(
email
,
krestni
,
prijmeni
,
is_org
,
allow_change_user_to_org
=
self
.
allow_change_user_to_org
,
reason
=
'
import
'
)
self
.
cnt_change_user_to_org
+=
is_user_to_org
self
.
cnt_change_user_to_org
+=
is_user_to_org
...
@@ -387,9 +389,11 @@ class Import:
...
@@ -387,9 +389,11 @@ class Import:
return
False
return
False
def
get_row_name
(
self
,
row
:
mo
.
csv
.
Row
)
->
Optional
[
str
]:
def
get_row_name
(
self
,
row
:
mo
.
csv
.
Row
)
->
Optional
[
str
]:
if
hasattr
(
row
,
'
email
'
):
# čteme prvky potomka třídy Row
# čtení prvku potomka
if
hasattr
(
row
,
'
email
'
)
and
row
.
email
:
return
row
.
email
# type: ignore
return
row
.
email
# type: ignore
if
hasattr
(
row
,
'
krestni
'
)
and
hasattr
(
row
,
'
prijmeni
'
)
and
row
.
krestni
and
row
.
prijmeni
:
return
row
.
krestni
+
'
'
+
row
.
prijmeni
# type: ignore
return
None
return
None
def
generic_import
(
self
,
path
:
str
,
despite_warnings
:
bool
)
->
bool
:
def
generic_import
(
self
,
path
:
str
,
despite_warnings
:
bool
)
->
bool
:
...
@@ -514,7 +518,7 @@ class ContestImport(Import):
...
@@ -514,7 +518,7 @@ class ContestImport(Import):
assert
self
.
round
assert
self
.
round
assert
isinstance
(
r
,
ContestImportRow
)
assert
isinstance
(
r
,
ContestImportRow
)
num_prev_errs
=
len
(
self
.
errors
)
num_prev_errs
=
len
(
self
.
errors
)
email
=
self
.
parse_email
(
r
.
email
)
email
=
self
.
parse_email
(
r
.
email
,
optional
=
True
)
krestni
=
self
.
parse_name
(
r
.
krestni
)
if
r
.
krestni
else
None
krestni
=
self
.
parse_name
(
r
.
krestni
)
if
r
.
krestni
else
None
prijmeni
=
self
.
parse_name
(
r
.
prijmeni
)
if
r
.
prijmeni
else
None
prijmeni
=
self
.
parse_name
(
r
.
prijmeni
)
if
r
.
prijmeni
else
None
school_place
=
self
.
parse_school
(
r
.
kod_skoly
)
if
r
.
kod_skoly
else
None
school_place
=
self
.
parse_school
(
r
.
kod_skoly
)
if
r
.
kod_skoly
else
None
...
@@ -522,6 +526,7 @@ class ContestImport(Import):
...
@@ -522,6 +526,7 @@ class ContestImport(Import):
school_place
=
self
.
default_place
school_place
=
self
.
default_place
rocnik
=
self
.
parse_grade
(
r
.
rocnik
,
(
school_place
.
school
if
school_place
else
None
))
if
r
.
rocnik
else
None
rocnik
=
self
.
parse_grade
(
r
.
rocnik
,
(
school_place
.
school
if
school_place
else
None
))
if
r
.
rocnik
else
None
rok_naroz
=
self
.
parse_born
(
r
.
rok_naroz
)
if
r
.
rok_naroz
else
None
rok_naroz
=
self
.
parse_born
(
r
.
rok_naroz
)
if
r
.
rok_naroz
else
None
misto
=
self
.
parse_opt_place
(
r
.
kod_mista
,
'
místo
'
)
misto
=
self
.
parse_opt_place
(
r
.
kod_mista
,
'
místo
'
)
if
misto
and
not
self
.
check_rights
(
self
.
round
,
misto
):
if
misto
and
not
self
.
check_rights
(
self
.
round
,
misto
):
return
self
.
error
(
f
'
Nemáte práva na správu soutěže
{
misto
.
name_locative
()
}
'
)
return
self
.
error
(
f
'
Nemáte práva na správu soutěže
{
misto
.
name_locative
()
}
'
)
...
@@ -530,10 +535,13 @@ class ContestImport(Import):
...
@@ -530,10 +535,13 @@ class ContestImport(Import):
if
oblast
and
not
self
.
check_rights
(
self
.
round
,
oblast
):
if
oblast
and
not
self
.
check_rights
(
self
.
round
,
oblast
):
return
self
.
error
(
f
'
Nemáte práva na správu soutěže
{
oblast
.
name_locative
()
}
'
)
return
self
.
error
(
f
'
Nemáte práva na správu soutěže
{
oblast
.
name_locative
()
}
'
)
if
(
len
(
self
.
errors
)
>
num_prev_errs
if
len
(
self
.
errors
)
>
num_prev_errs
:
or
email
is
None
):
return
return
try
:
email
=
mo
.
users
.
email_or_synthesize
(
email
,
krestni
,
prijmeni
,
rocnik
,
school_place
)
except
mo
.
CheckError
as
e
:
return
self
.
error
(
str
(
e
))
user
=
self
.
find_or_create_user
(
email
,
krestni
,
prijmeni
,
is_org
=
False
)
user
=
self
.
find_or_create_user
(
email
,
krestni
,
prijmeni
,
is_org
=
False
)
if
user
is
None
:
if
user
is
None
:
return
return
...
@@ -604,7 +612,7 @@ class OrgsImport(Import):
...
@@ -604,7 +612,7 @@ class OrgsImport(Import):
def
import_row
(
self
,
r
:
mo
.
csv
.
Row
)
->
None
:
def
import_row
(
self
,
r
:
mo
.
csv
.
Row
)
->
None
:
assert
isinstance
(
r
,
OrgsImportRow
)
or
isinstance
(
r
,
GlobalOrgsImportRow
)
assert
isinstance
(
r
,
OrgsImportRow
)
or
isinstance
(
r
,
GlobalOrgsImportRow
)
num_prev_errs
=
len
(
self
.
errors
)
num_prev_errs
=
len
(
self
.
errors
)
email
=
self
.
parse_email
(
r
.
email
)
email
=
self
.
parse_email
(
r
.
email
,
optional
=
False
)
krestni
=
self
.
parse_name
(
r
.
krestni
)
krestni
=
self
.
parse_name
(
r
.
krestni
)
prijmeni
=
self
.
parse_name
(
r
.
prijmeni
)
prijmeni
=
self
.
parse_name
(
r
.
prijmeni
)
role
=
self
.
parse_role
(
r
.
role
)
role
=
self
.
parse_role
(
r
.
role
)
...
...
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