예제 #1
0
파일: app.py 프로젝트: Muxi-Studio/restccnu
def new_app():
    """
    :function: new_app
    :args: none
    :rv: json message

    上传一个新的版本
    """
    if request.method == 'POST':
        name = request.get_json().get("name")
        version = request.get_json().get("version")
        download = request.get_json().get("download")
        update = request.get_json().get("update")
        intro = request.get_json().get("intro")
        size = request.get_json().get('size')
        app_data = {
                "name": name,
                "version": version,
                "download": download,
                "update": update,
                "intro": intro,
                "size": size,
        }
        if not rds.get('apps'):
            rds.set('apps', "[{'name':'ccnubox'}]")
        apps = ast.literal_eval(rds.get('apps'))
        apps.append(app_data)
        rds.set('apps', str(apps))
        rds.save()
        return jsonify({'msg': 'add new version data'}), 201
예제 #2
0
파일: patch.py 프로젝트: misakar/restccnu
def get_patch():
    """获取华师匣子所有补丁包相关信息"""
    if not rds.get('patches'):
        rds.set('patches', "[{'name':'ccnubox_patch'}]")
        rds.save()
    patches = rds.get('patches')
    return eval(patches)
예제 #3
0
def push_register():
    """
    :function: push_register
    :args: none
    :rv: success message

    redis(6384): string
        key: "ids"
        vlaue: "['id1', 'id2']"

    注册ios设备的unique_id
    """
    if request.method == 'POST':
        unique_id = request.get_json().get('unique_id')
        sid = request.get_json().get('sid')  # 学号
        # 将unique_id写入数据库
        if not rds.get('ids'):
            rds.set('ids', "[]")
            rds.save()
        ids = ast.literal_eval(rds.get('ids'))
        if unique_id and (unique_id not in ids):
            ids.append(unique_id)
        if sid:
            rds.hset('idsids', unique_id, sid)
        # db commit
        rds.set('ids', ids)
        rds.save()
        return jsonify({
            'message': 'add new unique_id'
        }), 201
예제 #4
0
def new_patch():
    """
    :function: new_patch
    :args: none
    :rv: json message

    上传一个新的补丁包
    """
    if request.method == 'POST':
        version = request.get_json().get("version")
        download = request.get_json().get("download")
        update = request.get_json().get("update")
        intro = request.get_json().get("intro")
        size = request.get_json().get('size')
        patch_data = {
                "version": version,
                "download": download,
                "update": update,
                "intro": intro,
                "size": size,
        }
        if not rds.get('patches'):
            rds.set('patches', "[{'name':'ccnubox_patch'}]")
        patches = ast.literal_eval(rds.get('patches'))
        patches.append(patch_data)
        rds.set('patches', str(patches))
        rds.save()
        return jsonify({'msg': 'add new patch version'}), 201
예제 #5
0
파일: app.py 프로젝트: misakar/restccnu
def get_app():
    """获取华师匣子所有版本相关信息"""
    if not rds.get('apps'):
        rds.set('apps', "[{'name':'ccnubox'}]")
        rds.save()
    apps = rds.get('apps')
    return eval(apps)
예제 #6
0
파일: app.py 프로젝트: restccnu/restccnu
def new_app():
    """
    :function: new_app
    :args: none
    :rv: json message

    上传一个新的版本
    """
    if request.method == 'POST':
        name = request.get_json().get("name")
        version = request.get_json().get("version")
        download = request.get_json().get("download")
        update = request.get_json().get("update")
        intro = request.get_json().get("intro")
        size = request.get_json().get('size')
        app_data = {
            "name": name,
            "version": version,
            "download": download,
            "update": update,
            "intro": intro,
            "size": size,
        }
        if not rds.get('apps'):
            rds.set('apps', "[{'name':'ccnubox'}]")
        apps = ast.literal_eval(rds.get('apps'))
        apps.append(app_data)
        rds.set('apps', str(apps))
        rds.save()
        return jsonify({'msg': 'add new version data'}), 201
