Ejemplo n.º 1
0
def card_modify():
    args = utility.get_args(request)
    id = args.get('id', "")
    # card_type_id = args.get('card_type_id', "")
    # card_no = args.get('card_no', "")
    # password = args.get('password', "")
    remark = args.get('remark', "")
    is_enable = args.get('is_enable') == "1"

    card = None
    if admin_permission.can():
        card = Card.query.filter_by(id=id).first()
    else:
        card = db.session.query(Card).join(Card.admin).filter(
            or_(Admin.id == current_user.id,
                Admin.superior_id == current_user.id)).filter(
                    Card.id == id).first()
    if card is None:
        return "点卡不存在。"

    card.remark = remark
    card.is_enable = is_enable

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "修改点卡"
    operate_log.remark = "点卡:{},备注:{},启用:{}".format(card.card_no, card.remark,
                                                    card.is_enable)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 2
0
def card_generate():
    args = utility.get_args(request)
    card_type_id = args.get('card_type_id', "")
    amount = args.get('amount', "")
    remark = args.get('remark', "")

    cardtype = db.session.query(CardType).join(CardType.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            CardType.id == card_type_id).first()
    if cardtype is None:
        return "卡类不存在。"

    for i in range(int(amount)):
        card = Card()
        card.admin_id = current_user.id
        card.card_type_id = card_type_id
        card.card_no = utility.get_uuid().replace("-", "")
        card.password = utility.get_uuid()[0:6]
        card.remark = remark
        card.is_used = False
        card.is_enable = True
        card.update_time = func.now()
        card.create_time = func.now()
        db.session.add(card)

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "生成点卡"
    operate_log.remark = "软件名称:{},数量:{}".format(cardtype.software.name, amount)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "生成成功!"
Ejemplo n.º 3
0
def cardtype_insert():
    args = utility.get_args(request)
    software_id = args.get('software_id', "")
    day = args.get('day', "")
    expired_day = args.get('expired_day', "")
    price = args.get('price', "")

    cardtype = CardType.query.filter_by(software_id=software_id,
                                        day=day,
                                        expired_day=expired_day).first()
    if cardtype != None:
        return "卡类已存在。"

    cardtype = CardType()
    cardtype.software_id = software_id
    cardtype.day = day
    cardtype.expired_day = expired_day
    cardtype.price = price
    cardtype.is_enable = True
    cardtype.update_time = func.now()
    cardtype.create_time = func.now()
    db.session.add(cardtype)
    db.session.commit()  #提交后才能获取name

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "添加卡类"
    operate_log.remark = "软件名称:{},点卡天数:{},过期天数:{},价格:{}".format(
        cardtype.software.name, day, expired_day, price)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "添加成功!"
Ejemplo n.º 4
0
def cardtype_modify():
    args = utility.get_args(request)
    id = args.get('id', "")
    software_id = args.get('software_id', "")
    day = args.get('day', "")
    expired_day = args.get('expired_day', "")
    price = args.get('price', "")
    is_enable = args.get('is_enable') == "1"

    cardtype = db.session.query(CardType).join(CardType.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            CardType.id == id).first()
    if cardtype is None:
        return "软件不存在。"

    cardtype.software_id = software_id
    cardtype.day = day
    cardtype.expired_day = expired_day
    cardtype.price = price
    cardtype.is_enable = is_enable

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "修改卡类"
    operate_log.remark = "软件名称:{},点卡天数:{},过期天数:{},价格:{},启用:{}".format(
        cardtype.software.name, day, expired_day, price, is_enable)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 5
