コード例 #1
0
ファイル: views.py プロジェクト: LeoQuote/archer
def queryapplylist(request):
    user = request.user
    # 获取项目组
    group_list = user_groups(user)

    context = {'group_list': group_list}
    return render(request, 'queryapplylist.html', context)
コード例 #2
0
ファイル: views.py プロジェクト: LeoQuote/archer
def submitSql(request):
    user = request.user
    # 获取组信息
    group_list = user_groups(user)

    # 获取所有有效用户,通知对象
    active_user = Users.objects.filter(is_active=1)

    context = {'active_user': active_user, 'group_list': group_list}
    return render(request, 'submitSql.html', context)
コード例 #3
0
ファイル: sql_review.py プロジェクト: xftbee/archeryold
def can_timingtask(user, workflow_id):
    workflow_detail = SqlWorkflow.objects.get(id=workflow_id)
    result = False
    # 只有审核通过和定时执行的数据才可以执行
    if workflow_detail.status in [Const.workflowStatus['pass'], Const.workflowStatus['timingtask']]:
        # 当前登录用户必须为有执行权限的组内用户
        group_ids = [group.group_id for group in user_groups(user)]
        if workflow_detail.group_id in group_ids and user.has_perm('sql.sql_execute'):
            result = True
    return result
コード例 #4
0
    def auditlist(self, user, workflow_type, offset=0, limit=14, search=''):
        result = {'status': 0, 'msg': '', 'data': []}
        # 先获取用户所在资源组列表
        group_list = user_groups(user)
        group_ids = [group.group_id for group in group_list]
        # 再获取用户所在权限组列表
        if user.is_superuser:
            auth_group_ids = [group.id for group in Group.objects.all()]
        else:
            auth_group_ids = [
                group.id for group in Group.objects.filter(user=user)
            ]

        # 只返回当前待自己审核的数据
        if workflow_type == 0:
            auditlist = WorkflowAudit.objects.filter(
                workflow_title__contains=search,
                current_status=WorkflowDict.workflow_status['audit_wait'],
                group_id__in=group_ids,
                current_audit__in=auth_group_ids).order_by(
                    '-audit_id')[offset:limit].values(
                        'audit_id', 'workflow_type', 'workflow_title',
                        'create_user_display', 'create_time', 'current_status',
                        'audit_auth_groups', 'current_audit', 'group_name')
            auditlistCount = WorkflowAudit.objects.filter(
                workflow_title__contains=search,
                current_status=WorkflowDict.workflow_status['audit_wait'],
                group_id__in=group_ids,
                current_audit__in=auth_group_ids).count()
        else:
            auditlist = WorkflowAudit.objects.filter(
                workflow_title__contains=search,
                workflow_type=workflow_type,
                current_status=WorkflowDict.workflow_status['audit_wait'],
                group_id__in=group_ids,
                current_audit__in=auth_group_ids).order_by(
                    '-audit_id')[offset:limit].values(
                        'audit_id', 'workflow_type', 'workflow_title',
                        'create_user_display', 'create_time', 'current_status',
                        'audit_auth_groups', 'current_audit', 'group_name')
            auditlistCount = WorkflowAudit.objects.filter(
                workflow_title__contains=search,
                workflow_type=workflow_type,
                current_status=WorkflowDict.workflow_status['audit_wait'],
                group_id__in=group_ids,
                current_audit__in=auth_group_ids).count()

        result['data'] = {
            'auditlist': auditlist,
            'auditlistCount': auditlistCount
        }
        return result
コード例 #5
0
    def audit_todo(self, user):
        # 先获取用户所在资源组列表
        group_list = user_groups(user)
        group_ids = [group.group_id for group in group_list]
        # 再获取用户所在权限组列表
        if user.is_superuser:
            auth_group_ids = [group.id for group in Group.objects.all()]
        else:
            auth_group_ids = [group.id for group in Group.objects.filter(user=user)]

        return WorkflowAudit.objects.filter(
            current_status=WorkflowDict.workflow_status['audit_wait'],
            group_id__in=group_ids,
            current_audit__in=auth_group_ids).count()
コード例 #6
0
ファイル: sql_review.py プロジェクト: vperson/archer
def can_cancel(user, workflow_id):
    workflow_detail = SqlWorkflow.objects.get(id=workflow_id)
    result = False
    # 结束的工单不可终止
    if workflow_detail.status == Const.workflowStatus['manreviewing']:
        from sql.utils.workflow import Workflow
        if Workflow.can_review(user, workflow_id, 2) or user.username == workflow_detail.engineer:
            result = True
    elif workflow_detail.status in [Const.workflowStatus['pass'], Const.workflowStatus['timingtask']]:
        # 当前登录用户必须为有审核权限的组内用户
        group_ids = [group.group_id for group in user_groups(user)]
        if workflow_detail.group_id in group_ids and user.has_perm('sql.sql_review'):
            result = True
    return result
