Example #1
0
def execute(request):
    if "task_obj" not in request.keys():
        raise CommonException("-1", "缺少task_obj")
    task_obj_string = request["task_obj"]
    task_obj = byteify(json.loads(task_obj_string))
    execute_list = task_obj["execute_list"]
    execute_result_method = task_obj["result_method"]
    result = ""
    try:
        for execute_item in execute_list:
            execute_item_method = execute_item["method"]
            execute_item_sql = execute_item["sql"]
            execute_item_param = execute_item["param"]
            if execute_item_method == "execute":
                cursor.execute(execute_item_sql, tuple(execute_item_param))
            if execute_item_method == "executemany":
                cursor.executemany(execute_item_sql, execute_item_param)
            if execute_item_method == "executescript":
                cursor.executescript(execute_item_sql)
        connection.commit()
        if execute_result_method == "fetchall":
            result = cursor.fetchall()
        if execute_result_method == "rowcount":
            result = cursor.rowcount
    except Exception as e:
        connection.rollback()
        result = "error," + str(e.message)
    if isinstance(result, str) and result.startswith("error"):
        raise CommonException("-2", "数据库错误," + result)
    return result
Example #2
0
def walk_and_gen_path_info(target_folder):
    if not target_folder.endswith(os.path.sep):
        target_folder += os.path.sep
    data = {"dirs": [], "files": {}}
    for root, dirs, files in os.walk(target_folder):
        for dir_name in dirs:
            full_name = os.path.join(root, dir_name)
            if os.path.islink(full_name):
                continue
            if root == target_folder:
                relative_name = dir_name
            else:
                relative_name = os.path.join(root[len(target_folder):999999], dir_name)
            relative_name = relative_name.replace(os.path.sep, "/")
            data["dirs"] += [relative_name]
        for file_name in files:
            full_name = os.path.join(root, file_name)
            if os.path.islink(full_name):
                continue
            md5_sum = ""
            try:
                md5_sum = md5sum(full_name)
            except IOError as _:
                pass
            if root == target_folder:
                relative_name = file_name
            else:
                relative_name = os.path.join(root[len(target_folder):999999], file_name)
            relative_name = relative_name.replace(os.path.sep, "/")
            data["files"][relative_name] = md5_sum
    return byteify(data)
def execute_batch(execute_list, result_method):
    task_obj = {"execute_list": execute_list, "result_method": result_method}
    req = urllib2.Request(
        _url,
        urllib.urlencode(
            {"task_obj": json.dumps(task_obj, ensure_ascii=False)}))
    response = urllib2.urlopen(req)
    content = response.read()
    content_obj = byteify(json.loads(content))
    return content_obj["result"]
Example #4
0
def execute(request):
    global max_id
    global id_path_map
    if "task_obj" not in request.keys():
        raise CommonException("-1", "缺少task_obj")
    task_obj_string = request["task_obj"]
    task_obj = byteify(json.loads(task_obj_string))

    method = task_obj["method"]
    param = task_obj["param"]
    if method == "getStartId":
        id_num = param["idNum"]
        old_max_id = max_id
        max_id += id_num
        return old_max_id
    if method == "putIdPathMap":
        print(param)
        for id_string in param:
            id_path_map[id_string] = param[id_string]
        return "ok"
    if method == "getPath":
        id_string = param["id"]
        return id_path_map[str(id_string)]
    if method == "reloadDir":
        id_path_map = {}
        max_id = 0
        return "ok"
    if method == "getConfig":
        key = param["key"]
        default_value = None
        if "default" in param:
            default_value = param["default"]
        if key not in config:
            return default_value
        return config[key]
    if method == "updateConfig":
        key = param["key"]
        value = param["value"]
        config[key] = value
        return "ok"
    if method == "saveConfig":
        with open("./config.json", 'w+') as f:
            config_content = json.dumps(config,
                                        ensure_ascii=False,
                                        indent=True)
            f.write(config_content)
        return "ok"
Example #5
0
def app(environ, start_response):
    request_method = environ["REQUEST_METHOD"]  # GET
    path_info = environ["PATH_INFO"]  # /hi/name/index.action
    query_string = environ["QUERY_STRING"]  # ?后面的东西
    remote_address = environ["REMOTE_ADDR"]  # 访问者ip
    print "request_method:" + request_method
    print "path_info:" + path_info
    print "remote_address:" + remote_address

    if request_method == "GET":
        request = urlparse.parse_qs(query_string)
    else:
        try:
            request_body_size = int(environ.get('CONTENT_LENGTH', 0))
        except (ValueError):
            request_body_size = 0
        request_body = environ['wsgi.input'].read(request_body_size)
        request = urlparse.parse_qs(request_body)
    for (d, x) in request.items():
        if isinstance(x, list) and len(x) == 1:
            request[d] = x[0]
    for (d, x) in request.items():
        print "key:" + d + ",value:" + str(x)

    if path_info == "/":
        response_string = ""
        response_code = "200 OK"
        response_header = [
            ('Content-type', 'text/html'),
            ('Access-Control-Allow-Origin', '*'),
            ('Access-Control-Allow-Credentials', 'true'),
            ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'),
            ('Access-Control-Allow-Headers',
             'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'
             )
        ]
        try:
            fetch_result = "ok"
            response_data = {
                "code": "0",
                "message": "success",
                "result": fetch_result
            }
            response_string = json.dumps(response_data, ensure_ascii=False)
        except CommonException as ce:
            response_string = '{"code":"' + ce.code + '","message":"' + ce.message + '"}'
        except ValueError:
            import traceback
            traceback.print_exc()
            response_string = '{"code":"-1","message":"system busy"}'
    elif path_info == "/execute":
        response_string = ""
        response_code = "200 OK"
        response_header = [
            ('Content-type', 'text/html'),
            ('Access-Control-Allow-Origin', '*'),
            ('Access-Control-Allow-Credentials', 'true'),
            ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'),
            ('Access-Control-Allow-Headers',
             'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'
             )
        ]
        try:
            result = execute(request)
            response_data = {
                "code": "0",
                "message": "success",
                "result": result
            }
            response_string = json.dumps(response_data, ensure_ascii=False)
        except CommonException as ce:
            response_string = '{"code":"' + ce.code + '","message":"' + ce.message + '"}'
        except ValueError:
            import traceback
            traceback.print_exc()
            response_string = '{"code":"-1","message":"system busy"}'
    else:
        response_string = "404 NOT FOUND"
        response_code = "404 NOT FOUND"
        response_header = [
            ('Content-type', 'text/html'),
            ('Access-Control-Allow-Origin', '*'),
            ('Access-Control-Allow-Credentials', 'true'),
            ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'),
            ('Access-Control-Allow-Headers',
             'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'
             )
        ]
    start_response(response_code, response_header)
    return [byteify(response_string)]