Commit c1f81c19c8a00285153322e17df840e799f918f8

Authored by Erickson Silva
1 parent 5977687e
Exists in devel

[TranslationServer] Adiciona rota para regionalismo

Showing 1 changed file with 27 additions and 5 deletions   Show diff stats
src/TranslationServer.py
@@ -7,13 +7,14 @@ from functools import wraps @@ -7,13 +7,14 @@ from functools import wraps
7 from PortGlosa import traduzir 7 from PortGlosa import traduzir
8 from subprocess import check_output 8 from subprocess import check_output
9 from threading import Lock 9 from threading import Lock
  10 +from time import sleep
10 from logging.handlers import RotatingFileHandler 11 from logging.handlers import RotatingFileHandler
11 import os, argparse, thread, logging, sys 12 import os, argparse, thread, logging, sys
12 13
13 MySQLdb=None 14 MySQLdb=None
14 RUN_MODE=None 15 RUN_MODE=None
15 BUNDLES_PATH=None 16 BUNDLES_PATH=None
16 -BUNDLES_LIST=None 17 +BUNDLES_LIST={}
17 conn=None 18 conn=None
18 lock = Lock() 19 lock = Lock()
19 app=Flask(__name__, static_url_path="", static_folder="/var/www/") 20 app=Flask(__name__, static_url_path="", static_folder="/var/www/")
@@ -86,7 +87,21 @@ def init_mode(args): @@ -86,7 +87,21 @@ def init_mode(args):
86 87
87 def list_bundles(): 88 def list_bundles():
88 global BUNDLES_LIST 89 global BUNDLES_LIST
89 - BUNDLES_LIST = set(os.listdir(BUNDLES_PATH["STANDALONE"])) 90 + states = ["AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"]
  91 + BUNDLES_LIST["DEFAULT"] = set(list_files(BUNDLES_PATH["STANDALONE"]))
  92 + for state in states:
  93 + try:
  94 + BUNDLES_LIST[state] = set(os.listdir(os.path.join(BUNDLES_PATH["STANDALONE"], state)))
  95 + except OSError:
  96 + pass
  97 +
  98 +def list_files(path):
  99 + files = []
  100 + for fname in os.listdir(path):
  101 + path_mount = os.path.join(path, fname)
  102 + if not os.path.isdir(path_mount):
  103 + files.append(fname)
  104 + return files
90 105
91 def check_database(): 106 def check_database():
92 cursor = conn.cursor() 107 cursor = conn.cursor()
@@ -241,16 +256,23 @@ def update_list_bundles(): @@ -241,16 +256,23 @@ def update_list_bundles():
241 256
242 @app.route("/<platform>/<sign>", methods=['GET']) 257 @app.route("/<platform>/<sign>", methods=['GET'])
243 @check_run_mode 258 @check_run_mode
244 -def get_sign(platform, sign): 259 +def get_sign(platform, sign, state=None):
245 platform = platform.encode("UTF-8") 260 platform = platform.encode("UTF-8")
246 sign = sign.encode("UTF-8") 261 sign = sign.encode("UTF-8")
247 if " " in sign or platform not in BUNDLES_PATH: abort(400) 262 if " " in sign or platform not in BUNDLES_PATH: abort(400)
248 - file_exists = sign in BUNDLES_LIST 263 + file_exists = sign in BUNDLES_LIST["DEFAULT"] if state == None else sign in BUNDLES_LIST[state]
249 thread.start_new_thread(update_database_statistic, (sign, platform, file_exists)) 264 thread.start_new_thread(update_database_statistic, (sign, platform, file_exists))
250 - if file_exists: 265 + if file_exists and state is not None:
  266 + return send_from_directory(os.path.join(BUNDLES_PATH[platform], state), sign)
  267 + elif file_exists or (sign in BUNDLES_LIST["DEFAULT"] and state is not None):
251 return send_from_directory(BUNDLES_PATH[platform], sign) 268 return send_from_directory(BUNDLES_PATH[platform], sign)
252 abort(404) 269 abort(404)
253 270
  271 +@app.route("/<platform>/<state>/<sign>", methods=['GET'])
  272 +@check_run_mode
  273 +def get_sign_localism(platform, state, sign):
  274 + return get_sign(platform, sign, state)
  275 +
254 if __name__ == "__main__": 276 if __name__ == "__main__":
255 parser = argparse.ArgumentParser(description='Translation server and signs download for VLibras.') 277 parser = argparse.ArgumentParser(description='Translation server and signs download for VLibras.')
256 parser.add_argument('--port', help='Port where the server will be available.', default=3000) 278 parser.add_argument('--port', help='Port where the server will be available.', default=3000)