mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-12 09:00:40 +00:00
Merge branch 'development' of gitlab.ub.uni-bielefeld.de:sfb1288inf/opaque into development
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
from app import db, logger, socketio
|
||||
from app.events import connected_sessions
|
||||
from app.models import Corpus
|
||||
from app.models import Corpus, User
|
||||
from flask import current_app, request
|
||||
from flask_login import current_user, login_required
|
||||
from .CQiWrapper.CQiWrapper import CQiWrapper
|
||||
@ -17,21 +17,13 @@ corpus_analysis_sessions = {}
|
||||
corpus_analysis_clients = {}
|
||||
|
||||
|
||||
@socketio.on('request_corpus_analysis')
|
||||
@socketio.on('corpus_analysis_init')
|
||||
@login_required
|
||||
def request_corpus_analysis(corpus_id):
|
||||
corpus = Corpus.query.get(corpus_id)
|
||||
if corpus is None:
|
||||
socketio.emit('init_corpus_analysis', '[404]: Not Found',
|
||||
room=request.sid)
|
||||
elif not (corpus.creator == current_user
|
||||
or current_user.is_administrator()):
|
||||
socketio.emit('init_corpus_analysis', '[403]: Forbidden',
|
||||
room=request.sid)
|
||||
else:
|
||||
socketio.start_background_task(corpus_analysis_session_handler,
|
||||
current_app._get_current_object(),
|
||||
corpus_id, request.sid)
|
||||
def init_corpus_analysis(corpus_id):
|
||||
logger.warning("a")
|
||||
socketio.start_background_task(corpus_analysis_session_handler,
|
||||
current_app._get_current_object(),
|
||||
corpus_id, current_user.id, request.sid)
|
||||
|
||||
|
||||
@socketio.on('corpus_analysis')
|
||||
@ -91,10 +83,21 @@ def inspect_match(message):
|
||||
socketio.emit('match_context', match_context, room=request.sid)
|
||||
|
||||
|
||||
def corpus_analysis_session_handler(app, corpus_id, session_id):
|
||||
def corpus_analysis_session_handler(app, corpus_id, user_id, session_id):
|
||||
with app.app_context():
|
||||
''' Setup analysis session '''
|
||||
corpus = Corpus.query.get(corpus_id)
|
||||
user = User.query.get(user_id)
|
||||
if corpus is None:
|
||||
logger.warning("404")
|
||||
response = {'code': 404, 'msg': 'Not Found'}
|
||||
socketio.emit('corpus_analysis_init', response, room=session_id)
|
||||
return
|
||||
elif not (corpus.creator == user or user.is_administrator()):
|
||||
logger.warning("403")
|
||||
response = {'code': 403, 'msg': 'Forbidden'}
|
||||
socketio.emit('corpus_analysis_init', response, room=session_id)
|
||||
return
|
||||
while corpus.status != 'analysing':
|
||||
db.session.refresh(corpus)
|
||||
socketio.sleep(3)
|
||||
@ -105,8 +108,8 @@ def corpus_analysis_session_handler(app, corpus_id, session_id):
|
||||
corpus_analysis_sessions[corpus_id] = [session_id]
|
||||
else:
|
||||
corpus_analysis_sessions[corpus_id].append(session_id)
|
||||
socketio.emit('request_corpus_analysis', '[201]: Created',
|
||||
room=session_id)
|
||||
response = {'code': 201, 'msg': 'Created'}
|
||||
socketio.emit('corpus_analysis_init', response, room=session_id)
|
||||
''' Observe analysis session '''
|
||||
while session_id in connected_sessions:
|
||||
socketio.sleep(3)
|
||||
|
@ -1,6 +1,6 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import (FileField, StringField, SubmitField,
|
||||
ValidationError, IntegerField, SelectField, TextAreaField)
|
||||
from wtforms import (BooleanField, FileField, StringField, SubmitField,
|
||||
ValidationError, IntegerField, SelectField)
|
||||
from wtforms.validators import DataRequired, Length
|
||||
|
||||
|
||||
@ -50,7 +50,8 @@ class EditCorpusFileForm(FlaskForm):
|
||||
|
||||
|
||||
class QueryForm(FlaskForm):
|
||||
query = StringField('CQP Query',
|
||||
expert_mode = BooleanField('Expert mode')
|
||||
query = StringField('Query',
|
||||
validators=[DataRequired(), Length(1, 1024)])
|
||||
hits_per_page = SelectField('Hits per page',
|
||||
choices=[('', 'Nr. of hits per page'),
|
||||
|
Reference in New Issue
Block a user