コード例 #7
0
ファイル: query.py プロジェクト: vperson/archer
def getqueryapplylist(request):
    # 获取用户信息
    user = request.user

    limit = int(request.POST.get('limit'))
    offset = int(request.POST.get('offset'))
    limit = offset + limit

    # 获取搜索参数
    search = request.POST.get('search')
    if search is None:
        search = ''

    # 获取列表数据,申请人只能查看自己申请的数据,管理员可以看到全部数据,审核人可以看到自己审核的数据
    if user.is_superuser:
        lists = QueryPrivilegesApply.objects.all().filter(
            Q(title__contains=search) | Q(user_display__contains=search)).order_by('-apply_id')[
                offset:limit].values(
            'apply_id', 'title', 'instance_name', 'db_list', 'priv_type', 'table_list', 'limit_num', 'valid_date',
            'user_display', 'status', 'create_time', 'group_name'
        )
        count = QueryPrivilegesApply.objects.all().filter(title__contains=search).count()
    elif user.has_perm('sql.query_review'):
        # 先获取用户所在资源组列表
        group_list = user_groups(user)
        group_ids = [group.group_id for group in group_list]
        lists = QueryPrivilegesApply.objects.filter(group_id__in=group_ids).filter(
            Q(title__contains=search) | Q(user_display__contains=search)).order_by('-apply_id')[offset:limit].values(
            'apply_id', 'title', 'instance_name', 'db_list', 'priv_type', 'table_list', 'limit_num', 'valid_date',
            'user_display', 'status', 'create_time', 'group_name'
        )
        count = QueryPrivilegesApply.objects.filter(group_id__in=group_ids).filter(
            Q(title__contains=search) | Q(user_display__contains=search)).count()
    else:
        lists = QueryPrivilegesApply.objects.filter(user_name=user.username).filter(
            Q(title__contains=search) | Q(user_display__contains=search)).order_by('-apply_id')[offset:limit].values(
            'apply_id', 'title', 'instance_name', 'db_list', 'priv_type', 'table_list', 'limit_num', 'valid_date',
            'user_display', 'status', 'create_time', 'group_name'
        )
        count = QueryPrivilegesApply.objects.filter(user_name=user.username).filter(
            Q(title__contains=search) | Q(user_display__contains=search)).count()

    # QuerySet 序列化
    rows = [row for row in lists]

    result = {"total": count, "rows": rows}
    # 返回查询结果
    return HttpResponse(json.dumps(result, cls=ExtendJSONEncoder, bigint_as_string=True),
                        content_type='application/json')