0
def user_modify():
    args = utility.get_args(request)
    id = args.get('id', "")
    software_name = args.get('software_name', "")
    user_name = args.get('user_name', "")
    password = args.get('password', "")
    password_question = args.get('password_question', "")
    password_answer = args.get('password_answer', "")
    qq = args.get('qq', "")
    email = args.get('email', "")
    phone = args.get('phone', "")
    version = args.get('version', "")
    serial_no = args.get('serial_no', "")
    token = args.get('token', "")
    client_count = args.get('client_count', "")
    is_bind = args.get('is_bind', "") == "1"
    remark = args.get('remark', "")
    unbind_date = args.get('unbind_date', "")
    terminate_date = args.get('terminate_date', "")
    is_enable = args.get('is_enable') == "1"

    user = db.session.query(User).join(User.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            User.id == id).first()
    if user is None:
        return "用户不存在。"

    # 调整客户端数量
    if client_count.isdigit(
    ) and client_count != 0 and user.client_count != int(
            client_count) and user.terminate_date > datetime.now():
        left_days = user.terminate_date - datetime.now()
        total_left_days = left_days * user.client_count
        new_left_days = total_left_days / int(client_count)
        # print(left_days)
        # print(total_left_days)
        # print(new_left_days)
        user.terminate_date = datetime.now() + new_left_days
        user.client_count = client_count

    user.qq = qq
    user.email = email
    user.phone = phone
    # user.version = version
    user.is_bind = is_bind
    user.remark = remark
    user.is_enable = is_enable

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "修改用户"
    operate_log.remark = "用户名:{},QQ:{},Email:{},手机:{},客户端限制:{},绑定机器:{},备注:{},启用:{}".format(
        user_name, qq, email, phone, client_count, is_bind, remark, is_enable)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 6
0
def do_programme(programme: List[str]):
    while mem[resurses.COUNTER] != len(programme):
        print(mem)
        current_line = programme[mem[resurses.COUNTER]]
        command = get_command(current_line)
        args = get_args(current_line)
        make(mem, command, *args)
        mem[resurses.COUNTER] += 1
Ejemplo n.º 7
0
def software_edit():
    args = utility.get_args(request)
    id = args.get('id', "")

    software = db.session.query(Software).join(Software.admins).filter(
        Admin.id == current_user.id).filter(Software.id == id).first()
    if software is None:
        return redirect(url_for('software'))

    return render_template('software_edit.html', software=software)
Ejemplo n.º 8
0
def user_query():
    args = utility.get_args(request)
    draw = args.get('draw', "")  # 这个值作者会直接返回给前台
    start = args.get('start', "")  # 从多少开始
    length = args.get('length', "")  # 数据长度
    search = args.get('search[value]', "")  # 获取前台传过来的过滤条件
    order_column = args.get('order[0][column]', "")  # 哪一列排序,从0开始
    order_dir = args.get('order[0][dir]', "")  # asc desc 升序或者降序
    order_name = args.get('columns[' + order_column + '][name]',
                          "")  # 需要html里定义name

    if order_name == "users.online_client_count":  #特殊处理
        order = asc if order_dir == "asc" else desc
        users = db.session.query(User).join(User.software).join(
            Software.admins).filter(Admin.id == current_user.id).filter(
                func.CONCAT_WS(
                    ',', User.user_name, User.qq, User.email, User.serial_no,
                    User.remark,
                    Software.name).like('%' + search + '%')).order_by(
                        order(User.online_client_count)).offset(start).limit(
                            length).all()
    else:
        users = db.session.query(User).join(User.software).join(
            Software.admins).filter(Admin.id == current_user.id).filter(
                func.CONCAT_WS(
                    ',', User.user_name, User.qq, User.email, User.serial_no,
                    User.remark,
                    Software.name).like('%' + search + '%')).order_by(
                        text(order_name + " " +
                             order_dir)).offset(start).limit(length).all()

    recordsTotal = db.session.query(func.count(User.id)).join(
        User.software).join(
            Software.admins).filter(Admin.id == current_user.id).scalar()
    recordsFiltered = recordsTotal if search == "" else len(users)

    data = []
    for user in users:
        item = [
            user.id, user.software.name, user.user_name, user.password,
            user.password_question, user.password_answer, user.qq, user.email,
            user.phone, user.version, user.serial_no, user.token,
            "{}/{}".format(user.online_client_count, user.client_count),
            user.is_bind, user.remark, user.unbind_date, user.terminate_date,
            user.is_enable, user.update_time, user.create_time
        ]
        data.append(item)

    result = {
        "draw": draw,
        "recordsTotal": recordsTotal,
        "recordsFiltered": recordsFiltered,
        "data": data
    }
    return utility.get_json(result)
