Exemplo n.º 1
0
def dashboard_speed_share():
    user = session.get("user_info")
    username = user.get("username")
    accounts_key = "accounts:%s" % username

    drilldown_data = []
    for b_acct in r_session.mget(
        *["account:%s:%s:data" % (username, name.decode("utf-8")) for name in sorted(r_session.smembers(accounts_key))]
    ):

        account_info = json.loads(b_acct.decode("utf-8"))
        mid = str(account_info.get("privilege").get("mid"))

        total_speed = 0
        device_speed = []

        for device_info in account_info.get("device_info"):
            if device_info.get("status") != "online":
                continue
            speed = int(int(device_info.get("dcdn_upload_speed")) / 1024)
            total_speed += speed
            device_speed.append(dict(name=device_info.get("device_name"), value=speed))

        drilldown_data.append(dict(name="矿主ID:" + mid, value=total_speed, drilldown_data=device_speed))

    return Response(json.dumps(dict(data=drilldown_data)), mimetype="application/json")
Exemplo n.º 2
0
def dashboard_speed_share():
    user = session.get('user_info')
    username = user.get('username')
    accounts_key = 'accounts:%s' % username

    drilldown_data = []
    for b_acct in r_session.mget(*[
            'account:%s:%s:data' % (username, name.decode('utf-8'))
            for name in sorted(r_session.smembers(accounts_key))
    ]):

        account_info = json.loads(b_acct.decode("utf-8"))
        mid = str(account_info.get('privilege').get('mid'))

        total_speed = 0
        device_speed = []

        for device_info in account_info.get('device_info'):
            if device_info.get('status') != 'online':
                continue
            uploadspeed = int(int(device_info.get('dcdn_upload_speed')) / 1024)
            total_speed += uploadspeed
            device_speed.append(
                dict(name=device_info.get('device_name'), value=uploadspeed))
            # device_speed.append(dict(name=device_info.get('device_name'), value=total_speed))

        # 显示在速度分析器圆形图表上的设备ID
        drilldown_data.append(
            dict(name='矿主ID:' + mid,
                 value=total_speed,
                 drilldown_data=device_speed))

    return Response(json.dumps(dict(data=drilldown_data)),
                    mimetype='application/json')
Exemplo n.º 3
0
def dashboard_speed_detail():
    user = session.get("user_info")
    username = user.get("username")
    accounts_key = "accounts:%s" % username

    device_speed = []
    for b_acct in r_session.mget(
        *["account:%s:%s:data" % (username, name.decode("utf-8")) for name in sorted(r_session.smembers(accounts_key))]
    ):

        account_info = json.loads(b_acct.decode("utf-8"))

        for device_info in account_info.get("device_info"):
            if device_info.get("status") != "online":
                continue
            upload_speed = int(int(device_info.get("dcdn_upload_speed")) / 1024)
            deploy_speed = int(device_info.get("dcdn_download_speed") / 1024)

            device_speed.append(
                dict(name=device_info.get("device_name"), upload_speed=upload_speed, deploy_speed=deploy_speed)
            )

    device_speed = sorted(device_speed, key=lambda k: k.get("name"))
    categories = []
    upload_series = dict(name="上传速度", data=[], pointPadding=0.3, pointPlacement=-0.2)
    deploy_series = dict(name="下载速度", data=[], pointPadding=0.4, pointPlacement=-0.2)
    for d_s in device_speed:
        categories.append(d_s.get("name"))
        upload_series.get("data").append(d_s.get("upload_speed"))
        deploy_series.get("data").append(d_s.get("deploy_speed"))

    return Response(
        json.dumps(dict(categories=categories, series=[upload_series, deploy_series])), mimetype="application/json"
    )
