Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
nopaque
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Admin message
Looking for advice? Join the
Matrix channel for GitLab users in Bielefeld
!
Show more breadcrumbs
SFB 1288 - INF
nopaque
Commits
14f779d6
Commit
14f779d6
authored
5 years ago
by
Patrick Jentsch
Browse files
Options
Downloads
Patches
Plain Diff
Change url logic of job handlers
parent
e9d17343
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
app/main/views.py
+56
-47
56 additions, 47 deletions
app/main/views.py
app/templates/main/corpora/corpus.html.j2
+14
-0
14 additions, 0 deletions
app/templates/main/corpora/corpus.html.j2
app/templates/main/jobs/job.html.j2
+2
-2
2 additions, 2 deletions
app/templates/main/jobs/job.html.j2
with
72 additions
and
49 deletions
app/main/views.py
+
56
−
47
View file @
14f779d6
...
@@ -17,6 +17,30 @@ def index():
...
@@ -17,6 +17,30 @@ def index():
return
render_template
(
'
main/index.html.j2
'
,
title
=
'
Opaque
'
)
return
render_template
(
'
main/index.html.j2
'
,
title
=
'
Opaque
'
)
@main.route
(
'
/corpora/new
'
,
methods
=
[
'
POST
'
])
@login_required
def
corpus_new
():
create_corpus_form
=
CreateCorpusForm
()
if
create_corpus_form
.
validate_on_submit
():
corpus
=
Corpus
(
creator
=
current_user
,
description
=
create_corpus_form
.
description
.
data
,
title
=
create_corpus_form
.
title
.
data
)
db
.
session
.
add
(
corpus
)
db
.
session
.
commit
()
dir
=
os
.
path
.
join
(
current_app
.
config
[
'
OPAQUE_STORAGE_DIRECTORY
'
],
str
(
corpus
.
user_id
),
'
corpora
'
,
str
(
corpus
.
id
))
try
:
os
.
makedirs
(
dir
)
except
OSError
:
flash
(
'
OSError!
'
)
db
.
session
.
remove
(
corpus
)
db
.
session
.
commit
()
flash
(
'
Corpus created!
'
)
return
redirect
(
url_for
(
'
main.corpus
'
,
corpus_id
=
corpus
.
id
))
@main.route
(
'
/corpora/<int:corpus_id>
'
)
@main.route
(
'
/corpora/<int:corpus_id>
'
)
@login_required
@login_required
def
corpus
(
corpus_id
):
def
corpus
(
corpus_id
):
...
@@ -54,30 +78,6 @@ def corpus_analysis(corpus_id):
...
@@ -54,30 +78,6 @@ def corpus_analysis(corpus_id):
title
=
'
Corpus:
'
+
corpus
.
title
)
title
=
'
Corpus:
'
+
corpus
.
title
)
@main.route
(
'
/corpora/new
'
,
methods
=
[
'
POST
'
])
@login_required
def
corpus_new
():
create_corpus_form
=
CreateCorpusForm
()
if
create_corpus_form
.
validate_on_submit
():
corpus
=
Corpus
(
creator
=
current_user
,
description
=
create_corpus_form
.
description
.
data
,
title
=
create_corpus_form
.
title
.
data
)
db
.
session
.
add
(
corpus
)
db
.
session
.
commit
()
dir
=
os
.
path
.
join
(
current_app
.
config
[
'
OPAQUE_STORAGE_DIRECTORY
'
],
str
(
corpus
.
user_id
),
'
corpora
'
,
str
(
corpus
.
id
))
try
:
os
.
makedirs
(
dir
)
except
OSError
:
flash
(
'
OSError!
'
)
db
.
session
.
remove
(
corpus
)
db
.
session
.
commit
()
flash
(
'
Corpus created!
'
)
return
redirect
(
url_for
(
'
main.corpus
'
,
corpus_id
=
corpus
.
id
))
@main.route
(
'
/corpora/<int:corpus_id>/delete
'
)
@main.route
(
'
/corpora/<int:corpus_id>/delete
'
)
@login_required
@login_required
def
corpus_delete
(
corpus_id
):
def
corpus_delete
(
corpus_id
):
...
@@ -194,29 +194,6 @@ def job(job_id):
...
@@ -194,29 +194,6 @@ def job(job_id):
return
render_template
(
'
main/jobs/job.html.j2
'
,
job
=
job
,
title
=
'
Job
'
)
return
render_template
(
'
main/jobs/job.html.j2
'
,
job
=
job
,
title
=
'
Job
'
)
@main.route
(
'
/jobs/<int:job_id>/download
'
)
@login_required
def
job_download
(
job_id
):
ressource_id
=
request
.
args
.
get
(
'
ressource_id
'
)
ressource_type
=
request
.
args
.
get
(
'
ressource_type
'
)
if
ressource_type
==
'
input
'
:
ressource
=
JobInput
.
query
.
get_or_404
(
ressource_id
)
elif
ressource_type
==
'
result
'
:
ressource
=
JobResult
.
query
.
get_or_404
(
ressource_id
)
else
:
abort
(
400
)
if
not
ressource
.
job_id
==
job_id
:
abort
(
404
)
if
not
(
ressource
.
job
.
creator
==
current_user
or
current_user
.
is_administrator
()):
abort
(
403
)
dir
=
os
.
path
.
join
(
current_app
.
config
[
'
OPAQUE_STORAGE_DIRECTORY
'
],
ressource
.
dir
)
return
send_from_directory
(
as_attachment
=
True
,
directory
=
dir
,
filename
=
ressource
.
filename
)
@main.route
(
'
/jobs/<int:job_id>/delete
'
)
@main.route
(
'
/jobs/<int:job_id>/delete
'
)
@login_required
@login_required
def
delete_job
(
job_id
):
def
delete_job
(
job_id
):
...
@@ -227,3 +204,35 @@ def delete_job(job_id):
...
@@ -227,3 +204,35 @@ def delete_job(job_id):
delete_thread
.
start
()
delete_thread
.
start
()
flash
(
'
Job has been deleted!
'
)
flash
(
'
Job has been deleted!
'
)
return
redirect
(
url_for
(
'
main.dashboard
'
))
return
redirect
(
url_for
(
'
main.dashboard
'
))
@main.route
(
'
/jobs/<int:job_id>/inputs/<int:job_input_id>/download
'
)
@login_required
def
job_input_download
(
job_id
,
job_input_id
):
job_input
=
JobInput
.
query
.
get_or_404
(
job_input_id
)
if
not
job_input
.
job_id
==
job_id
:
abort
(
404
)
if
not
(
job_input
.
job
.
creator
==
current_user
or
current_user
.
is_administrator
()):
abort
(
403
)
dir
=
os
.
path
.
join
(
current_app
.
config
[
'
OPAQUE_STORAGE_DIRECTORY
'
],
job_input
.
dir
)
return
send_from_directory
(
as_attachment
=
True
,
directory
=
dir
,
filename
=
job_input
.
filename
)
@main.route
(
'
/jobs/<int:job_id>/results/<int:job_result_id>/download
'
)
@login_required
def
job_result_download
(
job_id
,
job_result_id
):
job_result
=
JobResult
.
query
.
get_or_404
(
job_result_id
)
if
not
job_result
.
job_id
==
job_id
:
abort
(
404
)
if
not
(
job_result
.
job
.
creator
==
current_user
or
current_user
.
is_administrator
()):
abort
(
403
)
dir
=
os
.
path
.
join
(
current_app
.
config
[
'
OPAQUE_STORAGE_DIRECTORY
'
],
job_result
.
dir
)
return
send_from_directory
(
as_attachment
=
True
,
directory
=
dir
,
filename
=
job_result
.
filename
)
This diff is collapsed.
Click to expand it.
app/templates/main/corpora/corpus.html.j2
+
14
−
0
View file @
14f779d6
...
@@ -4,6 +4,19 @@
...
@@ -4,6 +4,19 @@
<div class="col s12 m4">
<div class="col s12 m4">
<h3 id="title">{{ corpus.title }}</h3>
<h3 id="title">{{ corpus.title }}</h3>
<p id="description">{{ corpus.description }}</p>
<p id="description">{{ corpus.description }}</p>
<div class="position: relative; height: 70px;">
<div class="fixed-action-btn">
<a class="btn-floating btn-large red">
<i class="large material-icons">mode_edit</i>
</a>
<ul>
<li><a class="btn-floating red"><i class="material-icons">insert_chart</i></a></li>
<li><a class="btn-floating yellow darken-1"><i class="material-icons">format_quote</i></a></li>
<li><a class="btn-floating green"><i class="material-icons">publish</i></a></li>
<li><a class="btn-floating blue"><i class="material-icons">attach_file</i></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="col s12 m8">
<div class="col s12 m8">
...
@@ -69,6 +82,7 @@
...
@@ -69,6 +82,7 @@
</div>
</div>
<div id="add-corpus-file-modal" class="modal">
<div id="add-corpus-file-modal" class="modal">
<div class="modal-content">
<div class="modal-content">
<h4>Add corpus file</h4>
<h4>Add corpus file</h4>
...
...
This diff is collapsed.
Click to expand it.
app/templates/main/jobs/job.html.j2
+
2
−
2
View file @
14f779d6
...
@@ -83,7 +83,7 @@
...
@@ -83,7 +83,7 @@
resultsElement = document.getElementById(`input-${result.job_input_id}-results`);
resultsElement = document.getElementById(`input-${result.job_input_id}-results`);
resultDownloadButtonElement = document.createElement("a");
resultDownloadButtonElement = document.createElement("a");
resultDownloadButtonElement.classList.add("waves-effect", "waves-light", "btn-small");
resultDownloadButtonElement.classList.add("waves-effect", "waves-light", "btn-small");
resultDownloadButtonElement.href = `/jobs/${this.jobId}/
download?ressource_id=${result.id}&ressource_type=result
`;
resultDownloadButtonElement.href = `/jobs/${this.jobId}/
results/${result.id}/download
`;
resultDownloadButtonElement.innerText = result.filename.split(".").reverse()[0];
resultDownloadButtonElement.innerText = result.filename.split(".").reverse()[0];
resultDownloadButtonElement.setAttribute("download", "");
resultDownloadButtonElement.setAttribute("download", "");
resultDownloadButtonIconElement = document.createElement("i");
resultDownloadButtonIconElement = document.createElement("i");
...
@@ -207,7 +207,7 @@
...
@@ -207,7 +207,7 @@
<tr>
<tr>
<td id="input-{{ input.id }}-filename">{{ input.filename }}</td>
<td id="input-{{ input.id }}-filename">{{ input.filename }}</td>
<td id="input-{{ input.id }}-download">
<td id="input-{{ input.id }}-download">
<a class="waves-effect waves-light btn-small" download href="{{ url_for('main.job_download', job_id=job.id,
ressource_id=
input
.
id
, ressource_type='
input
'
) }}">
<a class="waves-effect waves-light btn-small" download href="{{ url_for('main.job_
input_
download', job_id=job.id,
job_
input
_
id
=
input
.id
) }}">
<i class="material-icons">file_download</i>
<i class="material-icons">file_download</i>
</a>
</a>
</td>
</td>
...
...
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