mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-15 02:20:40 +00:00
Improve cqi extension structure
This commit is contained in:
@ -8,17 +8,11 @@ from typing import Callable, Dict, List
|
||||
from app import socketio
|
||||
from app.decorators import socketio_login_required
|
||||
from . import NAMESPACE as ns
|
||||
from .extensions import (
|
||||
corpus_update_db,
|
||||
corpus_static_data,
|
||||
corpus_paginate_corpus,
|
||||
cqp_paginate_subcorpus,
|
||||
cqp_partial_export_subcorpus,
|
||||
cqp_export_subcorpus,
|
||||
)
|
||||
from .extensions import CQI_EXTENSION_FUNCTION_NAMES
|
||||
from . import extensions as extensions_module
|
||||
|
||||
|
||||
CQI_API_FUNCTIONS: List[str] = [
|
||||
CQI_FUNCTION_NAMES: List[str] = [
|
||||
'ask_feature_cl_2_3',
|
||||
'ask_feature_cqi_1_0',
|
||||
'ask_feature_cqp_2_3',
|
||||
@ -64,14 +58,6 @@ CQI_API_FUNCTIONS: List[str] = [
|
||||
'ctrl_ping',
|
||||
'ctrl_user_abort'
|
||||
]
|
||||
CQI_NOPAQUE_FUNCTIONS: Dict[str, Callable] = {
|
||||
'nopaque_corpus_update_db': corpus_update_db,
|
||||
'nopaque_corpus_static_data': corpus_static_data,
|
||||
'nopaque_corpus_paginate_corpus': corpus_paginate_corpus,
|
||||
'nopaque_cqp_paginate_subcorpus': cqp_paginate_subcorpus,
|
||||
'nopaque_cqp_partial_export_subcorpus': cqp_partial_export_subcorpus,
|
||||
'nopaque_cqp_export_subcorpus': cqp_export_subcorpus,
|
||||
}
|
||||
|
||||
|
||||
@socketio.on('cqi', namespace=ns)
|
||||
@ -88,11 +74,11 @@ def cqi_over_sio(fn_data):
|
||||
cqi_client_lock: Lock = session['cqi_over_sio']['cqi_client_lock']
|
||||
except KeyError:
|
||||
return {'code': 424, 'msg': 'Failed Dependency'}
|
||||
if fn_name in CQI_API_FUNCTIONS:
|
||||
if fn_name in CQI_FUNCTION_NAMES:
|
||||
fn: Callable = getattr(cqi_client.api, fn_name)
|
||||
elif fn_name in CQI_NOPAQUE_FUNCTIONS:
|
||||
elif fn_name in CQI_EXTENSION_FUNCTION_NAMES:
|
||||
fn_args['cqi_client'] = cqi_client
|
||||
fn: Callable = CQI_NOPAQUE_FUNCTIONS[fn_name]
|
||||
fn: Callable = getattr(extensions_module, fn_name)
|
||||
else:
|
||||
return {'code': 400, 'msg': 'Bad Request'}
|
||||
for param in signature(fn).parameters.values():
|
||||
|
@ -1,17 +1,28 @@
|
||||
from collections import Counter
|
||||
from cqi import CQiClient
|
||||
from cqi.models.corpora import Corpus
|
||||
from cqi.status import StatusOk
|
||||
from flask import session
|
||||
from typing import Dict
|
||||
from typing import Dict, List
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
from app import db
|
||||
from app.models import Corpus
|
||||
from .utils import lookups_by_cpos, export_subcorpus, partial_export_subcorpus
|
||||
from .utils import lookups_by_cpos, partial_export_subcorpus, export_subcorpus
|
||||
|
||||
|
||||
def corpus_update_db(cqi_client: CQiClient, corpus: str):
|
||||
CQI_EXTENSION_FUNCTION_NAMES: List[str] = [
|
||||
'ext_corpus_update_db',
|
||||
'ext_corpus_static_data',
|
||||
'ext_corpus_paginate_corpus',
|
||||
'ext_cqp_paginate_subcorpus',
|
||||
'ext_cqp_partial_export_subcorpus',
|
||||
'ext_cqp_export_subcorpus',
|
||||
]
|
||||
|
||||
|
||||
def ext_corpus_update_db(cqi_client: CQiClient, corpus: str):
|
||||
db_corpus = Corpus.query.get(session['cqi_over_sio']['corpus_id'])
|
||||
cqi_corpus = cqi_client.corpora.get(corpus)
|
||||
db_corpus.num_tokens = cqi_corpus.size
|
||||
@ -19,7 +30,7 @@ def corpus_update_db(cqi_client: CQiClient, corpus: str):
|
||||
return StatusOk()
|
||||
|
||||
|
||||
def corpus_static_data(cqi_client: CQiClient, corpus: str) -> Dict:
|
||||
def ext_corpus_static_data(cqi_client: CQiClient, corpus: str) -> Dict:
|
||||
db_corpus = Corpus.query.get(session['cqi_over_sio']['corpus_id'])
|
||||
static_corpus_data_file = os.path.join(db_corpus.path, 'cwb', 'static.json')
|
||||
if os.path.exists(static_corpus_data_file):
|
||||
@ -125,7 +136,7 @@ def corpus_static_data(cqi_client: CQiClient, corpus: str) -> Dict:
|
||||
return static_corpus_data
|
||||
|
||||
|
||||
def corpus_paginate_corpus(
|
||||
def ext_corpus_paginate_corpus(
|
||||
cqi_client: CQiClient,
|
||||
corpus: str,
|
||||
page: int = 1,
|
||||
@ -170,7 +181,7 @@ def corpus_paginate_corpus(
|
||||
return payload
|
||||
|
||||
|
||||
def cqp_paginate_subcorpus(
|
||||
def ext_cqp_paginate_subcorpus(
|
||||
cqi_client: CQiClient,
|
||||
subcorpus: str,
|
||||
context: int = 50,
|
||||
@ -218,7 +229,7 @@ def cqp_paginate_subcorpus(
|
||||
return payload
|
||||
|
||||
|
||||
def cqp_partial_export_subcorpus(
|
||||
def ext_cqp_partial_export_subcorpus(
|
||||
cqi_client: CQiClient,
|
||||
subcorpus: str,
|
||||
match_id_list: list,
|
||||
@ -231,7 +242,7 @@ def cqp_partial_export_subcorpus(
|
||||
return cqi_subcorpus_partial_export
|
||||
|
||||
|
||||
def cqp_export_subcorpus(
|
||||
def ext_cqp_export_subcorpus(
|
||||
cqi_client: CQiClient,
|
||||
subcorpus: str,
|
||||
context: int = 50
|
@ -1,6 +1,7 @@
|
||||
from typing import Dict, List
|
||||
from cqi.models.corpora import Corpus
|
||||
from cqi.models.subcorpora import Subcorpus
|
||||
from typing import Dict, List
|
||||
from app.models import Corpus
|
||||
|
||||
|
||||
def lookups_by_cpos(corpus: Corpus, cpos_list: List[int]) -> Dict:
|
Reference in New Issue
Block a user