Exemplo n.º 4
0
def dashboard_speed_detail():
    user = session.get('user_info')
    username = user.get('username')
    accounts_key = 'accounts:%s' % username

    account_key = ['account:%s:%s:data' % (username, name.decode('utf-8')) for name in sorted(r_session.smembers(accounts_key))]
    if len(account_key) == 0:
        return Response(json.dumps(dict(data=[])), mimetype='application/json')

    device_speed = []
    for b_acct in r_session.mget(*['account:%s:%s:data' % (username, name.decode('utf-8'))
                                   for name in sorted(r_session.smembers(accounts_key))]):

        account_info = json.loads(b_acct.decode("utf-8"))

        for device_info in account_info.get('device_info'):
            if device_info.get('status') != 'online':
                continue
            upload_speed = int(int(device_info.get('dcdn_upload_speed')) / 1024)
            deploy_speed = int(device_info.get('dcdn_download_speed') / 1024)

            device_speed.append(dict(name=device_info.get('device_name'), upload_speed=upload_speed, deploy_speed=deploy_speed))

    device_speed = sorted(device_speed, key=lambda k: k.get('name'))
    categories = []
    upload_series = dict(name='上传速度', data=[], pointPadding=0.3, pointPlacement=-0.2)
    deploy_series = dict(name='下载速度', data=[], pointPadding=0.4, pointPlacement=-0.2)
    for d_s in device_speed:
        categories.append(d_s.get('name'))
        upload_series.get('data').append(d_s.get('upload_speed'))
        deploy_series.get('data').append(d_s.get('deploy_speed'))

    return Response(json.dumps(dict(categories=categories, series=[upload_series, deploy_series])), mimetype='application/json')
Exemplo n.º 5
0
def admin_user():
    recent_login_users = []
    users = list()

    for b_user in r_session.mget(*[
            'user:%s' % name.decode('utf-8')
            for name in sorted(r_session.smembers('users'))
    ]):
        if b_user is None:
            continue
        user = json.loads(b_user.decode('utf-8'))
        if user.get('login_as_time') is not None:
            if (datetime.now() - datetime.strptime(
                    user.get('login_as_time'), '%Y-%m-%d %H:%M:%S')).days < 3:
                recent_login_users.append(user)
        user['is_online'] = r_session.exists('user:%s:is_online' %
                                             user.get('username'))  # 临时寄存数据
        users.append(user)

    return render_template('admin_user.html',
                           recent_login_users=sorted(
                               recent_login_users,
                               key=lambda k: k['login_as_time'],
                               reverse=True),
                           users=users)
Exemplo n.º 6
0
def dashboard_today_income_share():
    user = session.get('user_info')
    username = user.get('username')
    accounts_key = 'accounts:%s' % username

    account_key = [
        'account:%s:%s:data' % (username, name.decode('utf-8'))
        for name in sorted(r_session.smembers(accounts_key))
    ]
    if len(account_key) == 0:
        return Response(json.dumps(dict(data=[])), mimetype='application/json')

    pie_data = []
    for b_acct in r_session.mget(*[
            'account:%s:%s:data' % (username, name.decode('utf-8'))
            for name in sorted(r_session.smembers(accounts_key))
    ]):
        account_info = json.loads(b_acct.decode("utf-8"))
        mid = str(account_info.get('privilege').get('mid'))

        total_value = 0
        total_value += account_info.get('mine_info').get('dev_m').get('pdc')

        pie_data.append(dict(name='矿主ID:' + mid, y=total_value))

    return Response(json.dumps(dict(data=pie_data)),
                    mimetype='application/json')
