예제 #1
0
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')
예제 #2
0
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
        })
예제 #3
0
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')
예제 #4
0
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
            })
예제 #5
0
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})
예제 #6
0
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/')
예제 #7
0
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
        })
예제 #8
0
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
        })
예제 #9
0
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
        })
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)