예제 #7
0
def push_register():
    """
    :function: push_register
    :args: none
    :rv: success message

    redis(6384): string
        key: "ids"
        vlaue: "['id1', 'id2']"

    注册ios设备的unique_id
    """
    if request.method == 'POST':
        unique_id = request.get_json().get('unique_id')
        sid = request.get_json().get('sid')  # 学号
        # 将unique_id写入数据库
        if not rds.get('ids'):
            rds.set('ids', "[]")
            rds.save()
        ids = ast.literal_eval(rds.get('ids'))
        if unique_id and (unique_id not in ids):
            ids.append(unique_id)
        if sid:
            rds.hset('idsids', unique_id, sid)
        # db commit
        rds.set('ids', ids)
        rds.save()
        return jsonify({'message': 'add new unique_id'}), 201
예제 #8
0
파일: patch.py 프로젝트: restccnu/restccnu
def new_patch():
    """
    :function: new_patch
    :args: none
    :rv: json message

    上传一个新的补丁包
    """
    if request.method == 'POST':
        version = request.get_json().get("version")
        download = request.get_json().get("download")
        update = request.get_json().get("update")
        intro = request.get_json().get("intro")
        size = request.get_json().get('size')
        patch_data = {
            "version": version,
            "download": download,
            "update": update,
            "intro": intro,
            "size": size,
        }
        if not rds.get('patches'):
            rds.set('patches', "[{'name':'ccnubox_patch'}]")
        patches = ast.literal_eval(rds.get('patches'))
        patches.append(patch_data)
        rds.set('patches', str(patches))
        rds.save()
        return jsonify({'msg': 'add new patch version'}), 201
예제 #9
0
def get_product():
    """木犀应用展示"""
    if eval(rds.get('products') or '{}'):
        products_dict = eval(rds.get('products'))
        return jsonify(products_dict)
    else:
        return jsonify({})
예제 #10
0
def get_ios_config():
    """
    获取ios json配置
    """
    if rds.get('ios_config'):
        config = rds.get('ios_config')
        return jsonify({'config': ast.literal_eval(config)}), 200
    else:
        return jsonify({}), 404
예제 #11
0
def get_ios_config():
    """
    获取ios json配置
    """
    if rds.get('ios_config'):
        config = rds.get('ios_config')
        return jsonify({
            'config': ast.literal_eval(config)
        }), 200
    else: return jsonify({}), 404
예제 #12
0
def get_latest_patch():
    """
    :function: get_latest_patch
    :args: none
    :rv: 最新的补丁包信息

    获取最新版本华师匣子补丁信息
    """
    if not rds.get('patches'):
        rds.set(patches, "[]")
    patches = rds.get("patches")
    return ast.literal_eval(patches)[-1]
예제 #13
0
파일: patch.py 프로젝트: restccnu/restccnu
def get_latest_patch():
    """
    :function: get_latest_patch
    :args: none
    :rv: 最新的补丁包信息

    获取最新版本华师匣子补丁信息
    """
    if not rds.get('patches'):
        rds.set(patches, "[]")
    patches = rds.get("patches")
    return ast.literal_eval(patches)[-1]
예제 #14
0
파일: app.py 프로젝트: Muxi-Studio/restccnu
def get_latest_app():
    """
    :function: get_latest_app
    :args: none
    :rv: 返回最后一个版本列表(最新)

    获取最新版本华师匣子信息
    """
    if not rds.get('apps'):
        rds.set('apps', "[]")
    apps = rds.get("apps")
    return ast.literal_eval(apps)[-1]
예제 #15
0
파일: app.py 프로젝트: restccnu/restccnu
def get_latest_app():
    """
    :function: get_latest_app
    :args: none
    :rv: 返回最后一个版本列表(最新)

    获取最新版本华师匣子信息
    """
    if not rds.get('apps'):
        rds.set('apps', "[]")
    apps = rds.get("apps")
    return ast.literal_eval(apps)[-1]
예제 #16
0
def add_product():
    """
    :function: add_product

    添加一个木犀的产品
    """
    if request.method == 'PUT':
        name = request.get_json().get('name')
        icon = request.get_json().get('icon')
        url = request.get_json().get('url')
        intro = request.get_json().get('intro')

        products_dict = ast.literal_eval(
            rds.get('products') or '{"_products":[], "update":""}')
        products_list = products_dict.get('_products')
        products_list.append({
            'name': name,
            'icon': icon,
            'url': url,
            'intro': intro
        })
        products_dict['_products'] = products_list
        products_dict['update'] = time.time()

        rds.set('products', products_dict)
        rds.save()
        return jsonify({}), 200