Exemplo n.º 7
0
def dashboard_speed_share():
    user = session.get('user_info')
    username = user.get('username')
    accounts_key = 'accounts:%s' % username

    account_key = ['account:%s:%s:data' % (username, name.decode('utf-8')) for name in sorted(r_session.smembers(accounts_key))]
    if len(account_key) == 0:
        return Response(json.dumps(dict(data=[])), mimetype='application/json')

    drilldown_data = []
    for b_acct in r_session.mget(*['account:%s:%s:data' % (username, name.decode('utf-8'))
                                   for name in sorted(r_session.smembers(accounts_key))]):

        account_info = json.loads(b_acct.decode("utf-8"))
        mid = str(account_info.get('privilege').get('mid'))

        total_speed = 0
        device_speed = []

        for device_info in account_info.get('device_info'):
            if device_info.get('status') != 'online':
                continue
            uploadspeed = int(int(device_info.get('dcdn_upload_speed')) / 1024)            
            #downloadspeed = int(int(device_info.get('dcdn_deploy_speed')) / 1024)
            # total_speed += downloadspeed
            total_speed += uploadspeed            
            device_speed.append(dict(name=device_info.get('device_name'), value=uploadspeed))            
            # device_speed.append(dict(name=device_info.get('device_name'), value=total_speed))

        # 显示在速度分析器圆形图表上的设备ID
        drilldown_data.append(dict(name='矿主ID:' + mid, value=total_speed, drilldown_data=device_speed))
        #drilldown_data.append(dict(name='设备名:' + device_info.get('device_name'), value=total_speed, drilldown_data=device_speed))

    return Response(json.dumps(dict(data=drilldown_data)), mimetype='application/json')
Exemplo n.º 8
0
def dashboard_speed_detail():
    user = session.get('user_info')
    username = user.get('username')
    accounts_key = 'accounts:%s' % username

    device_speed = []
    for b_acct in r_session.mget(*['account:%s:%s:data' % (username, name.decode('utf-8'))
                                   for name in sorted(r_session.smembers(accounts_key))]):

        account_info = json.loads(b_acct.decode("utf-8"))

        for device_info in account_info.get('device_info'):
            if device_info.get('status') != 'online':
                continue
            upload_speed = int(int(device_info.get('dcdn_upload_speed')) / 1024)
            deploy_speed = int(device_info.get('dcdn_download_speed') / 1024)

            device_speed.append(dict(name=device_info.get('device_name'), upload_speed=upload_speed,
                                     deploy_speed=deploy_speed))

    device_speed = sorted(device_speed, key=lambda k: k.get('name'))
    categories = []
    upload_series = dict(name='上传速度', data=[], pointPadding=0.3, pointPlacement=-0.2)
    deploy_series = dict(name='下载速度', data=[], pointPadding=0.4, pointPlacement=-0.2)
    for d_s in device_speed:
        categories.append(d_s.get('name'))
        upload_series.get('data').append(d_s.get('upload_speed'))
        deploy_series.get('data').append(d_s.get('deploy_speed'))

    return Response(json.dumps(dict(categories=categories, series=[upload_series, deploy_series])),
                    mimetype='application/json')
Exemplo n.º 9
0
def moneyAnalyzer():
    user = session.get('user_info')
    username = user.get('username')

    user_key = '%s:%s' % ('user', username)
    user_info = json.loads(r_session.get(user_key).decode('utf-8'))

    data_money = dict(balance=0,sevenDaysAverage=0,total_income_money=0,daily_profit=0,daily_outcome_total=0,outcome_total=0,estimated_recover_days=0)
    # 获取数据并计算近7日平均收入
    value = 0
    counter=0
    today = datetime.today()
    for b_data in r_session.mget(
            *['user_data:%s:%s' % (username, (today + timedelta(days=i)).strftime('%Y-%m-%d')) for i in range(-7, 0)]):
        if b_data is None:
            continue
        counter+=1
        data_money = json.loads(b_data.decode('utf-8'))
        value+=data_money.get('pdc')
    if counter!=0:
        data_money['sevenDaysAverage']=value/counter

    str_today = datetime.now().strftime('%Y-%m-%d')
    key = 'user_data:%s:%s' % (username, str_today)
    b_data = r_session.get(key)
    if b_data is not None:
        data_money['balance'] = json.loads(b_data.decode('utf-8')).get('balance')
        data_money['income'] = json.loads(b_data.decode('utf-8')).get('income')

    try:
        data_money['total_income_money'] = data_money['income'] - user_info['withdrawn_money_modify']*10000
    except KeyError:
        data_money['total_income_money'] = 0
    try:
        data_money['daily_profit'] = data_money['sevenDaysAverage']-user_info['daily_outcome']*10000
    except KeyError:
        data_money['daily_profit'] = 0
    try:
        startDay=datetime.strptime(user_info['daily_outcome_start_date'],'%Y-%m-%d')
        days_delta = (datetime.now()-startDay).days
    except KeyError:
        days_delta=0
    try:
        data_money['daily_outcome_total'] = user_info['daily_outcome']*days_delta*10000
    except KeyError:
        data_money['daily_outcome_total'] = 0
    try:
        data_money['outcome_total'] = data_money['daily_outcome_total'] + (user_info['hardware_outcome'] + user_info['other_outcome'])*10000
    except KeyError:
        data_money['outcome_total'] = 0
    data_money['total_profit'] = (data_money['total_income_money'] - data_money['outcome_total'])
    if data_money['daily_profit']!=0:
        data_money['estimated_recover_days'] = int(data_money['total_profit']/data_money['daily_profit'])*(-1)

    return render_template('money.html', data_money=data_money,user_info=user_info)