Ejemplo n.º 9
0
def user_edit():
    args = utility.get_args(request)
    id = args.get('id', "")

    user = db.session.query(User).join(User.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            User.id == id).first()
    if user is None:
        return redirect(url_for('user'))

    return render_template('user_edit.html', user=user)
Ejemplo n.º 10
0
def admin_insert():
    args = utility.get_args(request)
    user_name = args.get('user_name', "")
    password = args.get('password', "")
    software_names = request.form.getlist("software_names")  # dict会丢失数据
    role_name = args.get('role_name', "")

    if len(software_names) == 0:
        return "未授权软件。"

    softwares = db.session.query(Software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            Software.name.in_(software_names)).all()
    if len(softwares) == 0:
        return "无权限添加"

    role = Role.query.filter_by(name=role_name).first()
    if role is None:
        return "身份不存在。"

    if not admin_permission.can():
        if role.id <= current_user.roles[0].id:
            return "无权限添加。"

    admin = Admin.query.filter_by(user_name=user_name).first()
    if admin != None:
        return "用户名已存在。"

    admin = Admin()
    admin.user_name = user_name
    admin.password = utility.get_md5(password)
    admin.superior_id = current_user.id
    admin.is_enable = True
    admin.update_time = func.now()
    admin.create_time = func.now()
    admin.roles.append(role)
    for software_name in software_names:
        software = Software.query.filter_by(name=software_name).first()
        if software is None:
            return "软件不存在。"
        admin.softwares.append(software)
    db.session.add(admin)

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "添加{}".format(role.description)
    operate_log.remark = "用户名:{},密码:{},授权软件:{}".format(
        user_name, password, "、".join(software_names))
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "添加成功!"
Ejemplo n.º 11
0
def cardtype_edit():
    args = utility.get_args(request)
    id = args.get('id', "")

    cardtype = db.session.query(CardType).join(CardType.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            CardType.id == id).first()
    if cardtype is None:
        return redirect(url_for('cardtype'))

    return render_template('cardtype_edit.html', cardtype=cardtype)
Ejemplo n.º 12
0
def operatelog_query():
    args = utility.get_args(request)
    draw = args.get('draw', "")  # 这个值作者会直接返回给前台
    start = args.get('start', "")  # 从多少开始
    length = args.get('length', "")  # 数据长度
    search = args.get('search[value]', "")  # 获取前台传过来的过滤条件
    order_column = args.get('order[0][column]', "")  # 哪一列排序,从0开始
    order_dir = args.get('order[0][dir]', "")  # asc desc 升序或者降序

    operatelogs = []
    recordsTotal = 0
    if admin_permission.can():
        operatelogs = db.session.query(OperateLog).join(
            OperateLog.admin).filter(
                func.CONCAT_WS(
                    ',', Admin.user_name, OperateLog.operate,
                    OperateLog.remark).like('%' + search + '%')).order_by(
                        text(str(int(order_column) + 1) + " " +
                             order_dir)).offset(start).limit(length).all()
        recordsTotal = db.session.query(func.count(OperateLog.id)).scalar()
    else:
        operatelogs = db.session.query(OperateLog).join(
            OperateLog.admin).filter(
                or_(Admin.id == current_user.id,
                    Admin.superior_id == current_user.id)).filter(
                        func.CONCAT_WS(',', Admin.user_name,
                                       OperateLog.operate, OperateLog.remark).
                        like('%' + search + '%')).order_by(
                            text(str(int(order_column) + 1) + " " +
                                 order_dir)).offset(start).limit(length).all()
        recordsTotal = db.session.query(func.count(OperateLog.id)).join(
            OperateLog.admin).filter(
                or_(Admin.id == current_user.id,
                    Admin.superior_id == current_user.id)).scalar()

    recordsFiltered = recordsTotal if search == "" else len(operatelogs)

    data = []
    for operatelog in operatelogs:
        item = [
            operatelog.id, operatelog.admin.user_name, operatelog.operate,
            operatelog.remark, operatelog.create_time
        ]
        data.append(item)

    result = {
        "draw": draw,
        "recordsTotal": recordsTotal,
        "recordsFiltered": recordsFiltered,
        "data": data
    }
    return utility.get_json(result)
