Skip to content
Snippets Groups Projects
Commit c7337a52 authored by Stephan Porada's avatar Stephan Porada :speech_balloon:
Browse files

Add first stopping and deletion functions etc.

parent 230d057f
No related branches found
No related tags found
No related merge requests found
...@@ -4,7 +4,7 @@ from . import auth ...@@ -4,7 +4,7 @@ from . import auth
from .. import db from .. import db
from .forms import ChangePasswordForm, LoginForm, PasswordResetForm, PasswordResetRequestForm, RegistrationForm, EditProfileForm from .forms import ChangePasswordForm, LoginForm, PasswordResetForm, PasswordResetRequestForm, RegistrationForm, EditProfileForm
from ..email import send_email from ..email import send_email
from ..models import User from ..models import User, Job
@auth.route('/login', methods=['GET', 'POST']) @auth.route('/login', methods=['GET', 'POST'])
...@@ -162,11 +162,11 @@ def edit_profile(): ...@@ -162,11 +162,11 @@ def edit_profile():
) )
@auth.route('/edit_profile/delete_self/<int:user_id>', methods=['GET', 'POST']) @auth.route('/edit_profile/delete_self', methods=['GET', 'POST'])
@login_required @login_required
def delete_self(user_id): def delete_self():
selected_user = User.query.filter_by(id=user_id).first() user = current_user
db.session.delete(selected_user) db.session.delete(user)
db.session.commit() db.session.commit()
flash('Your account has been deleted!') flash('Your account has been deleted!')
return redirect(url_for('main.index')) return redirect(url_for('main.index'))
...@@ -216,6 +216,15 @@ class User(UserMixin, db.Model): ...@@ -216,6 +216,15 @@ class User(UserMixin, db.Model):
jobs[str(job.id)] = job.to_dict() jobs[str(job.id)] = job.to_dict()
return jobs return jobs
def delete_user(self, user_id):
"""
Delete user from database. Also delete all associated jobs and corpora
files.
"""
user = User.query.filter_by(user_id=user_id)
db.session.delete(user)
db.session.commit()
class AnonymousUser(AnonymousUserMixin): class AnonymousUser(AnonymousUserMixin):
""" """
...@@ -276,6 +285,22 @@ class Job(db.Model): ...@@ -276,6 +285,22 @@ class Job(db.Model):
'title': self.title, 'title': self.title,
'user_id': self.user_id} 'user_id': self.user_id}
def flag_for_stop(self):
"""
Flag running or failed job (anything that is not completed) with
stopping. Opaque daemon will end services flaged with 'stopping'.
"""
self.status = 'stopping'
db.session.commit()
def delete_job(self, job_id):
"""
Delete job with given job id from database. Also delete associated job
files
"""
# TODO
pass
class Corpus(db.Model): class Corpus(db.Model):
""" """
......
...@@ -99,11 +99,27 @@ ...@@ -99,11 +99,27 @@
</script> </script>
<div class="col s12 m4"> <div class="col s12 m4">
<h2>Status:</h2>
<h3 id="title"></h3> <h3 id="title"></h3>
<p id="description"></p> <p id="description"></p>
<a class="waves-effect waves-light btn" id="status"></a> <a class="waves-effect waves-light btn" id="status"></a>
<h2>Actions:</h2>
<!-- Confirm deletion of selected user with modal dialogue
Modal Trigger-->
<a href="#modal-confirm-delete" class="waves-effect waves-light btn red modal-trigger"><i class="material-icons left">delete</i>Delete Job</a>
<!-- Modal Strucutre -->
<div id="modal-confirm-delete" class="modal">
<div class="modal-content">
<h4>Confirm deletion</h4>
<p>Do you really want to delete the job {{job.title}}?</p>
</div>
<div class="modal-footer">
<a href="{{ url_for('main.delete_job', job_id=job.id) }}" class="modal-close waves-effect waves-green btn red"><i class="material-icons left">delete</i>Delete Job</a></a>
</div>
</div>
</div> </div>
<div class="col s12 m8"> <div class="col s12 m8">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment