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
b7c3cad5
Commit
b7c3cad5
authored
3 years ago
by
Jiří Kalvoda
Browse files
Options
Downloads
Patches
Plain Diff
Import: Přetypování účastníka na orga
parent
cbe2ef05
No related branches found
No related tags found
1 merge request
!97
Import orgů
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
mo/imports.py
+15
-6
15 additions, 6 deletions
mo/imports.py
with
15 additions
and
6 deletions
mo/imports.py
+
15
−
6
View file @
b7c3cad5
...
@@ -47,6 +47,7 @@ class Import:
...
@@ -47,6 +47,7 @@ class Import:
cnt_set_points
:
int
=
0
cnt_set_points
:
int
=
0
cnt_add_sols
:
int
=
0
cnt_add_sols
:
int
=
0
cnt_del_sols
:
int
=
0
cnt_del_sols
:
int
=
0
cnt_change_user_to_org
:
int
=
0
# pro Import orgů: Počet provedených/požadovaných změn účastnka na orga
# Veřejné vlastnosti importu
# Veřejné vlastnosti importu
template_basename
:
str
=
"
sablona
"
template_basename
:
str
=
"
sablona
"
...
@@ -58,6 +59,7 @@ class Import:
...
@@ -58,6 +59,7 @@ class Import:
only_region
:
Optional
[
db
.
Place
]
only_region
:
Optional
[
db
.
Place
]
task
:
Optional
[
db
.
Task
]
# pro Import bodů
task
:
Optional
[
db
.
Task
]
# pro Import bodů
allow_add_del
:
bool
# pro Import bodů: je povoleno zakládat/mazat řešení
allow_add_del
:
bool
# pro Import bodů: je povoleno zakládat/mazat řešení
allow_change_user_to_org
:
bool
=
False
# pro Import orgů: je povoleno vyrobit orga z účastníka
fmt
:
FileFormat
fmt
:
FileFormat
row_class
:
Type
[
mo
.
csv
.
Row
]
row_class
:
Type
[
mo
.
csv
.
Row
]
row_example
:
mo
.
csv
.
Row
row_example
:
mo
.
csv
.
Row
...
@@ -195,7 +197,12 @@ class Import:
...
@@ -195,7 +197,12 @@ class Import:
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
:
user
,
is_new
,
is_change_user_to_org
=
mo
.
users
.
find_or_create_user
(
email
,
krestni
,
prijmeni
,
is_org
,
reason
=
'
import
'
)
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
'
)
self
.
cnt_change_user_to_org
+=
is_user_to_org
except
mo
.
users
.
CheckErrorOrgIsUser
as
e
:
self
.
cnt_change_user_to_org
+=
1
raise
mo
.
CheckError
(
str
(
e
)
+
"
Změnu můžete povolit ve formuláři.
"
)
except
mo
.
CheckError
as
e
:
except
mo
.
CheckError
as
e
:
return
self
.
error
(
str
(
e
))
return
self
.
error
(
str
(
e
))
if
is_new
:
if
is_new
:
...
@@ -276,6 +283,10 @@ class Import:
...
@@ -276,6 +283,10 @@ class Import:
ur
=
db
.
UserRole
(
user
=
user
,
place
=
place
,
role
=
role
,
ur
=
db
.
UserRole
(
user
=
user
,
place
=
place
,
role
=
role
,
category
=
round
.
category
,
year
=
round
.
year
,
seq
=
round
.
seq
,
category
=
round
.
category
,
year
=
round
.
year
,
seq
=
round
.
seq
,
assigned_by_user
=
self
.
user
)
assigned_by_user
=
self
.
user
)
if
not
self
.
gatekeeper
.
can_set_role
(
ur
):
return
self
.
error
(
'
Roli
"
{new_role}
"
nelze přidělit, není podmnožinou žádné vaší role
'
)
sess
.
add
(
ur
)
sess
.
add
(
ur
)
sess
.
flush
()
sess
.
flush
()
logger
.
info
(
f
'
Import:
{
role
.
name
.
title
()
}
user=#
{
user
.
user_id
}
place=#
{
place
.
place_id
}
user_role=#
{
ur
.
user_role_id
}
'
)
logger
.
info
(
f
'
Import:
{
role
.
name
.
title
()
}
user=#
{
user
.
user_id
}
place=#
{
place
.
place_id
}
user_role=#
{
ur
.
user_role_id
}
'
)
...
@@ -517,10 +528,6 @@ class OrgsImport(Import):
...
@@ -517,10 +528,6 @@ class OrgsImport(Import):
oblast
=
self
.
parse_opt_place
(
r
.
kod_oblasti
,
'
oblast
'
)
oblast
=
self
.
parse_opt_place
(
r
.
kod_oblasti
,
'
oblast
'
)
role
=
self
.
parse_role
(
r
.
role
)
role
=
self
.
parse_role
(
r
.
role
)
if
role
==
db
.
RoleType
.
opravovatel
:
if
oblast
is
None
:
return
self
.
error
(
'
Kód místa je povinné uvést
'
)
if
role
!=
db
.
RoleType
.
opravovatel
:
if
role
!=
db
.
RoleType
.
opravovatel
:
contest
=
self
.
obtain_contest
(
oblast
,
allow_none
=
True
)
contest
=
self
.
obtain_contest
(
oblast
,
allow_none
=
True
)
place
=
contest
.
place
if
contest
else
self
.
root_place
place
=
contest
.
place
if
contest
else
self
.
root_place
...
@@ -697,12 +704,14 @@ def create_import(user: db.User,
...
@@ -697,12 +704,14 @@ def create_import(user: db.User,
contest
:
Optional
[
db
.
Contest
]
=
None
,
contest
:
Optional
[
db
.
Contest
]
=
None
,
only_region
:
Optional
[
db
.
Place
]
=
None
,
only_region
:
Optional
[
db
.
Place
]
=
None
,
task
:
Optional
[
db
.
Task
]
=
None
,
task
:
Optional
[
db
.
Task
]
=
None
,
allow_add_del
:
bool
=
False
):
allow_add_del
:
bool
=
False
,
allow_change_user_to_org
:
bool
=
False
):
imp
:
Import
imp
:
Import
if
type
==
ImportType
.
participants
:
if
type
==
ImportType
.
participants
:
imp
=
ContestImport
()
imp
=
ContestImport
()
elif
type
==
ImportType
.
orgs
:
elif
type
==
ImportType
.
orgs
:
imp
=
OrgsImport
()
imp
=
OrgsImport
()
imp
.
allow_change_user_to_org
=
allow_change_user_to_org
elif
type
==
ImportType
.
points
:
elif
type
==
ImportType
.
points
:
imp
=
PointsImport
()
imp
=
PointsImport
()
else
:
else
:
...
...
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