예제 #17
0
파일: app.py 프로젝트: misakar/restccnu
def delete_version(version):
    """删除华师匣子特定版本version的信息"""
    apps = eval(rds.get('apps'))
    for n, app in enumerate(apps):
        if app.get('version') == version:
            del apps[n]
    rds.set('apps', str(apps))
    rds.save()
    return jsonify({'msg': 'delete version %s' % version}), 200
예제 #18
0
파일: patch.py 프로젝트: misakar/restccnu
def delete_patch_version(version):
    """删除华师匣子特定版本补丁的信息"""
    patches = eval(rds.get('patches'))  # eval is evil
    for n, patch in enumerate(patches):
        if patch.get('version') == version:
            del patches[n]
    rds.set('patches', str(patches))
    rds.save()
    return jsonify({'msg': 'delete patch version %s' % version}), 200
예제 #19
0
def get_product():
    """
    :function: get_product

    redis1(6384)~products
        key: products
        value: "{ 'update': 时间戳,
            '_products': [{
                'name': name, 'url': url
                'icon': icon, 'intro': intro
            }]
        }"

    木犀应用展示
    """
    if ast.literal_eval(rds.get('products') or '{}'):
    	products_dict = ast.literal_eval(rds.get('products'))
    	return jsonify(products_dict)
    else: return jsonify({})
예제 #20
0
def create_ios_config():
    """
    上传ios json配置
    """
    if request.method == 'POST':
        config = request.get_json().get('config')
        if not rds.get('ios_config'):
            rds.set('ios_config', config)
            rds.save()
            return jsonify({}), 201
        else: return jsonify({'msg': 'ios configuration already uploaded'})
예제 #21
0
def update_ios_config():
    """
    更新ios json配置
    """
    if request.method == 'PUT':
        config = request.get_json().get('config')
        if rds.get('ios_config'):
            rds.set('ios_config', config)
            rds.save()
            return jsonify({}), 200
        else: return jsonify({}), 404
예제 #22
0
파일: app.py 프로젝트: restccnu/restccnu
def get_app():
    """
    :function: get_app
    :args: none
    :rv: 所有版本列表

    redis1(6384): string
        key: "apps"
        value: "[{
            "name": "", "update": "", "version": "",
            "download": "", "intro": ""
        }]"

    获取华师匣子所有版本相关信息
    """
    if not rds.get('apps'):
        rds.set('apps', "[{'name':'ccnubox'}]")
        rds.save()
    apps = rds.get('apps')
    return ast.literal_eval(apps)
예제 #23
0
def get_product():
    """
    :function: get_product

    redis1(6384)~products
        key: products
        value: "{ 'update': 时间戳,
            '_products': [{
                'name': name, 'url': url
                'icon': icon, 'intro': intro
            }]
        }"

    木犀应用展示
    """
    if ast.literal_eval(rds.get('products') or '{}'):
        products_dict = ast.literal_eval(rds.get('products'))
        return jsonify(products_dict)
    else:
        return jsonify({})
예제 #24
0
파일: app.py 프로젝트: Muxi-Studio/restccnu
def get_app():
    """
    :function: get_app
    :args: none
    :rv: 所有版本列表

    redis1(6384): string
        key: "apps"
        value: "[{
            "name": "", "update": "", "version": "",
            "download": "", "intro": ""
        }]"

    获取华师匣子所有版本相关信息
    """
    if not rds.get('apps'):
        rds.set('apps', "[{'name':'ccnubox'}]")
        rds.save()
    apps = rds.get('apps')
    return ast.literal_eval(apps)
예제 #25
0
def get_patch():
    """
    :function:  get_patch
    :args: none
    :rv: 所有补丁包的信息

    redis1(6384)~patches
        - key: "patches"
        - value "[{
            "version": version, "update": update,
            "download": download, "size": size, "intro": intro
        }]"
        string

    获取华师匣子所有补丁包相关信息
    """
    if not rds.get('patches'):
        rds.set('patches', "[{'name':'ccnubox_patch'}]")
        rds.save()
    patches = rds.get('patches')
    return ast.literal_eval(patches)
