from .. import db, socketio from ..decorators import background from ..models import Corpus, CorpusFile, QueryResult @background def build_corpus(corpus_id, *args, **kwargs): app = kwargs['app'] with app.app_context(): corpus = Corpus.query.get(corpus_id) if corpus is None: raise Exception('Corpus {} not found'.format(corpus_id)) corpus.build() db.session.commit() event = 'user_{}_patch'.format(corpus.user_id) jsonpatch = [{'op': 'replace', 'path': '/corpora/{}/last_edited_date'.format(corpus.id), 'value': corpus.last_edited_date.timestamp()}, # noqa {'op': 'replace', 'path': '/corpora/{}/status'.format(corpus.id), 'value': corpus.status}] # noqa room = 'user_{}'.format(corpus.user_id) socketio.emit(event, jsonpatch, room=room) @background def delete_corpus(corpus_id, *args, **kwargs): with kwargs['app'].app_context(): corpus = Corpus.query.get(corpus_id) if corpus is None: raise Exception('Corpus {} not found'.format(corpus_id)) event = 'user_{}_patch'.format(corpus.user_id) jsonpatch = [{'op': 'remove', 'path': '/corpora/{}'.format(corpus.id)}] room = 'user_{}'.format(corpus.user_id) corpus.delete() db.session.commit() socketio.emit(event, jsonpatch, room=room) @background def delete_corpus_file(corpus_file_id, *args, **kwargs): with kwargs['app'].app_context(): corpus_file = CorpusFile.query.get(corpus_file_id) if corpus_file is None: raise Exception('Corpus file {} not found'.format(corpus_file_id)) event = 'user_{}_patch'.format(corpus_file.corpus.user_id) jsonpatch = [{'op': 'remove', 'path': '/corpora/{}/files/{}'.format(corpus_file.corpus_id, corpus_file.id)}, # noqa {'op': 'replace', 'path': '/corpora/{}/status'.format(corpus_file.corpus_id), 'value': corpus_file.corpus.status}] # noqa room = 'user_{}'.format(corpus_file.corpus.user_id) corpus_file.delete() db.session.commit() socketio.emit(event, jsonpatch, room=room) @background def delete_query_result(query_result_id, *args, **kwargs): with kwargs['app'].app_context(): query_result = QueryResult.query.get(query_result_id) if query_result is None: raise Exception('QueryResult {} not found'.format(query_result_id)) event = 'user_{}_patch'.format(query_result.user_id) jsonpatch = [{'op': 'remove', 'path': '/query_results/{}'.format(query_result.id)}] # noqa room = 'user_{}'.format(query_result.user_id) query_result.delete() db.session.commit() socketio.emit(event, jsonpatch, room=room)