Ejemplo n.º 13
0
def software_insert():
    args = utility.get_args(request)
    name = args.get('name', "")
    register_hour = args.get('register_hour', "")
    unbind_hour = args.get('unbind_hour', "")
    wait_hour = args.get('wait_hour', "")
    client_count = args.get('client_count', "")
    is_bind = args.get('is_bind', "") == "1"
    message = args.get('message', "")
    script = args.get('script', "")
    version = args.get('version', "")
    new_version = args.get('new_version', "")
    new_url = args.get('new_url', "")

    software = Software.query.filter_by(name=name).first()
    if software != None:
        return "软件名已存在。"

    software = Software()
    software.name = name
    software.register_hour = register_hour
    software.unbind_hour = unbind_hour
    software.wait_hour = wait_hour
    software.client_count = client_count
    software.is_bind = is_bind
    software.message = message
    software.script = script
    software.version = version
    software.new_version = new_version
    software.new_url = new_url
    software.is_enable = True
    software.update_time = func.now()
    software.create_time = func.now()
    software.admins.append(current_user)
    db.session.add(software)

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "添加软件"
    operate_log.remark = "软件名称:{},注册赠送时间:{},解绑扣除时间:{},解绑冷却时间:{},客户端限制:{},绑定机器:{},版本号:{}".format(
        name, register_hour, unbind_hour, wait_hour, client_count, is_bind,
        version)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "添加成功!"
Ejemplo n.º 14
0
def card_edit():
    args = utility.get_args(request)
    id = args.get('id', "")

    card = None
    if admin_permission.can():
        card = Card.query.filter_by(id=id).first()
    else:
        card = db.session.query(Card).join(Card.admin).filter(
            or_(Admin.id == current_user.id,
                Admin.superior_id == current_user.id)).filter(
                    Card.id == id).first()
    if card is None:
        return redirect(url_for('card'))

    return render_template('card_edit.html', card=card)
Ejemplo n.º 15
0
def setting_exe_sql():
    args = utility.get_args(request)
    sql_cmd = args.get('sql_cmd', "")

    try:
        res = db.session.execute(sql_cmd)
        # print(res.rowcount)
        # print(res.keys())
        # print(res.fetchall())

        if res.returns_rows:
            # use special handler for dates and decimals
            return utility.get_json([dict(r) for r in res]).encode('utf-8').decode('unicode_escape')
        else:
            return utility.get_json([{"affected": res.rowcount}]).encode('utf-8').decode('unicode_escape')
    except Exception as err:
        return str(err)
Ejemplo n.º 16
0
def software_modify():
    args = utility.get_args(request)
    id = args.get('id', "")
    name = args.get('name', "")
    register_hour = args.get('register_hour', "")
    unbind_hour = args.get('unbind_hour', "")
    wait_hour = args.get('wait_hour', "")
    client_count = args.get('client_count', "")
    is_bind = args.get('is_bind', "") == "1"
    message = args.get('message', "")
    script = args.get('script', "")
    version = args.get('version', "")
    new_version = args.get('new_version', "")
    new_url = args.get('new_url', "")
    is_enable = args.get('is_enable') == "1"

    software = db.session.query(Software).join(Software.admins).filter(
        Admin.id == current_user.id).filter(Software.id == id).first()
    if software is None:
        return "软件不存在。"

    software.name = name
    software.register_hour = register_hour
    software.unbind_hour = unbind_hour
    software.wait_hour = wait_hour
    software.client_count = client_count
    software.is_bind = is_bind
    software.message = message
    software.script = script
    software.version = version
    software.new_version = new_version
    software.new_url = new_url
    software.is_enable = is_enable

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "修改软件"
    operate_log.remark = "软件名称:{},注册赠送时间:{},解绑扣除时间:{},解绑冷却时间:{},客户端限制:{},绑定机器:{},登录版本:{},最新版本:{},下载网址:{},启用:{}".format(
        name, register_hour, unbind_hour, wait_hour, client_count, is_bind,
        version, new_version, new_url, is_enable)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 17