예제 #26
0
def create_ios_config():
    """
    上传ios json配置
    """
    if request.method == 'POST':
        config = request.get_json().get('config')
        if not rds.get('ios_config'):
            rds.set('ios_config', config)
            rds.save()
            return jsonify({}), 201
        else:
            return jsonify({'msg': 'ios configuration already uploaded'})
예제 #27
0
파일: patch.py 프로젝트: restccnu/restccnu
def get_patch():
    """
    :function:  get_patch
    :args: none
    :rv: 所有补丁包的信息

    redis1(6384)~patches
        - key: "patches"
        - value "[{
            "version": version, "update": update,
            "download": download, "size": size, "intro": intro
        }]"
        string

    获取华师匣子所有补丁包相关信息
    """
    if not rds.get('patches'):
        rds.set('patches', "[{'name':'ccnubox_patch'}]")
        rds.save()
    patches = rds.get('patches')
    return ast.literal_eval(patches)
예제 #28
0
def update_ios_config():
    """
    更新ios json配置
    """
    if request.method == 'PUT':
        config = request.get_json().get('config')
        if rds.get('ios_config'):
            rds.set('ios_config', config)
            rds.save()
            return jsonify({}), 200
        else:
            return jsonify({}), 404
예제 #29
0
def get_ids():
    """
    :function: get_ids
    :args: 无
    :rv: 所有设备id json列表

    返回所有注册的设备id
    """
    return jsonify({
        'ids':
        ast.literal_eval(rds.get('ids')),
        'id_sid':
        ast.literal_eval(json.dumps(rds.hgetall('idsids')))
    })
예제 #30
0
def get_ids():
    """
    :function: get_ids
    :args: 无
    :rv: 所有设备id json列表

    返回所有注册的设备id
    """
    return jsonify({
        'ids': ast.literal_eval(rds.get('ids')),
        'id_sid': ast.literal_eval(
            json.dumps(rds.hgetall('idsids'))
        )
    })
예제 #31
0
def get_start():
    """
    获取闪屏图片
    """
    start = eval(rds.get('start') or '{}')
    if start:
        filename = start.keys()[0]
        url = start.get(filename)
        return {
            'img': qiniu.url(filename),
            'url': url or '',
            'update': qiniu.info(filename).get('putTime')
        }
    else:
        return {}
예제 #32
0
def delete_patch_version(version):
    """
    :function: delete_patch_version
    :args:
        - version: 待删除的补丁包版本
    :rv: json message

    删除华师匣子特定版本补丁的信息
    """
    patches = ast.literal_eval(rds.get('patches'))
    for n, patch in enumerate(patches):
        if patch.get('version') == version:
            del patches[n]
    rds.set('patches', str(patches))
    rds.save()
    return jsonify({'msg': 'delete patch version %s' % version}), 200
예제 #33
0
파일: patch.py 프로젝트: restccnu/restccnu
def delete_patch_version(version):
    """
    :function: delete_patch_version
    :args:
        - version: 待删除的补丁包版本
    :rv: json message

    删除华师匣子特定版本补丁的信息
    """
    patches = ast.literal_eval(rds.get('patches'))
    for n, patch in enumerate(patches):
        if patch.get('version') == version:
            del patches[n]
    rds.set('patches', str(patches))
    rds.save()
    return jsonify({'msg': 'delete patch version %s' % version}), 200
예제 #34
0
파일: app.py 프로젝트: Muxi-Studio/restccnu
def delete_version(version):
    """
    :function: delete_version
    :args: version
        - 待删除的版本号
    :rv: json message

    删除华师匣子特定版本version的信息
    """
    apps = ast.literal_eval(rds.get('apps'))
    for n, app in enumerate(apps):
        if app.get('version') == version:
            del apps[n]
    rds.set('apps', str(apps))
    rds.save()
    return jsonify({'msg': 'delete version %s' % version}), 200j
예제 #35
0
파일: app.py 프로젝트: restccnu/restccnu
def delete_version(version):
    """
    :function: delete_version
    :args: version
        - 待删除的版本号
    :rv: json message

    删除华师匣子特定版本version的信息
    """
    apps = ast.literal_eval(rds.get('apps'))
    for n, app in enumerate(apps):
        if app.get('version') == version:
            del apps[n]
    rds.set('apps', str(apps))
    rds.save()
    return jsonify({'msg': 'delete version %s' % version}), 200j
