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")
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')
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" )
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')
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)
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')
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')
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')
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)
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')
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)
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')
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")
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)
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)
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)