0
def setting_exe_python():
    args = utility.get_args(request)
    python_cmd = args.get('python_cmd', "")

    result = ""

    __stdout = sys.stdout
    sys.stdout = io.StringIO()

    try:
        exec(python_cmd)
        result = sys.stdout.getvalue()
    except Exception as err:
        result = str(err)

    sys.stdout = __stdout

    return result
Ejemplo n.º 18
0
def admin_edit():
    args = utility.get_args(request)
    id = args.get('id', "")

    softwares = db.session.query(Software).join(
        Software.admins).filter(Admin.id == current_user.id).all()

    admin = None
    if admin_permission.can():
        admin = Admin.query.filter_by(id=id).first()
    else:
        admin = db.session.query(Admin).filter(
            Admin.superior_id == current_user.id).first()

    if admin is None:
        return redirect(url_for('admin'))

    return render_template('admin_edit.html', admin=admin, softwares=softwares)
Ejemplo n.º 19
0
def software_query():
    args = utility.get_args(request)
    draw = args.get('draw', "")  # 这个值作者会直接返回给前台
    start = args.get('start', "")  # 从多少开始
    length = args.get('length', "")  # 数据长度
    search = args.get('search[value]', "")  # 获取前台传过来的过滤条件
    order_column = args.get('order[0][column]', "")  # 哪一列排序,从0开始
    order_dir = args.get('order[0][dir]', "")  # asc desc 升序或者降序
    order_name = args.get('columns[' + order_column + '][name]',
                          "")  # 需要html里定义name

    softwares = db.session.query(Software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            func.CONCAT_WS(
                ',', Software.name, Software.message, Software.version,
                Admin.user_name).like('%' + search + '%')).order_by(
                    text(order_name + " " +
                         order_dir)).offset(start).limit(length).all()

    recordsTotal = db.session.query(func.count(Software.id)).scalar()
    recordsFiltered = recordsTotal if search == "" else len(softwares)

    data = []
    for software in softwares:
        item = [
            software.id, software.name, software.register_hour,
            software.unbind_hour, software.wait_hour, software.client_count,
            software.is_bind, software.message,
            utility.get_short(software.script, 16), software.version,
            software.new_version, software.new_url,
            software.get_admins_names(), software.is_enable,
            software.update_time, software.create_time
        ]
        data.append(item)

    result = {
        "draw": draw,
        "recordsTotal": recordsTotal,
        "recordsFiltered": recordsFiltered,
        "data": data
    }
    return utility.get_json(result)
Ejemplo n.º 20
0
def log_query():
    args = utility.get_args(request)
    draw = args.get('draw', "")  # 这个值作者会直接返回给前台
    start = args.get('start', "")  # 从多少开始
    length = args.get('length', "")  # 数据长度
    search = args.get('search[value]', "")  # 获取前台传过来的过滤条件
    order_column = args.get('order[0][column]', "")  # 哪一列排序,从0开始
    order_dir = args.get('order[0][dir]', "")  # asc desc 升序或者降序
    log_month = args.get('log_month', "")

    # if db.engine.dialect.has_table(db.engine.connect(), log_month):

    months = Log.get_months()
    month = time.strftime("%Y%m") if log_month == "" else log_month
    if month not in months:
        return "{}"

    MyLog = Log.model(log_month)
    logs = db.session.query(MyLog).filter(
        func.CONCAT_WS(',', MyLog.ip, MyLog.uri,
                       MyLog.args).like('%' + search + '%')).order_by(
                           text(str(int(order_column) + 1) + " " +
                                order_dir)).offset(start).limit(length).all()

    recordsTotal = db.session.query(func.count(MyLog.id)).scalar()
    recordsFiltered = recordsTotal if search == "" else len(logs)

    data = []
    for log in logs:
        item = [
            log.id, log.ip, log.country, log.region, log.city, log.uri,
            log.args, log.result, log.create_time
        ]
        data.append(item)

    result = {
        "draw": draw,
        "recordsTotal": recordsTotal,
        "recordsFiltered": recordsFiltered,
        "data": data
    }
    return utility.get_json(result)