Exemplo n.º 10
0
def analyzer_last_30_day():
    user = session.get('user_info')
    username = user.get('username')

    value = []
    today = datetime.today()
    for b_data in r_session.mget(
            *['user_data:%s:%s' % (username, (today + timedelta(days=i)).strftime('%Y-%m-%d')) for i in range(-31, 0)]):
        if b_data is None:
            continue
        data = json.loads(b_data.decode('utf-8'))
        update_date = datetime.strptime(data.get('updated_time')[0:10], '%Y-%m-%d')

        value.append([int(time.mktime(update_date.timetuple()) * 1000), data.get('pdc')])

    return Response(json.dumps(dict(value=value)), mimetype='application/json')
Exemplo n.º 11
0
def analyzer_last_30_day():
    user = session.get('user_info')
    username = user.get('username')

    value = []
    today = datetime.today()
    for b_data in r_session.mget(
            *['user_data:%s:%s' % (username, (today + timedelta(days=i)).strftime('%Y-%m-%d')) for i in range(-31, 0)]):
        if b_data is None:
            continue
        data = json.loads(b_data.decode('utf-8'))
        update_date = datetime.strptime(data.get('updated_time')[0:10], '%Y-%m-%d')

        value.append([int(time.mktime(update_date.timetuple()) * 1000), data.get('pdc')])

    return Response(json.dumps(dict(value=value)), mimetype='application/json')
Exemplo n.º 12
0
def admin_user():
    recent_login_users = []
    users = list()

    for b_user in r_session.mget(*['user:%s' % name.decode('utf-8') for name in sorted(r_session.smembers('users'))]):
        if b_user is None:
            continue
        user = json.loads(b_user.decode('utf-8'))
        if user.get('login_as_time') is not None:
            if (datetime.now() - datetime.strptime(user.get('login_as_time'), '%Y-%m-%d %H:%M:%S')).days < 3:
                recent_login_users.append(user)
        users.append(user)

    return render_template('admin_user.html',
                           recent_login_users=sorted(recent_login_users, key=lambda k: k['login_as_time'],
                                                     reverse=True),
                           users=users)
Exemplo n.º 13
0
def dashboard_today_income_share():
    user = session.get('user_info')
    username = user.get('username')
    accounts_key = 'accounts:%s' % username

    pie_data = []
    for b_acct in r_session.mget(*['account:%s:%s:data' % (username, name.decode('utf-8'))
                                   for name in sorted(r_session.smembers(accounts_key))]):
        account_info = json.loads(b_acct.decode("utf-8"))
        mid = str(account_info.get('privilege').get('mid'))

        total_value = 0
        total_value += account_info.get('mine_info').get('dev_m').get('pdc')

        pie_data.append(dict(name='矿主ID:' + mid, y=total_value))

    return Response(json.dumps(dict(data=pie_data)), mimetype='application/json')
