def img_download(request): """ 二维码下载 :param request: :return: """ user_id = request.session.get('user_id', '') # 从session中获取user_id if get_user(user_id): if request.method == 'GET': name = request.GET.get('log_file', '') name_path = os.path.join(settings.MEDIA_ROOT, name) def file_iterator(file_name, chunk_size=512): with open(file_name, 'rb') as f: while True: c = f.read(chunk_size) if c: yield c else: break response = StreamingHttpResponse(file_iterator(name_path)) response['Content-Type'] = 'application/octet-stream' response[ 'Content-Disposition'] = 'attachment;filename="{0}"'.format( name_path) log.info('用户 {} 下载的二维码:{}'.format( user_id, 'http://39.105.136.231/media/{}'.format(name))) return response else: request.session['login_from'] = '/index/' return render(request, 'user/login_action.html')
def search_guest(request): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: username = request.session.get('user', '') search_guest = request.GET.get('name', '') guest_list = Guest.objects.filter( Q(phone__contains=search_guest) | Q(realname__contains=search_guest)) # Q 与或非 if not guest_list: # 增加 发布会名称 查询 联表查询 guest_list = [] event_list = Event.objects.filter(name__contains=search_guest) for event_id in event_list: guest = Guest.objects.filter(event_id=event_id) guest_list.extend( guest) # extend() 只能接收 list,且把这个 list 中的每个元素添加到原 list 中 page = request.GET.get('page') contacts = paginator(guest_list, page) return render(request, 'sign/guest_manage.html', { 'user': username, 'guests': contacts, 'search_guest': search_guest })
def img_download(request): # do something... user_id = request.session.get('user_id', '') # 从session中获取user_id if get_user(user_id): if request.method == 'GET': name = request.GET.get('log_file', '') name_path = os.path.join('/home/lixiaofeng/EasyTest/media', name) def file_iterator(file_name, chunk_size=512): with open(file_name, 'rb') as f: while True: c = f.read(chunk_size) if c: yield c else: break response = StreamingHttpResponse(file_iterator(name_path)) response['Content-Type'] = 'application/octet-stream' response[ 'Content-Disposition'] = 'attachment;filename="{0}"'.format( name_path) log.info('用户 {} 下载的二维码:{}'.format(user_id, name_path)) return response else: request.session['login_from'] = '/index/' return render(request, 'user/login_action.html')
def sign_index_action(request, eid): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: event = get_object_or_404(Event, id=eid) phone = request.POST.get('phone', '') result = Guest.objects.filter(phone=phone) if not result: return render(request, 'sign/sign_index.html', { 'event': event, 'hint': 'phone error.' }) result = Guest.objects.filter(phone=phone, event_id=eid) if not result: return render(request, 'sign/sign_index.html', { 'event': event, 'hint': 'event id or phone error.' }) result = Guest.objects.get(phone=phone, event_id=eid) if result.sign: return render(request, 'sign/sign_index.html', { 'event': event, 'hint': 'user has sign in.' }) else: Guest.objects.filter(phone=phone, event_id=eid).update(sign='1') return render(request, 'sign/sign_index.html', { 'event': event, 'hint': 'sign in success!', 'guest': result })
def sign_index(request, eid): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: event = get_object_or_404(Event, id=eid) # 如果查询不存在,返回404异常 return render(request, 'sign/sign_index.html', {'event': event})
def delete_all(request): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: Event.objects.all().delete() Guest.objects.all().delete() log.info('默认服务==> 用户 {} ,清空测试数据完成!'.format(user_id)) return HttpResponseRedirect('/api/event_manage/')
def guest_manage(request): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: username = request.session.get('user', '') guest_list = Guest.objects.all() page = request.GET.get('page') contacts = paginator(guest_list, page) return render(request, 'sign/guest_manage.html', { 'user': username, 'guests': contacts })
def event_manage(request): # username = request.COOKIES.get('user', '') # 读取cookie user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: username = request.session.get('user', '') # 读取session event_list = Event.objects.all() page = request.GET.get('page') contacts = paginator(event_list, page) return render(request, 'sign/event_manage.html', { 'user': username, 'events': contacts })
def search_name(request): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/project/' return render(request, 'user/login_action.html') else: username = request.session.get('user', '') search_name = request.GET.get('name', '') event_list = Event.objects.filter(name__contains=search_name) # 包含 page = request.GET.get('page') contacts = paginator(event_list, page) return render(request, 'sign/event_manage.html', { 'user': username, 'events': contacts, 'search_name': search_name })
def index(request): if request.method == 'POST': user_id = request.session.get('user_id', '') # 从session中获取user_id if get_user(user_id): url = request.POST.get('url', '') if url: qr_code_name = gr_code(url) log.info('用户 {} 生成二维码 {}-->{}'.format(user_id, qr_code_name, url)) return JsonResponse(str(qr_code_name), safe=False) else: return HttpResponse('0') else: project_num = Project.objects.aggregate( Count('prj_id'))['prj_id__count'] env_num = Environment.objects.aggregate( Count('env_id'))['env_id__count'] interface_num = Interface.objects.aggregate( Count('if_id'))['if_id__count'] case_num = Case.objects.aggregate(Count('case_id'))['case_id__count'] plan_num = Plan.objects.aggregate(Count('plan_id'))['plan_id__count'] sign_num = Sign.objects.aggregate(Count('sign_id'))['sign_id__count'] report_num = Report.objects.aggregate( Count('report_id'))['report_id__count'] periodic_num = PeriodicTask.objects.aggregate(Count('id'))['id__count'] crontabSchedule_num = CrontabSchedule.objects.aggregate( Count('id'))['id__count'] # username = request.session.get('user', '') total = get_total_values() info = { 'project_num': project_num, 'env_num': env_num, 'interface_num': interface_num, 'case_num': case_num, 'plan_num': plan_num, 'total': total, 'sign_num': sign_num, 'report_num': report_num, 'task_num': periodic_num + crontabSchedule_num } return render(request, "index.html", info)
def mock_api(request): user_id = request.session.get('user_id', '') if not get_user(user_id): request.session['login_from'] = '/base/plan/' return render(request, 'user/login_action.html') else: patt = re.compile('\d+') if request.method == 'POST': data = eval(request.body.decode('utf-8')) msg = insert_mock_data(**data) msg = json.dumps(msg) return HttpResponse(msg) elif request.method == "DELETE": id = patt.findall(request.get_full_path())[0] Api.objects.filter(id=int(id)).delete() msg = json.dumps(VALID) return HttpResponse(msg) elif request.method == 'PUT': id = patt.findall(request.get_full_path())[0] data = eval(request.body.decode('utf-8')) msg = update_mock_data(id, **json.loads(data)) msg = json.dumps(msg) return HttpResponse(msg) else: prj_list = Project.objects.all() api_name = request.GET.get('api_name', '') if api_name: api_info = Api.objects.filter(name__contains=api_name) else: api_info = Api.objects.all() api_list = [] for api in api_info: if api in api_list: pass else: api_list.append(api.project_id) api_prj_list = Project.objects.filter(prj_id__in=api_list) info = { 'prj_list': prj_list, 'api_info': api_info, 'api_prj_list': api_prj_list } return render(request, 'mocks/index.html', info)
def index(request): """ 首页展示数据 :param request: :return: """ user_id = request.session.get('user_id', '') # 从session中获取user_id if not user_id: return render(request, 'user/login_action.html') if request.method == 'POST': if get_user(user_id): url = request.POST.get('url', '') path = request.POST.get('path', '') appid = request.POST.get('appid', '') appsecret = request.POST.get('appsecret', '') if appid != '' and appsecret != '': if path == '': path = '?from=1' url = {'path': path} qr_code_name = getACodeImage(appid, appsecret, url) if not qr_code_name: log.info('用户 {} 生成小程序码 失败!appid、appsecret错误,未返回正确的token!') return HttpResponse('2') else: log.info('用户 {} 生成小程序码 {}-->{}'.format( user_id, qr_code_name, url)) return JsonResponse(str(qr_code_name), safe=False) elif url != '': qr_code_name = gr_code(url) log.info('用户 {} 生成二维码 {}-->{}'.format(user_id, qr_code_name, url)) return JsonResponse(str(qr_code_name), safe=False) else: return HttpResponse('1') else: return HttpResponse('0') elif request.method == 'GET': plan_list = [] prj_list = is_superuser(user_id, type='list') plan = Plan.objects.filter(project_id__in=prj_list) for plan_ in plan: plan_list.append(plan_.plan_id) superuser = User.objects.get(id=user_id).is_superuser if superuser: project_num = Project.objects.aggregate( Count('prj_id'))['prj_id__count'] else: project_num = Project.objects.filter(user_id=user_id).aggregate( Count('prj_id'))['prj_id__count'] env_num = Environment.objects.filter( project_id__in=prj_list).aggregate( Count('env_id'))['env_id__count'] interface_num = Interface.objects.filter( project_id__in=prj_list).aggregate(Count('if_id'))['if_id__count'] case_num = Case.objects.filter(project_id__in=prj_list).aggregate( Count('case_id'))['case_id__count'] plan_num = Plan.objects.filter(project_id__in=prj_list).aggregate( Count('plan_id'))['plan_id__count'] sign_num = Sign.objects.aggregate(Count('sign_id'))['sign_id__count'] report_num = Report.objects.filter(plan_id__in=plan_list).aggregate( Count('report_id'))['report_id__count'] periodic_num = PeriodicTask.objects.aggregate(Count('id'))['id__count'] crontabSchedule_num = CrontabSchedule.objects.aggregate( Count('id'))['id__count'] user_num = User.objects.aggregate(Count('id'))['id__count'] total = get_total_values(user_id) if 'HTTP_X_FORWARDED_FOR' in request.META: # 在线人数 ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] online_ips = cache.get("online_ips", []) if online_ips: online_ips = list(cache.get_many(online_ips).keys()) cache.set(ip, 0, 5 * 60) if ip not in online_ips: online_ips.append(ip) cache.set("online_ips", online_ips) log.info('同时在线人员:{}'.format(cache.get("online_ips", []))) info = { 'project_num': project_num, 'env_num': env_num, 'interface_num': interface_num, 'case_num': case_num, 'plan_num': plan_num, 'total': total, 'sign_num': sign_num, 'report_num': report_num, "online_ips": len(cache.get("online_ips", [])), 'task_num': periodic_num + crontabSchedule_num, 'user_num': user_num } return render(request, "index.html", info)