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
23bb896e
Commit
23bb896e
authored
3 years ago
by
Jiří Kalvoda
Browse files
Options
Downloads
Patches
Plain Diff
OrgFilterForm nepouživá f_
parent
4d655dee
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/web/org_users.py
+24
-64
24 additions, 64 deletions
mo/web/org_users.py
with
24 additions
and
64 deletions
mo/web/org_users.py
+
24
−
64
View file @
23bb896e
...
@@ -128,9 +128,9 @@ class OrgsFilterForm(PagerForm):
...
@@ -128,9 +128,9 @@ class OrgsFilterForm(PagerForm):
search_right_for_place
=
mo_fields
.
Place
(
'
Právo pro oblast
'
,
validators
=
[
validators
.
Optional
()])
search_right_for_place
=
mo_fields
.
Place
(
'
Právo pro oblast
'
,
validators
=
[
validators
.
Optional
()])
search_in_place
=
mo_fields
.
Place
(
'
V oblasti
'
,
validators
=
[
validators
.
Optional
()])
search_in_place
=
mo_fields
.
Place
(
'
V oblasti
'
,
validators
=
[
validators
.
Optional
()])
search_place_level
=
wtforms
.
SelectMultipleField
(
"
Úroveň oblasti
"
,
choices
=
[(
i
.
level
,
i
.
name
)
for
i
in
db
.
place_levels
],
validators
=
[
validators
.
Optional
()],
coerce
=
int
)
search_place_level
=
wtforms
.
SelectMultipleField
(
"
Úroveň oblasti
"
,
choices
=
[(
i
.
level
,
i
.
name
)
for
i
in
db
.
place_levels
],
validators
=
[
validators
.
Optional
()],
coerce
=
int
)
search_year
=
wtforms
.
StringField
(
'
Ročník
'
,
validators
=
[
validators
.
Optional
()])
search_year
=
mo_fields
.
IntList
(
'
Ročník
'
,
validators
=
[
validators
.
Optional
()])
search_category
=
wtforms
.
StringField
(
"
Kategorie
"
,
validators
=
[
validators
.
Optional
()])
search_category
=
wtforms
.
StringField
(
"
Kategorie
"
,
validators
=
[
validators
.
Optional
()])
search_seq
=
wtforms
.
StringField
(
"
Kolo
"
,
validators
=
[
validators
.
Optional
()])
search_seq
=
mo_fields
.
IntList
(
"
Kolo
"
,
validators
=
[
validators
.
Optional
()])
submit
=
wtforms
.
SubmitField
(
"
Filtrovat
"
)
submit
=
wtforms
.
SubmitField
(
"
Filtrovat
"
)
show_role_filter
=
wtforms
.
SubmitField
(
"
Zobrazit filtrování dle rolí
"
)
show_role_filter
=
wtforms
.
SubmitField
(
"
Zobrazit filtrování dle rolí
"
)
...
@@ -138,50 +138,6 @@ class OrgsFilterForm(PagerForm):
...
@@ -138,50 +138,6 @@ class OrgsFilterForm(PagerForm):
is_role_filter
=
wtforms
.
HiddenField
(
default
=
""
)
# "" -> skrýt. "yes" -> zobrazit
is_role_filter
=
wtforms
.
HiddenField
(
default
=
""
)
# "" -> skrýt. "yes" -> zobrazit
# Výstupní hodnoty filtru, None při nepoužitém filtru nebo špatné hodnotě (takové filtry ignorujeme)
f_search_name
:
Optional
[
str
]
=
None
f_search_email
:
Optional
[
str
]
=
None
f_search_role
:
Optional
[
List
[
db
.
RoleType
]]
=
None
f_search_right_for_place
:
Optional
[
db
.
Place
]
=
None
f_search_in_place
:
Optional
[
db
.
Place
]
=
None
f_search_year
:
Optional
[
List
[
int
]]
=
None
f_search_category
:
Optional
[
List
[
str
]]
=
None
f_search_place_level
:
Optional
[
List
[
int
]]
=
None
f_search_seq
:
Optional
[
List
[
int
]]
=
None
def
validate_search_name
(
self
,
field
):
self
.
f_search_name
=
f
"
%
{
field
.
data
}
%
"
def
validate_search_email
(
self
,
field
):
self
.
f_search_email
=
f
"
%
{
field
.
data
}
%
"
def
validate_search_role
(
self
,
field
):
self
.
f_search_role
=
field
.
data
def
validate_search_right_for_place
(
self
,
field
):
self
.
f_search_right_for_place
=
field
.
place
def
validate_search_in_place
(
self
,
field
):
self
.
f_search_in_place
=
field
.
place
def
validate_search_year
(
self
,
field
):
try
:
self
.
f_search_year
=
mo
.
util
.
parse_int_list
(
field
.
data
)
except
mo
.
CheckError
as
e
:
raise
wtforms
.
ValidationError
(
str
(
e
))
def
validate_search_category
(
self
,
field
):
self
.
f_search_category
=
field
.
data
.
split
(
"
,
"
)
def
validate_search_place_level
(
self
,
field
):
self
.
f_search_place_level
=
field
.
data
def
validate_search_seq
(
self
,
field
):
try
:
self
.
f_search_seq
=
mo
.
util
.
parse_int_list
(
field
.
data
)
except
mo
.
CheckError
as
e
:
raise
wtforms
.
ValidationError
(
str
(
e
))
def
prepare_role_filter
(
self
):
def
prepare_role_filter
(
self
):
if
self
.
show_role_filter
.
data
:
if
self
.
show_role_filter
.
data
:
self
.
is_role_filter
.
data
=
"
yes
"
self
.
is_role_filter
.
data
=
"
yes
"
...
@@ -212,30 +168,34 @@ def org_orgs():
...
@@ -212,30 +168,34 @@ def org_orgs():
filter
.
validate
()
filter
.
validate
()
filter
.
prepare_role_filter
()
filter
.
prepare_role_filter
()
if
filter
.
f_
search_name
:
if
filter
.
search_name
.
data
:
q
=
q
.
filter
(
or_
(
q
=
q
.
filter
(
or_
(
db
.
User
.
first_name
.
ilike
(
filter
.
f_
search_name
),
db
.
User
.
first_name
.
ilike
(
f
"
%
{
filter
.
search_name
.
data
}
%
"
),
db
.
User
.
last_name
.
ilike
(
filter
.
f_
search_name
)
db
.
User
.
last_name
.
ilike
(
f
"
%
{
filter
.
search_name
.
data
}
%
"
)
))
))
if
filter
.
search_email
.
data
:
q
=
q
.
filter
(
db
.
User
.
email
.
ilike
(
f
"
%
{
filter
.
search_email
.
data
}
%
"
))
def
query_filter_role
(
qr
:
flask_sqlalchemy
.
BaseQuery
)
->
flask_sqlalchemy
.
BaseQuery
:
def
query_filter_role
(
qr
:
flask_sqlalchemy
.
BaseQuery
)
->
flask_sqlalchemy
.
BaseQuery
:
if
filter
.
f_search_role
is
not
None
:
if
filter
.
search_role
.
data
:
qr
=
qr
.
filter
(
db
.
UserRole
.
role
.
in_
(
filter
.
f_search_role
))
qr
=
qr
.
filter
(
db
.
UserRole
.
role
.
in_
(
filter
.
search_role
.
data
))
if
filter
.
f_search_category
is
not
None
:
if
filter
.
search_category
.
data
:
qr
=
qr
.
filter
(
or_
(
db
.
UserRole
.
category
.
in_
(
filter
.
f_search_category
),
db
.
UserRole
.
category
==
None
))
qr
=
qr
.
filter
(
or_
(
db
.
UserRole
.
category
.
in_
(
filter
.
search_category
.
data
.
split
(
"
,
"
)),
db
.
UserRole
.
category
==
None
))
if
filter
.
f_search_seq
is
not
None
:
if
filter
.
search_seq
.
list
:
qr
=
qr
.
filter
(
or_
(
db
.
UserRole
.
seq
.
in_
(
filter
.
f_search_seq
),
db
.
UserRole
.
seq
==
None
))
qr
=
qr
.
filter
(
or_
(
db
.
UserRole
.
seq
.
in_
(
filter
.
search_seq
.
list
),
db
.
UserRole
.
seq
==
None
))
if
filter
.
f_search_year
is
not
None
:
if
filter
.
search_year
.
list
:
qr
=
qr
.
filter
(
or_
(
db
.
UserRole
.
year
.
in_
(
filter
.
f_search_year
),
db
.
UserRole
.
year
==
None
))
qr
=
qr
.
filter
(
or_
(
db
.
UserRole
.
year
.
in_
(
filter
.
search_year
.
list
),
db
.
UserRole
.
year
==
None
))
if
filter
.
f_search_in_place
is
not
None
:
pass
qr
=
qr
.
filter
(
db
.
UserRole
.
place_id
.
in_
(
db
.
place_descendant_cte
(
filter
.
f_search_in_place
)))
if
filter
.
search_in_place
.
place
is
not
None
:
if
filter
.
f_search_right_for_place
is
not
None
:
qr
=
qr
.
filter
(
db
.
UserRole
.
place_id
.
in_
(
db
.
place_descendant_cte
(
filter
.
search_in_place
.
place
)))
qr
=
qr
.
filter
(
db
.
UserRole
.
place_id
.
in_
([
x
.
place_id
for
x
in
db
.
get_place_parents
(
filter
.
f_search_right_for_place
)]))
if
filter
.
search_right_for_place
.
place
is
not
None
:
qr
=
qr
.
filter
(
db
.
UserRole
.
place_id
.
in_
([
x
.
place_id
for
x
in
db
.
get_place_parents
(
filter
.
search_right_for_place
.
place
)]))
# Po n>3 hodinách v mo.db jsem dospěl k závěru, že to hezčeji neumím (neumím vyrobit place_parents_cte)
# Po n>3 hodinách v mo.db jsem dospěl k závěru, že to hezčeji neumím (neumím vyrobit place_parents_cte)
if
filter
.
f_
search_place_level
is
not
None
:
if
filter
.
search_place_level
.
data
:
qr
=
qr
.
filter
(
db
.
UserRole
.
place_id
.
in_
(
qr
=
qr
.
filter
(
db
.
UserRole
.
place_id
.
in_
(
sess
.
query
(
db
.
Place
.
place_id
).
filter
(
db
.
Place
.
level
.
in_
(
filter
.
f_
search_place_level
))
sess
.
query
(
db
.
Place
.
place_id
).
filter
(
db
.
Place
.
level
.
in_
(
filter
.
search_place_level
.
data
))
))
))
print
(
qr
)
return
qr
return
qr
if
filter
.
is_role_filter
.
data
:
if
filter
.
is_role_filter
.
data
:
...
...
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