Ejemplo n.º 21
0
def admin_modify():
    args = utility.get_args(request)
    id = args.get('id', "")
    user_name = args.get('user_name', "")
    software_names = request.form.getlist("software_names")  # dict会丢失数据
    role_name = args.get('role_name', "")
    is_enable = args.get('is_enable') == "1"

    if len(software_names) == 0:
        return "未授权软件。"

    admin = None
    if admin_permission.can():
        admin = Admin.query.filter_by(id=id).first()
    else:
        admin = db.session.query(Admin).filter(
            Admin.superior_id == current_user.id).first()

    if admin is None:
        return "管理员不存在。"

    admin.user_name = user_name
    admin.is_enable = is_enable
    admin.softwares = []
    for software_name in software_names:
        software = Software.query.filter_by(name=software_name).first()
        if software is None:
            return "软件不存在。"
        admin.softwares.append(software)

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "修改{}".format(admin.get_roles_names())
    operate_log.remark = "用户名:{},授权软件:{},启用:{}".format(
        user_name, "、".join(software_names), is_enable)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 22
0
def login():
    if request.method == 'GET':
        return render_template('login.html')

    args = utility.get_args(request)
    user_name = args.get('user_name', "")
    password = args.get('password', "")

    admin = Admin.query.filter(
        Admin.user_name == user_name,
        Admin.password == utility.get_md5(password)).first()
    if admin is None:
        flash('用户名或密码错误。')
        return redirect(url_for('login'))
    elif not admin.is_enable:
        flash('账号已停用。')
        return redirect(url_for('login'))
    else:
        login_user(admin)

        # Tell Flask-Principal the identity changed
        identity_changed.send(current_app._get_current_object(),
                              identity=Identity(admin.id))

        # session["id"] = admin.id
        # session["user_name"] = admin.user_name
        # session["is_super"] = admin.is_super
        # session["permissions"] = admin.permissions
        # app.permanent_session_lifetime = timedelta(minutes=30)

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = admin.id
    operate_log.operate = "管理登陆"
    operate_log.remark = "IP:{}".format(request.remote_addr)
    operate_log.create_time = datetime.now()
    db.session.add(operate_log)
    db.session.commit()

    return redirect(url_for('index'))
Ejemplo n.º 23
0
def user_set_unbind():
    args = utility.get_args(request)
    user_name = args.get('user_name', "")

    user = db.session.query(User).join(User.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            User.user_name == user_name).first()
    if user is None:
        return "用户不存在。"

    user.serial_no = ""

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "解绑用户"
    operate_log.remark = "用户名:{}".format(user_name)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 24
0
def card_set_enable_batch():
    args = utility.get_args(request)
    card_list = args.get('card_list', "")
    is_enable = args.get('is_enable') == "1"

    result = ""
    card_nos = card_list.strip().split("\n")
    for card_no in card_nos:
        result += card_no

        card = None
        if admin_permission.can():
            card = Card.query.filter(Card.card_no == card_no).first()
        else:
            card = db.session.query(Card).join(Card.admin).filter(
                or_(Admin.id == current_user.id,
                    Admin.superior_id == current_user.id)).filter(
                        Card.card_no == card_no).first()

        if card is None:
            result += "(点卡不存在)"
        else:
            if card.is_used:
                result += "(点卡已使用)"
            else:
                card.is_enable = is_enable
                result += "(修改成功)"
        result += "\n"

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "批量操作点卡"
    operate_log.remark = "数量:{},启用:{}".format(len(card_nos), is_enable)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return result
