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
Merge requests
!25
Odkazy na papíry
Code
Review changes
Check out branch
Download
Patches
Plain diff
Expand sidebar
Merged
Odkazy na papíry
mj/paper-link
into
devel
Overview
0
Commits
5
Changes
1
Merged
Martin Mareš
requested to merge
mj/paper-link
into
devel
4 years ago
Overview
0
Commits
5
Changes
1
0
0
Merge request reports
Viewing commit
95b029ec
Prev
Next
Show latest version
1 file
+
14
−
7
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
95b029ec
org_paper_link: Odkazy se jménem účastníka
· 95b029ec
Martin Mareš
authored
4 years ago
mo/web/util.py
+
14
−
7
View file @ 95b029ec
Edit in single-file editor
Open in Web IDE
Show full file
@@ -3,6 +3,7 @@ from flask_wtf import FlaskForm
import
os
from
sqlalchemy.orm.query
import
Query
from
typing
import
Tuple
,
Optional
,
Union
import
unicodedata
import
werkzeug.exceptions
import
werkzeug.utils
import
wtforms
@@ -49,32 +50,38 @@ def send_task_statement(round: db.Round) -> Response:
raise
werkzeug
.
exceptions
.
NotFound
()
def
task_paper_filename
(
paper
:
db
.
Paper
)
->
str
:
"""
Doporučujeme preloadovat task.
"""
def
_
task_paper_filename
(
user
:
db
.
User
,
paper
:
db
.
Paper
)
->
str
:
# Tato jména parsuje dávkový upload
task
=
paper
.
task
full_name
=
user
.
full_name
()
ascii_name
=
(
unicodedata
.
normalize
(
'
NFD
'
,
full_name
)
.
encode
(
'
ascii
'
,
'
ignore
'
)
.
decode
(
'
utf-8
'
))
secure_task_code
=
werkzeug
.
utils
.
secure_filename
(
task
.
code
)
if
paper
.
type
==
db
.
PaperType
.
solution
:
return
f
'
{
secure_task_code
}
-reseni-
{
paper
.
for_user
}
-
{
paper
.
paper_id
}
.pdf
'
typ
=
'
reseni
'
elif
paper
.
type
==
db
.
PaperType
.
feedback
:
return
f
'
{
secure_task_code
}
-opravene-
{
paper
.
for_user
}
-
{
paper
.
paper_id
}
.pdf
'
typ
=
'
opravene
'
else
:
assert
False
fn
=
f
'
{
paper
.
task
.
code
}
_
{
typ
}
_
{
user
.
user_id
}
_
{
paper
.
paper_id
}
_
{
ascii_name
}
.pdf
'
return
werkzeug
.
utils
.
secure_filename
(
fn
)
def
org_paper_link
(
contest_or_id
:
Union
[
db
.
Contest
,
int
],
site
:
Optional
[
db
.
Place
],
user
:
db
.
User
,
paper
:
db
.
Paper
)
->
str
:
"""
Doporučujeme preloadovat paper.task.
"""
if
isinstance
(
contest_or_id
,
db
.
Contest
):
contest_or_id
=
contest_or_id
.
contest_id
return
url_for
(
'
org_submit_paper
'
,
contest_id
=
contest_or_id
,
paper_id
=
paper
.
paper_id
,
site_id
=
site
.
place_id
if
site
else
None
,
filename
=
task_paper_filename
(
paper
))
filename
=
_
task_paper_filename
(
user
,
paper
))
def
send_task_paper
(
paper
:
db
.
Paper
)
->
Response
:
Loading