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:
@@ -9,6 +9,7 @@ services:
|
||||
volumes: # when pushing to server, remove the first dot here in front of /mnt
|
||||
- /mnt/ssd/ds_ftp/classla_OS2022:/usr/src/app/classla_OS2022
|
||||
- ../classla/classla_resources:/root/classla_resources
|
||||
- ../jobs_database_rsdo5:/usr/src/app/DB
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
- MDB_DATABASE=conllus_150k
|
||||
|
||||
+28
-6
@@ -546,7 +546,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "kljucnebesede",
|
||||
"name": "kljucneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
@@ -616,7 +616,18 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "kljucnebesede",
|
||||
"name": "kljucneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "prepovedaneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
@@ -688,7 +699,18 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "kljucnebesede",
|
||||
"name": "kljucneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "prepovedaneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
@@ -757,7 +779,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "kljucnebesede",
|
||||
"name": "kljucneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
@@ -869,7 +891,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "kljucnebesede",
|
||||
"name": "kljucneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
@@ -1004,7 +1026,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "kljucnebesede",
|
||||
"name": "kljucneBesede",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
})
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user