Exemplo n.º 14
0
def dashboard_today_income_share():
    user = session.get("user_info")
    username = user.get("username")
    accounts_key = "accounts:%s" % username

    pie_data = []
    for b_acct in r_session.mget(
        *["account:%s:%s:data" % (username, name.decode("utf-8")) for name in sorted(r_session.smembers(accounts_key))]
    ):
        account_info = json.loads(b_acct.decode("utf-8"))
        mid = str(account_info.get("privilege").get("mid"))

        total_value = 0
        total_value += account_info.get("mine_info").get("dev_m").get("pdc")
        total_value += account_info.get("mine_info").get("dev_pc").get("pdc")

        pie_data.append(dict(name="矿主ID:" + mid, y=total_value))

    return Response(json.dumps(dict(data=pie_data)), mimetype="application/json")
Exemplo n.º 15
0
def moneyAnalyzer():
    user = session.get('user_info')
    username = user.get('username')

    user_key = '%s:%s' % ('user', username)
    user_info = json.loads(r_session.get(user_key).decode('utf-8'))

    data_money = dict(balance=0,
                      sevenDaysAverage=0,
                      total_income_money=0,
                      daily_profit=0,
                      daily_outcome_total=0,
                      outcome_total=0,
                      estimated_recover_days=0)
    # 获取数据并计算近7日平均收入
    value = 0
    counter = 0
    today = datetime.today()
    for b_data in r_session.mget(*[
            'user_data:%s:%s' %
        (username, (today + timedelta(days=i)).strftime('%Y-%m-%d'))
            for i in range(-7, 0)
    ]):
        if b_data is None:
            continue
        counter += 1
        data_money = json.loads(b_data.decode('utf-8'))
        value += data_money.get('pdc')
    if counter != 0:
        data_money['sevenDaysAverage'] = value / counter

    str_today = datetime.now().strftime('%Y-%m-%d')
    key = 'user_data:%s:%s' % (username, str_today)
    b_data = r_session.get(key)
    if b_data is not None:
        data_money['balance'] = json.loads(
            b_data.decode('utf-8')).get('balance')
        data_money['income'] = json.loads(b_data.decode('utf-8')).get('income')

    try:
        data_money['total_income_money'] = data_money[
            'income'] - user_info['withdrawn_money_modify'] * 10000
    except KeyError:
        data_money['total_income_money'] = 0
    try:
        data_money['daily_profit'] = data_money[
            'sevenDaysAverage'] - user_info['daily_outcome'] * 10000
    except KeyError:
        data_money['daily_profit'] = 0
    try:
        startDay = datetime.strptime(user_info['daily_outcome_start_date'],
                                     '%Y-%m-%d')
        days_delta = (datetime.now() - startDay).days
    except KeyError:
        days_delta = 0
    try:
        data_money['daily_outcome_total'] = user_info[
            'daily_outcome'] * days_delta * 10000
    except KeyError:
        data_money['daily_outcome_total'] = 0
    try:
        data_money['outcome_total'] = data_money['daily_outcome_total'] + (
            user_info['hardware_outcome'] + user_info['other_outcome']) * 10000
    except KeyError:
        data_money['outcome_total'] = 0
    data_money['total_profit'] = (data_money['total_income_money'] -
                                  data_money['outcome_total'])
    if data_money['daily_profit'] != 0:
        data_money['estimated_recover_days'] = int(
            data_money['total_profit'] / data_money['daily_profit']) * (-1)

    return render_template('money.html',
                           data_money=data_money,
                           user_info=user_info)