Ejemplo n.º 25
0
def cardtype_query():
    args = utility.get_args(request)
    draw = args.get('draw', "")  # 这个值作者会直接返回给前台
    start = args.get('start', "")  # 从多少开始
    length = args.get('length', "")  # 数据长度
    search = args.get('search[value]', "")  # 获取前台传过来的过滤条件
    order_column = args.get('order[0][column]', "")  # 哪一列排序,从0开始
    order_dir = args.get('order[0][dir]', "")  # asc desc 升序或者降序

    cardtypes = db.session.query(CardType).join(CardType.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            func.CONCAT_WS(
                ',', Software.name, CardType.day, CardType.expired_day,
                CardType.price).like('%' + search + '%')).order_by(
                    text(str(int(order_column) + 1) + " " +
                         order_dir)).offset(start).limit(length).all()

    recordsTotal = db.session.query(func.count(CardType.id)).join(
        CardType.software).join(
            Software.admins).filter(Admin.id == current_user.id).scalar()
    recordsFiltered = recordsTotal if search == "" else len(cardtypes)

    data = []
    for cardtype in cardtypes:
        item = [
            cardtype.id, cardtype.software.name, cardtype.day,
            cardtype.expired_day, cardtype.price, cardtype.is_enable,
            cardtype.update_time, cardtype.create_time
        ]
        data.append(item)

    result = {
        "draw": draw,
        "recordsTotal": recordsTotal,
        "recordsFiltered": recordsFiltered,
        "data": data
    }
    return utility.get_json(result)
Ejemplo n.º 26
0
def user_set_terminate():
    args = utility.get_args(request)
    user_name = args.get('user_name', "")
    day = args.get('day', "")

    user = db.session.query(User).join(User.software).join(
        Software.admins).filter(Admin.id == current_user.id).filter(
            User.user_name == user_name).first()
    if user is None:
        return "用户不存在。"

    user.terminate_date = user.terminate_date + timedelta(days=int(day))

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "增减天数"
    operate_log.remark = "用户名:{},天数:{}".format(user_name, day)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 27
0
def modify_password():
    if request.method == 'GET':
        return render_template('modify_password.html')

    args = utility.get_args(request)
    user_name = args.get('user_name', "")
    password = args.get('password', "")
    new_password = args.get('new_password', "")

    admin = Admin.query.filter(
        Admin.user_name == user_name,
        Admin.password == utility.get_md5(password)).first()
    if admin is None:
        flash('用户名或密码错误。')
        return redirect(url_for('modify_password'))
    elif not admin.is_enable:
        flash('账号已停用。')
        return redirect(url_for('modify_password'))
    else:
        admin.password = utility.get_md5(new_password)
        # db.session.commit()

    return redirect(url_for('index'))
Ejemplo n.º 28
0
def setting_modify():
    args = utility.get_args(request)
    domain = args.get('domain', "")
    ua_regex = args.get('ua_regex', "")
    des_key = args.get('des_key', "")
    is_encrypt = args.get('is_encrypt', "") == "1"
    is_offline = args.get('is_offline', "") == "1"

    utility.set_domain(domain)
    utility.set_ua_regex(ua_regex)
    utility.set_des_key(des_key)
    utility.set_is_encrypt(is_encrypt)
    utility.set_is_offline(is_offline)

    # 操作记录
    operate_log = OperateLog()
    operate_log.admin_id = current_user.id
    operate_log.operate = "修改秘钥"
    operate_log.remark = "域名:{},匹配:{},秘钥:{},加密:{},维护:{}".format(domain, ua_regex, des_key, is_encrypt, is_offline)
    operate_log.create_time = func.now()
    db.session.add(operate_log)
    db.session.commit()

    return "修改成功。"
