Commit c1f81c19c8a00285153322e17df840e799f918f8
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 | 7 | from PortGlosa import traduzir |
| 8 | 8 | from subprocess import check_output |
| 9 | 9 | from threading import Lock |
| 10 | +from time import sleep | |
| 10 | 11 | from logging.handlers import RotatingFileHandler |
| 11 | 12 | import os, argparse, thread, logging, sys |
| 12 | 13 | |
| 13 | 14 | MySQLdb=None |
| 14 | 15 | RUN_MODE=None |
| 15 | 16 | BUNDLES_PATH=None |
| 16 | -BUNDLES_LIST=None | |
| 17 | +BUNDLES_LIST={} | |
| 17 | 18 | conn=None |
| 18 | 19 | lock = Lock() |
| 19 | 20 | app=Flask(__name__, static_url_path="", static_folder="/var/www/") |
| ... | ... | @@ -86,7 +87,21 @@ def init_mode(args): |
| 86 | 87 | |
| 87 | 88 | def list_bundles(): |
| 88 | 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 | 106 | def check_database(): |
| 92 | 107 | cursor = conn.cursor() |
| ... | ... | @@ -241,16 +256,23 @@ def update_list_bundles(): |
| 241 | 256 | |
| 242 | 257 | @app.route("/<platform>/<sign>", methods=['GET']) |
| 243 | 258 | @check_run_mode |
| 244 | -def get_sign(platform, sign): | |
| 259 | +def get_sign(platform, sign, state=None): | |
| 245 | 260 | platform = platform.encode("UTF-8") |
| 246 | 261 | sign = sign.encode("UTF-8") |
| 247 | 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 | 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 | 268 | return send_from_directory(BUNDLES_PATH[platform], sign) |
| 252 | 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 | 276 | if __name__ == "__main__": |
| 255 | 277 | parser = argparse.ArgumentParser(description='Translation server and signs download for VLibras.') |
| 256 | 278 | parser.add_argument('--port', help='Port where the server will be available.', default=3000) | ... | ... |