Exemplo n.º 16
0
def admin_user():
    user_filter = ''
    if session.get('user_filter') is not None:
        user_filter = session.get('user_filter')
        session['user_filter'] = None

    err_msg = None
    if session.get('error_message') is not None:
        err_msg = session.get('error_message')
        session['error_message'] = None

    info_msg = None
    if session.get('info_message') is not None:
        info_msg = session.get('info_message')
        session['info_message'] = None

    users = set()

    for b_user in r_session.mget(*[
            'user:%s' % name.decode('utf-8')
            for name in sorted(r_session.smembers('users'))
    ]):
        if b_user is None:
            continue
        user = json.loads(b_user.decode('utf-8'))
        user['is_online'] = r_session.exists('user:%s:is_online' %
                                             user.get('username'))  # 临时寄存数据
        user_show = {}
        user_show['username'] = user.get('username')
        if user.get('email') is None:
            user['email'] = ''
        user_show['email'] = user.get('email')
        user_show['created_time'] = user.get('created_time')
        if user.get('expire_date') is None:
            user['expire_date'] = ''
        user_show['expire_date'] = user.get('expire_date')
        if user.get('login_time') is None:
            user['login_time'] = ''
        user_show['login_time'] = user.get('login_time')
        if user.get('max_account_no') is None:
            user['max_account_no'] = ''
        user_show['max_account_no'] = user.get('max_account_no')
        if user['is_online']:
            user_show['is_online'] = '<span class="label label-info">在线</span>'
        else:
            user_show[
                'is_online'] = '<span class="label label-danger">离线</span>'
        if user['active']:
            user_show['active'] = 'O'
        else:
            user_show['active'] = 'X'
        if user.get('is_admin'):
            user_show['is_admin'] = 'O'
        else:
            user_show['is_admin'] = 'X'
        user_show['collector'] = '''
<div class="btn-group">
    <div style="display: inline-block">
        <button aria-expanded="false" data-toggle="dropdown" class="btn ''' + (
            'btn-warning' if user.get('collector') == None else
            'btn-info') + ''' btn-xs dropdown-toggle">
            ''' + ('未配置' if user.get('collector') == None else
                   user.get('collector')) + '''<span class="caret"></span>
        </button>
        <ul class="dropdown-menu">
    '''
        for server in r_session.smembers('collector_working'):
            server = server.decode('utf-8')
            user_show['collector'] = user_show['collector'] + '''
            <li>
                <form style="margin:5px 5px 0px 5px" role="form" action="/admin/change_property/collector/''' + server + '/' + user[
                'username'] + '''" method="post">
                    <button type="submit" class="btn btn-outline btn-primary btn-block">''' + server + '''</button>
                </form>
            </li>
    '''
        user_show['collector'] = user_show['collector'] + '''
        </ul>
    </div>
</div>
'''
        user_show['operation'] = '''
<div style="display: inline-block">
    <a href="/admin_user/''' + user[
            'username'] + '''" class="btn btn-outline btn-default btn-xs">编辑</a>
</div>
<form style="display: inline-block" role="form" action="/admin/login_as/''' + user[
                'username'] + '''" method="post">
    <button type="submit" class="btn btn-outline btn-default btn-xs">登陆</button>
</form>
    '''
        json_user = json.dumps(user_show)
        if user_filter == '':
            users.add(json_user)
            continue
        user_filters = set(user_filter.split())
        users.add(json_user)
        if '在线' in user_filters:
            user_filters.remove('在线')
            if not user['is_online']:
                users.discard(json_user)
        if '离线' in user_filters:
            user_filters.remove('离线')
            if user['is_online']:
                users.discard(json_user)
        if '禁用' in user_filters:
            user_filters.remove('禁用')
            if user['active']:
                users.discard(json_user)
        if '启用' in user_filters:
            user_filters.remove('启用')
            if not user['active']:
                users.discard(json_user)
        if '快过期' in user_filters:
            user_filters.remove('快过期')
            if user['expire_date'] != '' and datetime.strptime(
                    user['expire_date'], '%Y-%m-%d').date() > (
                        datetime.now() + timedelta(days=7)).date():
                users.discard(json_user)
            elif 'is_admin' in user.keys() and user['is_admin']:
                users.discard(json_user)
        if '已过期' in user_filters:
            user_filters.remove('已过期')
            if user['expire_date'] != '' and datetime.strptime(
                    user['expire_date'],
                    '%Y-%m-%d').date() > datetime.now().date():
                users.discard(json_user)
            elif 'is_admin' in user.keys() and user['is_admin']:
                users.discard(json_user)
        if '新用户' in user_filters:
            user_filters.remove('新用户')
            if 'created_time' in user.keys() and datetime.strptime(
                    user['created_time'], '%Y-%m-%d %H:%M:%S').date() <= (
                        datetime.now() + timedelta(days=-3)).date():
                users.discard(json_user)
        if '老用户' in user_filters:
            user_filters.remove('老用户')
            if 'created_time' in user.keys() and datetime.strptime(
                    user['created_time'], '%Y-%m-%d %H:%M:%S').date() > (
                        datetime.now() + timedelta(days=-3)).date():
                users.discard(json_user)
        if '无矿机' in user_filters:
            user_filters.remove('无矿机')
            accounts_count = r_session.smembers('accounts:%s' %
                                                user.get('username'))
            if accounts_count is not None and len(accounts_count) != 0:
                users.discard(json_user)
        if '未启用矿机' in user_filters:
            user_filters.remove('未启用矿机')
            accounts = r_session.smembers('accounts:%s' % user.get('username'))
            if accounts is not None and len(accounts) != 0:
                has_active_account = False
                for b_xl_account in accounts:
                    xl_account = b_xl_account.decode('utf-8')
                    account = json.loads(
                        r_session.get('account:%s:%s' %
                                      (user.get('username'),
                                       xl_account)).decode('utf-8'))
                    if account.get('active'):
                        has_active_account = True
                        break
                if has_active_account:
                    users.discard(json_user)
            else:
                users.discard(json_user)
        if user_filters:
            for c in user_filters:
                if json_user.find(c) == -1:
                    users.discard(json_user)
    user_list = list()
    for user in users:
        user_list.append(json.loads(user))
    user_list.sort(key=lambda k: k['username'])
    user_list.sort(key=lambda k: k['is_admin'], reverse=True)
    return render_template('admin_user.html',
                           users=user_list,
                           err_msg=err_msg,
                           info_msg=info_msg,
                           user_filter=user_filter)
