From c1f81c19c8a00285153322e17df840e799f918f8 Mon Sep 17 00:00:00 2001 From: Erickson Silva Date: Mon, 3 Oct 2016 21:31:04 -0300 Subject: [PATCH] [TranslationServer] Adiciona rota para regionalismo --- src/TranslationServer.py | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/TranslationServer.py b/src/TranslationServer.py index 18e9d40..8261528 100644 --- a/src/TranslationServer.py +++ b/src/TranslationServer.py @@ -7,13 +7,14 @@ from functools import wraps from PortGlosa import traduzir from subprocess import check_output from threading import Lock +from time import sleep from logging.handlers import RotatingFileHandler import os, argparse, thread, logging, sys MySQLdb=None RUN_MODE=None BUNDLES_PATH=None -BUNDLES_LIST=None +BUNDLES_LIST={} conn=None lock = Lock() app=Flask(__name__, static_url_path="", static_folder="/var/www/") @@ -86,7 +87,21 @@ def init_mode(args): def list_bundles(): global BUNDLES_LIST - BUNDLES_LIST = set(os.listdir(BUNDLES_PATH["STANDALONE"])) + 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"] + BUNDLES_LIST["DEFAULT"] = set(list_files(BUNDLES_PATH["STANDALONE"])) + for state in states: + try: + BUNDLES_LIST[state] = set(os.listdir(os.path.join(BUNDLES_PATH["STANDALONE"], state))) + except OSError: + pass + +def list_files(path): + files = [] + for fname in os.listdir(path): + path_mount = os.path.join(path, fname) + if not os.path.isdir(path_mount): + files.append(fname) + return files def check_database(): cursor = conn.cursor() @@ -241,16 +256,23 @@ def update_list_bundles(): @app.route("//", methods=['GET']) @check_run_mode -def get_sign(platform, sign): +def get_sign(platform, sign, state=None): platform = platform.encode("UTF-8") sign = sign.encode("UTF-8") if " " in sign or platform not in BUNDLES_PATH: abort(400) - file_exists = sign in BUNDLES_LIST + file_exists = sign in BUNDLES_LIST["DEFAULT"] if state == None else sign in BUNDLES_LIST[state] thread.start_new_thread(update_database_statistic, (sign, platform, file_exists)) - if file_exists: + if file_exists and state is not None: + return send_from_directory(os.path.join(BUNDLES_PATH[platform], state), sign) + elif file_exists or (sign in BUNDLES_LIST["DEFAULT"] and state is not None): return send_from_directory(BUNDLES_PATH[platform], sign) abort(404) +@app.route("///", methods=['GET']) +@check_run_mode +def get_sign_localism(platform, state, sign): + return get_sign(platform, sign, state) + if __name__ == "__main__": parser = argparse.ArgumentParser(description='Translation server and signs download for VLibras.') parser.add_argument('--port', help='Port where the server will be available.', default=3000) -- libgit2 0.21.2