def queryapplylist(request): user = request.user # 获取项目组 group_list = user_groups(user) context = {'group_list': group_list} return render(request, 'queryapplylist.html', context)
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)
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
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
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()
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
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')
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')
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')