diff --git a/app/jobs/views.py b/app/jobs/views.py index e713fb7137c0a3365d9e7e2c71a7408b55c9cb9f..ec22ccd7eab46df559a3c3e4b131c19490f4fd79 100644 --- a/app/jobs/views.py +++ b/app/jobs/views.py @@ -20,10 +20,11 @@ def job(job_id): @jobs.route('/<int:job_id>/delete') @login_required def delete_job(job_id): - delete_thread = threading.Thread( - target=background_delete_job, - args=(current_app._get_current_object(), job_id) - ) + job = Job.query.get_or_404(job_id) + if not (job.creator == current_user or current_user.is_administrator()): + abort(403) + delete_thread = threading.Thread(target=background_delete_job, + args=(current_app, job_id)) delete_thread.start() flash('Job has been deleted!') return redirect(url_for('main.dashboard')) diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2 index 9774079919df5dc36488586c4257e335a3395d29..fbcf321bb89f49df48762fbbf31fbe0528154908 100644 --- a/app/templates/corpora/corpus.html.j2 +++ b/app/templates/corpora/corpus.html.j2 @@ -55,7 +55,7 @@ <td class="right-align"> <a class="waves-effect waves-light btn-small" href="{{ url_for('corpora.edit_corpus_file', corpus_file_id=file.id, corpus_id=corpus.id) }}"><i class="material-icons">edit</i></a> <a class="waves-effect waves-light btn-small" href="{{ url_for('corpora.download_corpus_file', corpus_file_id=file.id, corpus_id=corpus.id) }}"><i class="material-icons">file_download</i></a> - <a class="waves-effect waves-light btn-small red" href="{{ url_for('corpora.delete_corpus_file', corpus_file_id=file.id, corpus_id=corpus.id) }}"><i class="material-icons">delete</i></a> + <a data-target="delete-corpus-file-{{ file.id }}-modal" class="waves-effect waves-light btn-small red modal-trigger"><i class="material-icons">delete</i></a> </td> </tr> {% endfor %} @@ -79,4 +79,17 @@ <a href="{{ url_for('corpora.delete_corpus', corpus_id=corpus.id) }}" class="modal-close waves-effect waves-green btn red">Confirm<i class="material-icons right">send</i></a> </div> </div> + +{% for file in corpus.files %} +<div id="delete-corpus-file-{{ file.id }}-modal" class="modal"> + <div class="modal-content"> + <h4>Confirm corpus file deletion</h4> + <p>Do you really want to delete the corpus file {{ file.filename }}? The file will be permanently deleted!</p> + </div> + <div class="modal-footer"> + <a href="#!" class="modal-close waves-effect waves-green btn cancel">Cancel</a> + <a class="modal-close waves-effect waves-green btn red" href="{{ url_for('corpora.delete_corpus_file', corpus_file_id=file.id, corpus_id=corpus.id) }}">Confirm<i class="material-icons right">send</i></a> + </div> +</div> +{% endfor %} {% endblock %} diff --git a/app/templates/jobs/job.html.j2 b/app/templates/jobs/job.html.j2 index 2c7d064ada9522f2ba10971d59f30afbcf75011a..512dc7345b97f35b120b8ee036ff8d0c3a7d2a69 100644 --- a/app/templates/jobs/job.html.j2 +++ b/app/templates/jobs/job.html.j2 @@ -31,6 +31,8 @@ this.job = jobs[this.jobId]; } + // End date + this.setEndDate(this.job.end_date); // Status this.setStatus(this.job.status); // End date @@ -73,7 +75,13 @@ } setEndDate(timestamp) { - document.getElementById("end-date").value = new Date(timestamp * 1000).toLocaleString(); + var end_date; + if (timestamp === null) { + end_date = "N.a."; + } else { + end_date = new Date(timestamp * 1000).toLocaleString(); + } + document.getElementById("end-date").value = end_date; M.updateTextFields(); }