Skip to content
Snippets Groups Projects
Commit 29183b87 authored by Patrick Jentsch's avatar Patrick Jentsch
Browse files

prepare vrt file in background thread.

parent 69387ee1
No related branches found
No related tags found
No related merge requests found
from app.utils import background_prepare_corpus_file
from flask import (abort, current_app, flash, redirect, request, from flask import (abort, current_app, flash, redirect, request,
render_template, url_for, send_from_directory) render_template, url_for, send_from_directory)
from flask_login import current_user, login_required from flask_login import current_user, login_required
...@@ -115,6 +116,11 @@ def add_corpus_file(corpus_id): ...@@ -115,6 +116,11 @@ def add_corpus_file(corpus_id):
title=add_corpus_file_form.title.data) title=add_corpus_file_form.title.data)
db.session.add(corpus_file) db.session.add(corpus_file)
db.session.commit() db.session.commit()
background_thread = threading.Thread(
args=(current_app._get_current_object(), corpus_file.id),
target=background_prepare_corpus_file
)
background_thread.start()
flash('Corpus file added!') flash('Corpus file added!')
return redirect(url_for('corpora.corpus', corpus_id=corpus_id)) return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
return render_template('corpora/add_corpus_file.html.j2', return render_template('corpora/add_corpus_file.html.j2',
......
...@@ -24,7 +24,8 @@ def delete_job(job_id): ...@@ -24,7 +24,8 @@ def delete_job(job_id):
if not (job.creator == current_user or current_user.is_administrator()): if not (job.creator == current_user or current_user.is_administrator()):
abort(403) abort(403)
delete_thread = threading.Thread(target=background_delete_job, delete_thread = threading.Thread(target=background_delete_job,
args=(current_app, job_id)) args=(current_app._get_current_object(),
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'))
......
from datetime import datetime
from flask import current_app from flask import current_app
from flask_login import UserMixin, AnonymousUserMixin from flask_login import UserMixin, AnonymousUserMixin
from itsdangerous import BadSignature, TimedJSONWebSignatureSerializer from itsdangerous import BadSignature, TimedJSONWebSignatureSerializer
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
import xml.etree.ElementTree as ET
from . import db from . import db
from . import login_manager from . import login_manager
from datetime import datetime
import os import os
import shutil import shutil
import logging import logging
import xml.etree.ElementTree as ET
class Permission: class Permission:
...@@ -411,18 +411,6 @@ class CorpusFile(db.Model): ...@@ -411,18 +411,6 @@ class CorpusFile(db.Model):
title = db.Column(db.String(64)) title = db.Column(db.String(64))
corpus_id = db.Column(db.Integer, db.ForeignKey('corpora.id')) corpus_id = db.Column(db.Integer, db.ForeignKey('corpora.id'))
def __init__(self, **kwargs):
super(CorpusFile, self).__init__(**kwargs)
file = os.path.join(current_app.config['OPAQUE_STORAGE_DIRECTORY'],
self.dir,
self.filename)
element_tree = ET.parse(file)
text_node = element_tree.find('text')
text_node.set('author', self.author)
text_node.set('publishing_year', str(self.publishing_year))
text_node.set('title', self.title)
element_tree.write(file)
def delete(self): def delete(self):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.warning('Called CorpusFile.delete') logger.warning('Called CorpusFile.delete')
...@@ -437,6 +425,17 @@ class CorpusFile(db.Model): ...@@ -437,6 +425,17 @@ class CorpusFile(db.Model):
db.session.delete(self) db.session.delete(self)
db.session.commit() db.session.commit()
def insert_metadata(self):
file = os.path.join(current_app.config['OPAQUE_STORAGE_DIRECTORY'],
self.dir,
self.filename)
element_tree = ET.parse(file)
text_node = element_tree.find('text')
text_node.set('author', self.author)
text_node.set('publishing_year', str(self.publishing_year))
text_node.set('title', self.title)
element_tree.write(file)
class Corpus(db.Model): class Corpus(db.Model):
""" """
......
from .models import Job, User, Corpus, CorpusFile
from . import db from . import db
from .models import Job, User, Corpus, CorpusFile
import logging import logging
...@@ -69,3 +69,4 @@ def background_delete_corpus(app, corpus_id): ...@@ -69,3 +69,4 @@ def background_delete_corpus(app, corpus_id):
def background_prepare_corpus_file(app, corpus_file_id): def background_prepare_corpus_file(app, corpus_file_id):
with app.app_context(): with app.app_context():
corpus_file = CorpusFile.query.filter_by(id=corpus_file_id).first() corpus_file = CorpusFile.query.filter_by(id=corpus_file_id).first()
corpus_file.insert_metadata()
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