Exemplo n.º 17
0
def admin_user():
    user_filter = ''
    if session.get('user_filter') is not None:
        user_filter = session.get('user_filter')
        session['user_filter'] = None

    err_msg = None
    if session.get('error_message') is not None:
        err_msg = session.get('error_message')
        session['error_message'] = None

    info_msg = None
    if session.get('info_message') is not None:
        info_msg = session.get('info_message')
        session['info_message'] = None

    users = set()

    for b_user in r_session.mget(*['user:%s' % name.decode('utf-8') for name in sorted(r_session.smembers('users'))]):
        if b_user is None:
            continue
        user = json.loads(b_user.decode('utf-8'))
        user['is_online'] = r_session.exists('user:%s:is_online' % user.get('username')) # 临时寄存数据
        user_show={}
        user_show['username'] = user.get('username')
        if user.get('email') is None:
            user['email']=''
        user_show['email'] = user.get('email')
        user_show['created_time'] = user.get('created_time')
        if user.get('expire_date') is None:
            user['expire_date']=''
        user_show['expire_date'] = user.get('expire_date')
        if user.get('login_time') is None:
            user['login_time']=''
        user_show['login_time'] = user.get('login_time')
        if user.get('max_account_no') is None:
            user['max_account_no']=''
        user_show['max_account_no'] = user.get('max_account_no')
        if user['is_online']:
            user_show['is_online'] = '<span class="label label-info">在线</span>'
        else:
            user_show['is_online'] = '<span class="label label-danger">离线</span>'
        if user['active']:
            user_show['active'] = 'O'
        else:
            user_show['active'] = 'X'
        if user.get('is_admin'):
            user_show['is_admin']='O'
        else:
            user_show['is_admin']='X'
        user_show['collector']='''
<div class="btn-group">
    <div style="display: inline-block">
        <button aria-expanded="false" data-toggle="dropdown" class="btn ''' + ('btn-warning' if user.get('collector')==None else 'btn-info') + ''' btn-xs dropdown-toggle">
            ''' + ('未配置' if user.get('collector')==None else user.get('collector')) + '''<span class="caret"></span>
        </button>
        <ul class="dropdown-menu">
    '''
        for server in r_session.smembers('collector_working'):
            server=server.decode('utf-8')
            user_show['collector']=user_show['collector'] + '''
            <li>
                <form style="margin:5px 5px 0px 5px" role="form" action="/admin/change_property/collector/''' + server + '/' + user['username'] + '''" method="post">
                    <button type="submit" class="btn btn-outline btn-primary btn-block">''' + server + '''</button>
                </form>
            </li>
    '''
        user_show['collector']=user_show['collector'] + '''
        </ul>
    </div>
</div>
'''
        user_show['operation']='''
<div style="display: inline-block">
    <a href="/admin_user/''' + user['username'] + '''" class="btn btn-outline btn-default btn-xs">编辑</a>
</div>
<form style="display: inline-block" role="form" action="/admin/login_as/''' + user['username'] + '''" method="post">
    <button type="submit" class="btn btn-outline btn-default btn-xs">登陆</button>
</form>
    '''
        json_user=json.dumps(user_show)
        if user_filter == '':
            users.add(json_user)
            continue
        user_filters=set(user_filter.split())
        users.add(json_user)
        if '在线' in user_filters:
            user_filters.remove('在线')
            if not user['is_online']:
                users.discard(json_user)
        if '离线' in user_filters:
            user_filters.remove('离线')
            if user['is_online']:
                users.discard(json_user)
        if '禁用' in user_filters:
            user_filters.remove('禁用')
            if user['active']:
                users.discard(json_user)
        if '启用' in user_filters:
            user_filters.remove('启用')
            if not user['active']:
                users.discard(json_user)
        if '快过期' in user_filters:
            user_filters.remove('快过期')
            if user['expire_date'] != '' and datetime.strptime(user['expire_date'],'%Y-%m-%d').date() > (datetime.now() + timedelta(days=7)).date():
                users.discard(json_user)
            elif 'is_admin'  in user.keys() and user['is_admin']:
                users.discard(json_user)
        if '已过期' in user_filters:
            user_filters.remove('已过期')
            if user['expire_date'] != '' and datetime.strptime(user['expire_date'],'%Y-%m-%d').date() > datetime.now().date():
                users.discard(json_user)
            elif 'is_admin'  in user.keys() and user['is_admin']:
                users.discard(json_user)
        if '新用户' in user_filters:
            user_filters.remove('新用户')
            if 'created_time' in user.keys() and datetime.strptime(user['created_time'],'%Y-%m-%d %H:%M:%S').date() <= (datetime.now() + timedelta(days=-3)).date():
                users.discard(json_user)
        if '老用户' in user_filters:
            user_filters.remove('老用户')
            if 'created_time' in user.keys() and datetime.strptime(user['created_time'],'%Y-%m-%d %H:%M:%S').date() > (datetime.now() + timedelta(days=-3)).date():
                users.discard(json_user)
        if '无矿机' in user_filters:
            user_filters.remove('无矿机')
            accounts_count = r_session.smembers('accounts:%s' % user.get('username'))
            if accounts_count is not None and len(accounts_count) != 0:
                users.discard(json_user)
        if '未启用矿机' in user_filters:
            user_filters.remove('未启用矿机')
            accounts = r_session.smembers('accounts:%s' % user.get('username'))
            if accounts is not None and len(accounts) != 0:
                has_active_account = False
                for b_xl_account in accounts:
                    xl_account = b_xl_account.decode('utf-8')
                    account = json.loads(r_session.get('account:%s:%s' % (user.get('username'), xl_account)).decode('utf-8'))
                    if account.get('active'):
                        has_active_account = True
                        break
                if has_active_account:
                    users.discard(json_user)
            else:
                users.discard(json_user)
        if user_filters:
            for c in user_filters:
                if json_user.find(c) == -1:
                    users.discard(json_user)
    user_list=list()
    for user in users:
        user_list.append(json.loads(user))
    user_list.sort(key=lambda k: k['username'])
    user_list.sort(key=lambda k: k['is_admin'],reverse=True)
    return render_template('admin_user.html',users=user_list,err_msg=err_msg,info_msg=info_msg,user_filter=user_filter)