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
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
Odevzdávací Systém MO
Merge requests
!5
Základ práce s uživateli
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Základ práce s uživateli
jirka/users
into
master
Overview
17
Commits
6
Changes
12
2 unresolved threads
Hide all comments
Merged
Jiří Setnička
requested to merge
jirka/users
into
master
4 years ago
Overview
17
Commits
6
Changes
10
2 unresolved threads
Hide all comments
Expand
0
0
Merge request reports
Compare
version 2
version 3
099aa66f
4 years ago
version 2
5d80f7b3
4 years ago
version 1
6c999be6
4 years ago
master (base)
and
version 3
latest version
42947462
6 commits,
4 years ago
version 3
099aa66f
4 commits,
4 years ago
version 2
5d80f7b3
4 commits,
4 years ago
version 1
6c999be6
4 commits,
4 years ago
Show latest version
10 files
+
130
−
58
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
10
Search (e.g. *.vue) (Ctrl+P)
bin/add-role
+
18
−
37
Options
#!/usr/bin/env python3
import
argparse
import
re
import
sys
import
mo.db
as
db
import
mo.util
from
mo.util
import
die
parser
=
argparse
.
ArgumentParser
(
description
=
'
Přidělí uživateli roli
'
)
parser
.
add_argument
(
'
--email
'
,
type
=
str
,
help
=
'
e-mailová adresa uživatele
'
)
parser
.
add_argument
(
'
--uid
'
,
type
=
int
,
help
=
'
ID uživatele
'
)
parser
.
add_argument
(
'
--role
'
,
type
=
str
,
help
=
'
název role
'
,
required
=
True
)
parser
.
add_argument
(
'
--place
-id
'
,
type
=
int
,
help
=
'
omezení role na místo s daným
ID
'
)
parser
.
add_argument
(
'
--place
'
,
type
=
str
,
help
=
'
omezení role na místo s daným
kódem
'
)
parser
.
add_argument
(
'
--cat
'
,
type
=
str
,
help
=
'
omezení role na danou kategorii
'
)
parser
.
add_argument
(
'
--round
'
,
type
=
str
,
metavar
=
'
YY-R
'
,
help
=
'
omezení role na dané kolo
'
)
parser
.
add_argument
(
'
--year
'
,
type
=
int
,
help
=
'
omezení role na daný ročník
'
)
parser
.
add_argument
(
'
--seq
'
,
type
=
int
,
help
=
'
omezení role na dané pořadí kola
'
)
args
=
parser
.
parse_args
()
session
=
db
.
get_session
()
@@ -29,58 +29,39 @@ else:
parser
.
error
(
'
Je nutné vybrat uživatele pomocí --email nebo --uid
'
)
if
not
user
:
print
(
"
Tento uživatel neexistuje
"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
die
(
"
Tento uživatel neexistuje
"
)
if
user
.
is_admin
:
print
(
"
Tento uživatel je admin, nemá smysl přidělovat mu další práva
"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
die
(
"
Tento uživatel je admin, nemá smysl přidělovat mu další práva
"
)
if
not
user
.
is_org
:
print
(
"
Tento uživatel není organizátor
"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
die
(
"
Tento uživatel není organizátor
"
)
role
=
getattr
(
db
.
RoleType
,
args
.
role
,
None
)
if
role
is
None
:
print
(
"
Tato role neexistuje
"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
die
(
"
Tato role neexistuje
"
)
for_round
=
None
if
args
.
round
:
m
=
re
.
fullmatch
(
r
'
(\d+)-(\d+)
'
,
args
.
round
)
if
not
m
:
parser
.
error
(
'
Chybná syntaxe --round
'
)
if
not
args
.
cat
:
parser
.
error
(
'
--round vyžaduje zadání kategorie
'
)
round
=
session
.
query
(
db
.
Round
).
filter_by
(
year
=
int
(
m
[
1
]),
category
=
args
.
cat
,
level
=
int
(
m
[
2
])).
first
()
if
not
round
:
print
(
"
Toto kolo neexistuje
"
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
for_round
=
round
.
round_id
if
args
.
place_id
:
for_place
=
args
.
place_id
if
args
.
place
:
for_place
=
db
.
get_place_by_code
(
args
.
place
)
if
for_place
is
None
:
die
(
"
Toto místo neexistuje
"
)
else
:
place
=
session
.
query
(
db
.
Place
).
filter_by
(
level
=
1
).
first
()
assert
place
for_place
=
place
.
place_id
for_place
=
db
.
get_root_place
()
assert
for_place
is
not
None
ur
=
db
.
UserRole
(
user_id
=
user
.
user_id
,
place
_id
=
for_place
,
place
=
for_place
,
role
=
role
,
category
=
args
.
cat
,
round_id
=
for_round
,
year
=
args
.
year
,
seq
=
args
.
seq
,
)
session
.
add
(
ur
)
session
.
flush
()
mo
.
util
.
log
(
db
.
LogType
.
user_role
,
ur
.
user_role_id
,
{
'
action
'
:
'
assigned
'
,
'
user_id
'
:
ur
.
user_id
,
'
place_id
'
:
ur
.
place_id
,
'
role
'
:
role
.
name
,
'
category
'
:
ur
.
category
,
'
round_id
'
:
ur
.
round_id
,
'
new
'
:
db
.
row2dict
(
ur
),
})
session
.
commit
()
Loading