Esempio n. 1
0
def list_info(appname, modelName):
    '''
        list api for show rule list.
        Request URL:  /<appname>/rule/v1/<modelname>/list
        Http Method:  GET
        Parameters : index, limit
        Return :
        {
            "status":0
            "data":{
                "items":[
                    {
                        "id": 1,
                        "title":"海豚英文版",
                        "first_created": "2015-02-05 21:37:38",
                        "last_modified": "2015-02-05 21:37:38"
                    },
                    {
                        "id": 2,
                        "title":"海豚英文版1",
                        "first_created": "2015-02-05 21:37:38",
                        "last_modified": "2015-02-05 21:37:38"
                    }
                ]
            }
        }
     '''
    MODELNAME = get_model_cls(modelName)
    index = int(request.args.get('index', 1)) - 1
    limit = int(request.args.get('limit', 20))
    cond = get_list_cond(appname, request, MODELNAME)
    sort = [("_id", -1)]
    return info_list(appname, MODELNAME, cond, index, limit, sort)
Esempio n. 2
0
def mod_info(appname, modelName):
    '''
        this api is used to modify one rule
        Request URL:  /appname/rule/rule/update
        HTTP Method:POST
        Parameters:
        {
           "id": 1,
           "title": "xxxx"
        }
        Return :
        {
            "status":0
            "data":{
                "id": 1,
                "title":"海豚英文版"
            }
        }
    '''
    # check post data
    MODELNAME = get_model_cls(modelName)
    required_list = list(MODELNAME.params) + ["id&need&int", ]
    data = get_valid_params(request, required_list)
    if isinstance(data, Response):
        return data
    return info_mod(appname, MODELNAME, data)
Esempio n. 3
0
def info_del(appname, modelName, ids):
    MODELNAME = get_model_cls(modelName)
    data = {"success": [], "failed": []}
    for id in ids:
        try:
            id = int(id) if not isinstance(id, int) else id
        except:
            _LOGGER.info("id:%s type error", id)
            continue
        cond = {"_id": id}
        info = MODELNAME.find_one(appname, cond, None)
        if not info:
            _LOGGER.info("id %s is not exist", id)
            continue
        refer_cond = {}
        refer_cond[modelName] = id
        refer_rule = Rule.find(appname, refer_cond, toarray=True)
        if refer_rule:
                _LOGGER.info("id %s is refered", id)
                refer_info = {"id": id, "refered_info": []}
                for item in refer_rule:
                    temp_dict = {"modelName": "rule"}
                    temp_dict["id"] = item.get("_id")
                    refer_info["refered_info"].append(temp_dict)
                data["failed"].append(refer_info)
        else:
            MODELNAME.remove(appname, cond)
            data["success"].append({"id": id})

    if data["failed"]:
        return json_response_error(DATA_RELETED_BY_OTHER, data)
    else:
        return json_response_ok(data, msg="delete successfully")
Esempio n. 4
0
def info_get(appname, modelName, cond):
    MODELNAME = get_model_cls(modelName)
    info = MODELNAME.find_one(appname, cond, MODELNAME.fields)
    if not info:
        return json_response_error(PARAM_ERROR, msg="invalid param id")
    info["id"] = info.pop("_id")
    return json_response_ok(info)
Esempio n. 5
0
    def wrapper(*args, **kwargs):
        # check appname args
        appname = kwargs.get("appname")

        if appname not in MONGO_CONFIG:
            return json_response_error(
                PARAM_ERROR, msg="appname error, check url")

        # check modelName args
        modelName = kwargs.get("modelName")
        if modelName:
            MODELNAME = get_model_cls(modelName)
            if not MODELNAME:
                return json_response_error(
                    PARAM_ERROR, msg="invalid modelname: %s" % modelName)

        return func(*args, **kwargs)
Esempio n. 6
0
def add_info(appname, modelName):
    '''
        create api to add rule.
        Request URL:  /appname/rule/rule/add
        Http Method: POST
        Parameters :
            {
                "title": "xxxx",
                "code::"xxxx", #operator need
                "package_name:"xxxx" #package need
            }
        Return :
        {
            "status":0
            "data":{
                "items":[
                    {
                        "id": 1,
                        "title":"海豚英文版",
                        "first_created": "2015-02-05 21:37:38",
                        "last_modified": "2015-02-05 21:37:38"
                    },
                    {
                        "id": 2,
                        "title":"联通",
                        "first_created": "2015-02-05 21:37:38",
                        "last_modified": "2015-02-05 21:37:38"
                    }
                ]
            }
        }
    '''
    MODELNAME = get_model_cls(modelName)
    # check post data
    data = get_valid_params(request, MODELNAME.params)
    if isinstance(data, Response):
        return data
    # view logic
    return create(appname, MODELNAME, data)