Ejemplo n.º 29
0
def log_insert():
    args = utility.get_args(request)
    name = args.get('name', "")
    register_hour = args.get('register_hour', "")
    unbind_hour = args.get('unbind_hour', "")
    wait_hour = args.get('wait_hour', "")
    message = args.get('message', "")
    version = args.get('version', "")
    admins = ",".join(request.form.getlist("admin"))  # dict会丢失数据

    log = Log()
    log.name = name
    log.register_hour = register_hour
    log.unbind_hour = unbind_hour
    log.wait_hour = wait_hour
    log.message = message
    log.version = version
    log.admins = admins
    log.is_enable = True
    log.update_time = func.now()
    log.create_time = func.now()
    db.session.add(log)

    return "添加成功!"
Ejemplo n.º 30
0
def card_query():
    args = utility.get_args(request)
    draw = args.get('draw', "")  # 这个值作者会直接返回给前台
    start = args.get('start', "")  # 从多少开始
    length = args.get('length', "")  # 数据长度
    search = args.get('search[value]', "")  # 获取前台传过来的过滤条件
    order_column = args.get('order[0][column]', "")  # 哪一列排序,从0开始
    order_dir = args.get('order[0][dir]', "")  # asc desc 升序或者降序
    order_name = args.get('columns[' + order_column + '][name]',
                          "")  # 需要html里定义name
    '''
    SELECT * FROM
    (SELECT cards.*, admins.user_name AS admin_name, my_card_types.card_type_name FROM `cards` LEFT JOIN `admins` ON cards.admin_id = admins.id
    LEFT JOIN (SELECT card_types.*,CONCAT(softwares.name, '(', CAST(card_types.day AS CHAR), '天卡)') AS card_type_name FROM card_types
    LEFT JOIN softwares ON card_types.software_id = softwares.id) AS my_card_types ON cards.type_id = my_card_types.id) AS t1
    WHERE CONCAT_WS(',',`card_no`,`remark`,`admin_name`,`card_type_name`)
    LIKE '%"..search.."%' "..order.." LIMIT "..start..", "..length
    '''

    # 点卡需要用户间彼此隔离
    cards = []
    recordsTotal = 0
    if admin_permission.can():
        cards = db.session.query(Card).join(Card.admin).join(
            Card.card_type).join(CardType.software).filter(
                func.CONCAT_WS(
                    ',', Card.card_no, Card.remark, Admin.user_name,
                    func.CONCAT(
                        Software.name, "(", CardType.day,
                        '天卡)')).like('%' + search + '%')).order_by(
                            text(order_name + " " +
                                 order_dir)).offset(start).limit(length).all()
        recordsTotal = db.session.query(func.count(Card.id)).scalar()
    else:
        cards = db.session.query(Card).join(Card.admin).join(
            Card.card_type).join(CardType.software).filter(
                or_(Admin.id == current_user.id,
                    Admin.superior_id == current_user.id)).filter(
                        func.CONCAT_WS(
                            ',', Card.card_no, Card.remark, Admin.user_name,
                            func.CONCAT(
                                Software.name, "(", CardType.day,
                                '天卡)')).like('%' + search + '%')).order_by(
                                    text(order_name + " " + order_dir)).offset(
                                        start).limit(length).all()
        recordsTotal = db.session.query(func.count(Card.id)).join(
            Card.admin).join(Card.card_type).join(CardType.software).filter(
                or_(Admin.id == current_user.id,
                    Admin.superior_id == current_user.id)).scalar()

    recordsFiltered = recordsTotal if search == "" else len(cards)

    data = []
    for card in cards:
        item = [
            card.id, card.admin.user_name,
            card.card_type.get_name(), card.card_no, card.password,
            card.remark, card.is_used, card.is_enable,
            card.create_time + timedelta(days=card.card_type.expired_day),
            card.update_time, card.create_time
        ]
        data.append(item)

    result = {
        "draw": draw,
        "recordsTotal": recordsTotal,
        "recordsFiltered": recordsFiltered,
        "data": data
    }
    return utility.get_json(result)