From ae6e25283078a3b5f04d6dfe3a7dc0b17020a9e9 Mon Sep 17 00:00:00 2001 From: Stephan Porada Date: Mon, 18 Nov 2019 14:24:31 +0100 Subject: [PATCH] Temp event query handling --- app/corpora/events.py | 46 ++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/app/corpora/events.py b/app/corpora/events.py index a597f8e6..f2e9f141 100644 --- a/app/corpora/events.py +++ b/app/corpora/events.py @@ -3,8 +3,7 @@ from app.events import connected_sessions from app.models import Corpus from flask import current_app, request from flask_login import current_user, login_required -from .CQiWrapper.CQiClient import CQiClient -from .CQiWrapper.CQi import CONST_FIELD_MATCH, CONST_FIELD_MATCHEND +from .CQiWrapper.CQiWrapper import CQiWrapper ''' @@ -41,32 +40,22 @@ def init_corpus_analysis(corpus_id): def recv_query(message): logger.warning(message) analysis_client = analysis_clients[request.sid] + analysis_client.connect() """ Prepare and execute a query """ - corpus = 'CORPUS' + corpus_name = 'CORPUS' query = message['query'] - query_subcorpus = 'Results' - analysis_client.cqp_query(corpus, query_subcorpus, query) - """ Evaluate query results """ - match_corpus = '{}:{}'.format(corpus, query_subcorpus) - match_num = analysis_client.cqp_subcorpus_size(match_corpus) - match_num = min(int(message['hits_per_page']) - 1, match_num) - if match_num == 0: - print('No matches found.') - exit() - if not analysis_client.cqp_subcorpus_has_field(match_corpus, CONST_FIELD_MATCH): - print('Error.') - exit() - if not analysis_client.cqp_subcorpus_has_field(match_corpus, CONST_FIELD_MATCHEND): - print('Error') - exit() - match_boundaries = zip(analysis_client.cqp_dump_subcorpus(match_corpus, CONST_FIELD_MATCH, 0, match_num - 1), - analysis_client.cqp_dump_subcorpus(match_corpus, CONST_FIELD_MATCHEND, 0, match_num - 1)) - matches = [] - for match_start, match_end in match_boundaries: - tokens = analysis_client.cl_cpos2str('{}.word'.format(corpus), range(match_start, match_end + 1)) - pos = analysis_client.cl_cpos2str('{}.pos'.format(corpus), range(match_start, match_end + 1)) - matches.append({'tokens': tokens, 'pos': pos}) - logger.warning(matches) + result_subcorpus_name = 'Results' + analysis_client.set_corpus_name(corpus_name) + logger.warning('Corpus name has been set.') + analysis_client.create_attribute_strings() + logger.warning('Attribute Strings have been created.') + analysis_client.query_subcorpus(result_subcorpus_name, query) + logger.warning('Subcorpus from query has been created.') + subcorpora = analysis_client.show_subcorpora() + logger.warning('Known subcorpora: {}'.format(subcorpora)) + matches = analysis_client.show_results(result_start_count=1, + result_max_count=3) + logger.warning('Match data: {}'.format(matches)) socketio.emit('query_results', matches, room=request.sid) @@ -76,8 +65,7 @@ def observe_corpus_analysis_connection(app, corpus_id, session_id): while corpus.status != 'analysing': db.session.refresh(corpus) socketio.sleep(3) - analysis_client = CQiClient(host='{}_analysis_container{}'.format(corpus.creator.username, corpus.id), port=4877) - analysis_client.ctrl_connect('opaque', 'opaque') + analysis_client = CQiWrapper(host='{}_analysis_container{}'.format(corpus.creator.username, corpus.id), port=4877, password='opaque', username='opaque') analysis_clients[session_id] = analysis_client socketio.emit('init_corpus_analysis', 'Ready', room=session_id) while session_id in connected_sessions: @@ -91,7 +79,7 @@ def observe_corpus_analysis_connection(app, corpus_id, session_id): socketio.sleep(3) ''' socketio.sleep(3) - analysis_client.ctrl_bye() + analysis_client.disconnect() analysis_clients.pop(session_id, None) analysis_sessions[str(corpus_id)].remove(session_id) if not analysis_sessions[str(corpus_id)]: