Updated so json doesn't get sorted anymore, bugfixes, added new parameter to two endpoints, docker-compose jobs saving location update, json & swagger update

This commit is contained in:
Kikimanox
2022-11-03 15:58:11 +01:00
parent fe6120fb18
commit 7b7214905a
10 changed files with 137 additions and 88 deletions
+4
View File
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
+1
View File
@@ -7,6 +7,7 @@ from swagger_server import encoder
def main():
app = connexion.App(__name__, specification_dir='./swagger/')
app.app.json_encoder = encoder.JSONEncoder
app.app.config['JSON_SORT_KEYS'] = False
app.add_api('swagger.yaml', arguments={'title': 'OpenAPI definition'}, pythonic_params=True)
app.run(port=8080)
@@ -243,7 +243,9 @@ def execute_classla_job(job: Job):
classla_sem.acquire()
job.started_on = datetime.datetime.utcnow()
job.save()
conllu, _ = cl_utils.raw_text_to_conllu(job.job_input)
conllu, status = cl_utils.raw_text_to_conllu(job.job_input)
if status != 200:
conllu = f'ERROR - {conllu}'
job.job_output = conllu
job.finished_on = datetime.datetime.utcnow()
job.save()
@@ -268,7 +270,7 @@ def execute_ateapi_job(job: Job):
try:
ret_json = _res.response[0].decode('utf-8')
except:
ret_json = "Unknown exception."
ret_json = "ERROR - Unknown exception."
if _res.status_code != 200:
ret_json = f'ERROR - {ret_json}'
@@ -287,8 +289,8 @@ def execute_izluscipoiskanju_job(job: Job):
job.started_on = datetime.datetime.utcnow()
job.save()
info = json.loads(job.job_input)
terKand = db_utils.vrni_oss_terminoloske_kandidate(info['leta'], info['vrste'], info['kljucnebesede'],
info['udk'])
terKand = db_utils.vrni_oss_terminoloske_kandidate(info['leta'], info['vrste'], info['kljucne_besede'],
info['prepovedane_besede'], info['udk'])
job.job_output = terKand
job.finished_on = datetime.datetime.utcnow()
job.save()
+35 -29
View File
@@ -8,7 +8,7 @@ from swagger_server import util
from flask import send_file
def get_conllus(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501
def get_conllus(leta=None, vrste=None, kljucne_besede=None, udk=None): # noqa: E501
""""Vrne seznam CoNNL-U-jev glede na iskalne pogoje
# noqa: E501
@@ -17,22 +17,22 @@ def get_conllus(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E
:type leta: List[int]
:param vrste:
:type vrste: List[int]
:param kljucnebesede:
:type kljucnebesede: List[str]
:param kljucne_besede:
:type kljucne_besede: List[str]
:param udk:
:type udk: List[str]
:rtype: List[str]
"""
if not kljucnebesede:
if not kljucne_besede:
return "Manjkajo kljucne besede", 400
files = db_utils.get_files_by_udc(kljucnebesede)
files = db_utils.get_files_by_udc(kljucne_besede)
if not files:
return 'Nobena datoteka ne ustreza iskalnemu pogoju', 404
return ' '.join(files), 200
def get_extracted_words(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501
def get_extracted_words(leta=None, vrste=None, kljucne_besede=None, prepovedane_besede=None, udk=None): # noqa: E501
"""Vrne terminloške kandidate glede na ... (sync)
# noqa: E501
@@ -41,18 +41,21 @@ def get_extracted_words(leta=None, vrste=None, kljucnebesede=None, udk=None): #
:type leta: List[int]
:param vrste:
:type vrste: List[int]
:param kljucnebesede:
:type kljucnebesede: List[str]
:param kljucne_besede:
:type kljucne_besede: List[str]
:param prepovedane_besede:
:type prepovedane_besede: List[str]
:param udk:
:type udk: List[str]
:rtype: List[TerminoloskiKandidat]
"""
terKand = db_utils.vrni_oss_terminoloske_kandidate(leta, vrste, kljucnebesede, udk)
terKand = db_utils.vrni_oss_terminoloske_kandidate(leta, vrste, kljucne_besede, prepovedane_besede, udk)
return terKand, 200
def get_extracted_words_async(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501
def get_extracted_words_async(leta=None, vrste=None, kljucne_besede=None, prepovedane_besede=None,
udk=None): # noqa: E501
"""Vrne terminloške kandidate glede na ... (async)
# noqa: E501
@@ -61,22 +64,25 @@ def get_extracted_words_async(leta=None, vrste=None, kljucnebesede=None, udk=Non
:type leta: List[int]
:param vrste:
:type vrste: List[int]
:param kljucnebesede:
:type kljucnebesede: List[str]
:param kljucne_besede:
:type kljucne_besede: List[str]
:param prepovedane_besede:
:type prepovedane_besede: List[str]
:param udk:
:type udk: List[str]
:rtype: str
"""
job, is_old_job = JobManager.create_job(5, json.dumps(
{'leta': leta, 'vrste': vrste, 'kljucnebesede': kljucnebesede, 'udk': udk}))
{'leta': leta, 'vrste': vrste, 'kljucne_besede': kljucne_besede, 'prepovedane_besede': prepovedane_besede,
'udk': udk}))
if job is None:
return "Something went wrong", 500
ret = {'check_job_url': f'{connexion.request.url_root}/job/{job.id}'}
return ret, 200
def get_files(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501
def get_files(leta=None, vrste=None, kljucne_besede=None, udk=None): # noqa: E501
"""Vrne seznam binarnih zapisov v originalnem formatu glede na iskalne pogoje
# noqa: E501
@@ -85,22 +91,22 @@ def get_files(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E50
:type leta: List[int]
:param vrste:
:type vrste: List[int]
:param kljucnebesede:
:type kljucnebesede: List[str]
:param kljucne_besede:
:type kljucne_besede: List[str]
:param udk:
:type udk: List[str]
:rtype: str
"""
if not kljucnebesede:
if not kljucne_besede:
return "Manjkajo kljucne besede", 400
files = db_utils.get_files_by_udc(kljucnebesede)
files = db_utils.get_files_by_udc(kljucne_besede)
if not files:
return 'Nobena datoteka ne ustreza iskalnemu pogoju', 404
return ' '.join(files), 200
def get_number_texts(leta=None, vrste=None, kljucnebesede=None, udk=None): # noqa: E501
def get_number_texts(leta=None, vrste=None, kljucne_besede=None, udk=None): # noqa: E501
"""Vrne število besedil glede na iskalne pogoje
# noqa: E501
@@ -109,8 +115,8 @@ def get_number_texts(leta=None, vrste=None, kljucnebesede=None, udk=None): # no
:type leta: List[int]
:param vrste:
:type vrste: List[int]
:param kljucnebesede:
:type kljucnebesede: List[str]
:param kljucne_besede:
:type kljucne_besede: List[str]
:param udk:
:type udk: List[str]
@@ -119,29 +125,29 @@ def get_number_texts(leta=None, vrste=None, kljucnebesede=None, udk=None): # no
# if not kljucnebesede:
# return "Manjkajo kljucne besede", 400
files = db_utils.vrni_oss_dokumente(leta, vrste, kljucnebesede, udk)
files = db_utils.vrni_oss_dokumente(leta, vrste, kljucne_besede, udk)
return len(files), 200
def get_texts(leta, vrste, kljucnebesede, cerifpodrocja): # noqa: E501
def get_texts(leta=None, vrste=None, kljucne_besede=None, udk=None): # noqa: E501
"""Vrne seznam besedil glede na iskalne pogoje
# noqa: E501
:param leta:
:param leta:
:type leta: List[int]
:param vrste:
:param vrste:
:type vrste: List[int]
:param kljucnebesede:
:type kljucnebesede: List[str]
:param kljucne_besede:
:type kljucne_besede: List[str]
:param udk:
:type udk: List[str]
:rtype: List[str]
"""
if not kljucnebesede:
if not kljucne_besede:
return "Manjkajo kljucne besede", 400
files = db_utils.get_files_by_udc(kljucnebesede)
files = db_utils.get_files_by_udc(kljucne_besede)
if not files:
return 'Nobena datoteka ne ustreza iskalnemu pogoju', 404
return ' '.join(files), 200
+8 -16
View File
@@ -7,22 +7,14 @@ import os
from swagger_server.util import get_random_filename
from werkzeug.utils import secure_filename
LOCAL_PATH = "requets_db/dbs"
SERVER_PATH = "swagger_server/requets_db/dbs"
if not os.path.exists(LOCAL_PATH):
if os.path.exists('requets_db'):
os.makedirs(LOCAL_PATH, exist_ok=True)
elif os.path.exists('swagger_server/requets_db'):
os.makedirs(SERVER_PATH, exist_ok=True)
DB = f'{LOCAL_PATH}/jobs.db'
if not os.path.exists(LOCAL_PATH):
DB = f'{SERVER_PATH}/jobs.db'
db = SqliteDatabase(DB, pragmas={
# 'journal_mode': 'wal',
'cache_size': -1 * 128 * 1024, # 128MB
'foreign_keys': 1
DB_Path = 'DB/jobs.db'
if not os.path.exists('DB'):
os.makedirs('DB', exist_ok=True)
db = SqliteDatabase(DB_Path, pragmas={
'journal_mode': 'wal',
'cache_size': -1 * 256 * 1024, # 256MB
'foreign_keys': 1,
'charset': 'utf8'
})
+43 -25
View File
@@ -311,7 +311,7 @@ paths:
items:
type: integer
format: int64
- name: kljucnebesede
- name: kljucneBesede
in: query
required: false
style: form
@@ -366,7 +366,16 @@ paths:
items:
type: integer
format: int64
- name: kljucnebesede
- name: kljucneBesede
in: query
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: prepovedaneBesede
in: query
required: false
style: form
@@ -422,7 +431,16 @@ paths:
items:
type: integer
format: int64
- name: kljucnebesede
- name: kljucneBesede
in: query
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: prepovedaneBesede
in: query
required: false
style: form
@@ -459,7 +477,7 @@ paths:
parameters:
- name: leta
in: query
required: true
required: false
style: form
explode: true
schema:
@@ -469,25 +487,7 @@ paths:
format: int64
- name: vrste
in: query
required: true
style: form
explode: true
schema:
type: array
items:
type: string
- name: kljucnebesede
in: query
required: true
style: form
explode: true
schema:
type: array
items:
type: string
- name: cerifpodrocja
in: query
required: true
required: false
style: form
explode: true
schema:
@@ -495,6 +495,24 @@ paths:
items:
type: integer
format: int64
- name: kljucneBesede
in: query
required: false
style: form
explode: true
schema:
type: array
items:
type: string
- name: udk
in: query
required: false
style: form
explode: true
schema:
type: array
items:
type: string
responses:
"200":
description: OK
@@ -563,7 +581,7 @@ paths:
items:
type: integer
format: int64
- name: kljucnebesede
- name: kljucneBesede
in: query
required: false
style: form
@@ -667,7 +685,7 @@ paths:
items:
type: integer
format: int64
- name: kljucnebesede
- name: kljucneBesede
in: query
required: false
style: form
+3
View File
@@ -10,8 +10,11 @@ nlp_loaded = True
sent_extractor = re.compile(r"# sent_id = \d+\.\d+(.*?)\n\n", re.MULTILINE | re.DOTALL)
def raw_text_to_conllu(text):
try:
if text == '' or text is None:
raise Exception("Text can not be empty (when trying to make conllu for it)")
docall = nlpSlo(text)
docallconllu = docall.to_conll()
+8 -8
View File
@@ -33,7 +33,7 @@ def get_files_by_udc(udc):
return ret
def vrni_oss_dokumente(leta, vrste, kljucnebesede, udk):
def vrni_oss_dokumente(leta, vrste, kljucne_besede, udk):
ret = []
try:
@@ -66,12 +66,12 @@ def vrni_oss_dokumente(leta, vrste, kljucnebesede, udk):
where=where + " tipologija IN (%s) " % (where_in_vrste)
params=params+vrste
if (kljucnebesede):
if (kljucne_besede):
if (where):
where=where+ " AND "
where_in_kb = ','.join(['%s'] * len(kljucnebesede))
where_in_kb = ','.join(['%s'] * len(kljucne_besede))
where=where + " kljucnabeseda IN (%s) " % (where_in_kb)
params=params+kljucnebesede
params=params+kljucne_besede
if(where):
sql=sql+" where " + where + ";"
@@ -91,7 +91,7 @@ def vrni_oss_dokumente(leta, vrste, kljucnebesede, udk):
return ret
def vrni_oss_terminoloske_kandidate(leta, vrste, kljucnebesede, udk):
def vrni_oss_terminoloske_kandidate(leta, vrste, kljucne_besede, prepovedane_besede, udk):
ret = []
try:
@@ -124,12 +124,12 @@ def vrni_oss_terminoloske_kandidate(leta, vrste, kljucnebesede, udk):
where=where + " tipologija IN (%s) " % (where_in_vrste)
params=params+vrste
if (kljucnebesede):
if (kljucne_besede):
if (where):
where=where+ " AND "
where_in_kb = ','.join(['%s'] * len(kljucnebesede))
where_in_kb = ','.join(['%s'] * len(kljucne_besede))
where=where + " kljucnabeseda IN (%s) " % (where_in_kb)
params=params+kljucnebesede
params=params+kljucne_besede
if(where):
sql=sql+" where " + where