コード例 #8
0
def sqlworkflow_list(request):
    limit = int(request.POST.get('limit'))
    offset = int(request.POST.get('offset'))
    limit = offset + limit
    search = request.POST.get('search', '')

    # 获取筛选参数
    navStatus = request.POST.get('navStatus')

    # 管理员可以看到全部工单,其他人能看到自己提交和审核的工单
    user = request.user

    # 全部工单里面包含搜索条件
    if navStatus == 'all':
        if user.is_superuser == 1:
            workflow_list = SqlWorkflow.objects.filter(
                Q(engineer_display__contains=search)
                | Q(workflow_name__contains=search)).order_by(
                    '-create_time')[offset:limit].values(
                        "id", "workflow_name", "engineer_display", "status",
                        "is_backup", "create_time", "instance_name", "db_name",
                        "group_name", "sql_syntax")
            count = SqlWorkflow.objects.filter(
                Q(engineer_display__contains=search)
                | Q(workflow_name__contains=search)).count()
        elif user.has_perm('sql.sql_review') or user.has_perm(
                'sql.sql_execute'):
            # 先获取用户所在资源组列表
            group_list = user_groups(user)
            group_ids = [group.group_id for group in group_list]
            workflow_list = SqlWorkflow.objects.filter(
                group_id__in=group_ids).filter(
                    Q(engineer_display__contains=search)
                    | Q(workflow_name__contains=search)).order_by(
                        '-create_time')[offset:limit].values(
                            "id", "workflow_name", "engineer_display",
                            "status", "is_backup", "create_time",
                            "instance_name", "db_name", "group_name",
                            "sql_syntax")
            count = SqlWorkflow.objects.filter(group_id__in=group_ids).filter(
                Q(engineer_display__contains=search)
                | Q(workflow_name__contains=search)).count()
        else:
            workflow_list = SqlWorkflow.objects.filter(
                engineer=user.username).filter(
                    workflow_name__contains=search).order_by(
                        '-create_time')[offset:limit].values(
                            "id", "workflow_name", "engineer_display",
                            "status", "is_backup", "create_time",
                            "instance_name", "db_name", "group_name",
                            "sql_syntax")
            count = SqlWorkflow.objects.filter(engineer=user.username).filter(
                workflow_name__contains=search).count()
    elif navStatus in Const.workflowStatus.keys():
        if user.is_superuser == 1:
            workflow_list = SqlWorkflow.objects.filter(
                status=Const.workflowStatus[navStatus]).order_by(
                    '-create_time')[offset:limit].values(
                        "id", "workflow_name", "engineer_display", "status",
                        "is_backup", "create_time", "instance_name", "db_name",
                        "group_name", "sql_syntax")
            count = SqlWorkflow.objects.filter(
                status=Const.workflowStatus[navStatus]).count()
        elif user.has_perm('sql.sql_review') or user.has_perm(
                'sql.sql_execute'):
            # 先获取用户所在资源组列表
            group_list = user_groups(user)
            group_ids = [group.group_id for group in group_list]
            workflow_list = SqlWorkflow.objects.filter(
                status=Const.workflowStatus[navStatus],
                group_id__in=group_ids).order_by(
                    '-create_time')[offset:limit].values(
                        "id", "workflow_name", "engineer_display", "status",
                        "is_backup", "create_time", "instance_name", "db_name",
                        "group_name", "sql_syntax")
            count = SqlWorkflow.objects.filter(
                status=Const.workflowStatus[navStatus],
                group_id__in=group_ids).count()
        else:
            workflow_list = SqlWorkflow.objects.filter(
                status=Const.workflowStatus[navStatus],
                engineer=user.username).order_by(
                    '-create_time')[offset:limit].values(
                        "id", "workflow_name", "engineer_display", "status",
                        "is_backup", "create_time", "instance_name", "db_name",
                        "group_name", "sql_syntax")
            count = SqlWorkflow.objects.filter(
                status=Const.workflowStatus[navStatus],
                engineer=user.username).count()
    else:
        context = {'errMsg': '传入的navStatus参数有误!'}
        return render(request, 'error.html', context)

    # QuerySet 序列化
    rows = [row for row in workflow_list]

    result = {"total": count, "rows": rows}
    # 返回查询结果
    return HttpResponse(json.dumps(result,
                                   cls=ExtendJSONEncoder,
                                   bigint_as_string=True),
                        content_type='application/json')
コード例 #9
0
def lists(request):
    # 获取用户信息
    user = request.user

    limit = int(request.POST.get('limit'))
    offset = int(request.POST.get('offset'))
    workflow_type = int(request.POST.get('workflow_type'))
    limit = offset + limit
    search = request.POST.get('search', '')

    # 先获取用户所在资源组列表
    group_list = user_groups(user)
    group_ids = [group.group_id for group in group_list]
    # 再获取用户所在权限组列表
    if user.is_superuser:
        auth_group_ids = [group.id for group in Group.objects.all()]
    else:
        auth_group_ids = [group.id for group in Group.objects.filter(user=user)]

    # 只返回当前待自己审核的数据
    if workflow_type == 0:
        audit_list = WorkflowAudit.objects.filter(
            workflow_title__contains=search,
            current_status=WorkflowDict.workflow_status['audit_wait'],
            group_id__in=group_ids,
            current_audit__in=auth_group_ids
        ).order_by('-audit_id')[offset:limit].values(
            'audit_id', 'workflow_type', 'workflow_title', 'create_user_display',
            'create_time', 'current_status', 'audit_auth_groups',
            'current_audit',
            'group_name')
        audit_list_count = WorkflowAudit.objects.filter(
            workflow_title__contains=search,
            current_status=WorkflowDict.workflow_status['audit_wait'],
            group_id__in=group_ids,
            current_audit__in=auth_group_ids
        ).count()
    else:
        audit_list = WorkflowAudit.objects.filter(
            workflow_title__contains=search,
            workflow_type=workflow_type,
            current_status=WorkflowDict.workflow_status['audit_wait'],
            group_id__in=group_ids,
            current_audit__in=auth_group_ids
        ).order_by('-audit_id')[offset:limit].values(
            'audit_id', 'workflow_type',
            'workflow_title', 'create_user_display',
            'create_time', 'current_status',
            'audit_auth_groups',
            'current_audit',
            'group_name')
        audit_list_count = WorkflowAudit.objects.filter(
            workflow_title__contains=search,
            workflow_type=workflow_type,
            current_status=WorkflowDict.workflow_status['audit_wait'],
            group_id__in=group_ids,
            current_audit__in=auth_group_ids
        ).count()

    # QuerySet 序列化
    rows = [row for row in audit_list]

    result = {"total": audit_list_count, "rows": rows}
    # 返回查询结果
    return HttpResponse(json.dumps(result, cls=ExtendJSONEncoder, bigint_as_string=True),
                        content_type='application/json')