예제 #36
0
def get_calendar():
    json_data = []
    calendars = eval(rds.get('calendars') or '[]')
    for calendar_dict in calendars:
        filename = calendar_dict.keys()[0]
        size = calendar_dict.get(filename)
        if filename:
            update_timestamp = qiniu.info(filename).get('putTime')
            json_data.append({
                'filename': filename,
                'img': qiniu.url(filename),
                'update': update_timestamp,
                'size': size,
            })
        else:
            json_data.append({})
    return json_data
예제 #37
0
def delete_product():
    """删除某个应用"""
    if request.method == 'DELETE':
        if request.args.get('name'):
            name = request.args.get('name')
            products_dict = eval(
                rds.get('products') or '{"_products":[], "update":""}')
            products_list = products_dict.get('_products')
            if products_list:
                for product in products_list:
                    if product.get('name') == name:
                        products_list.remove(product)
                        products_dict['_products'] = products_list
                        products_dict['update'] = time.time()
                        rds.set('products', products_dict)
                        rds.save()
                        return jsonify({}), 200
            return jsonify({}), 404
예제 #38
0
def push_notification():
    """
    :function: push_notification
    :args: 无
    :rv: 无, 如果出错, 返回错误设备token和信息
    """
    if request.method == 'POST':
        title = request.get_json().get('title')
        userinfo = request.get_json().get('userinfo')

        ids = ast.literal_eval(rds.get('ids'))

        client = APNSClient(certificate=os.getenv("IOS_CERTIFICATE"),
                            default_error_timeout=10,
                            default_expiration_offset=2592000,
                            default_batch_size=100)

        res = client.send(ids, title, extra=userinfo)
        return jsonify({"error": str(res.token_errors)})
예제 #39
0
def delete_product():
    """
    :function: delete_product

    删除某个应用
    """
    if request.method == 'DELETE':
        if request.args.get('name'):
            name = request.args.get('name')
            products_dict = ast.literal_eval(rds.get('products') or '{"_products":[], "update":""}')
            products_list = products_dict.get('_products')
            if products_list:
                for product in products_list:
                    if product.get('name') == name:
                        products_list.remove(product)
                        products_dict['_products'] = products_list
                        products_dict['update'] = time.time()
                        rds.set('products', products_dict)
                        rds.save()
                        return jsonify({}), 200
            return jsonify({}), 404
예제 #40
0
def push_notification():
    """
    :function: push_notification
    :args: 无
    :rv: 无, 如果出错, 返回错误设备token和信息
    """
    if request.method == 'POST':
        title = request.get_json().get('title')
        userinfo = request.get_json().get('userinfo')

        ids = ast.literal_eval(rds.get('ids'))

        client = APNSClient(
            certificate=os.getenv("IOS_CERTIFICATE"),
            default_error_timeout=10,
            default_expiration_offset=2592000,
            default_batch_size=100
        )

        res = client.send(ids, title, extra=userinfo)
        return jsonify({
            "error": str(res.token_errors)
        })
예제 #41
0
def add_product():
    """
    :function: add_product

    添加一个木犀的产品
    """
    if request.method == 'PUT':
        name = request.get_json().get('name')
        icon = request.get_json().get('icon')
        url  = request.get_json().get('url')
        intro = request.get_json().get('intro')

        products_dict = ast.literal_eval(rds.get('products') or '{"_products":[], "update":""}')
        products_list = products_dict.get('_products')
        products_list.append({
	    'name': name, 'icon': icon, 'url': url, 'intro': intro
	})
        products_dict['_products'] = products_list
        products_dict['update'] = time.time()

	rds.set('products', products_dict)
	rds.save()
	return jsonify({}), 200
예제 #42
0
파일: patch.py 프로젝트: misakar/restccnu
def get_latest_patch():
    """获取最新版本华师匣子补丁信息"""
    if not rds.get('patches'):
        rds.set(patches, "[]")
    patches = rds.get("patches")
    return eval(patches)[-1]
예제 #43
0
파일: app.py 프로젝트: misakar/restccnu
def get_latest_app():
    """获取最新版本华师匣子信息"""
    if not rds.get('apps'):
        rds.set(apps, "[]")
    apps = rds.get("apps")
    return eval(apps)[-1]