コード例 #1
0
def get_user_and_biz_info_and_inject_user(request, kwargs, prepare_biz=False):
    if apigw_required is not None:
        username = request.jwt.user.username
    else:
        username = request.META.get('HTTP_BK_USERNAME')
    user_model = get_user_model()
    try:
        user = user_model.objects.get(username=username)
    except user_model.DoesNotExist:
        result = {
            'result':
            False,
            'message':
            'user[username=%s] does not exist or has not logged in this APP' %
            username
        }
        return result

    setattr(request, 'user', user)
    if prepare_biz:
        prepare_user_business(request)

    bk_biz_id = kwargs.get('bk_biz_id')
    try:
        biz = Business.objects.get(cc_id=bk_biz_id)
    except Business.DoesNotExist:
        result = {
            'result': False,
            'message': 'business[bk_biz_id=%s] does not exist' % bk_biz_id
        }
        return result

    result = {'result': True, 'data': {'user': user, 'biz': biz}}
    return result
コード例 #2
0
def is_request_from_trust_apps_and_inject_user(request, prepare_biz=False):
    result = check_white_apps(request)
    if result:
        if apigw_required is not None:
            username = request.jwt.user.username
        else:
            username = request.META.get('HTTP_BK_USERNAME')
        user_model = get_user_model()
        user, _ = user_model.objects.get_or_create(username=username)
        setattr(request, 'user', user)
        if prepare_biz:
            prepare_user_business(request)

    return result
コード例 #3
0
ファイル: views.py プロジェクト: zyh1234/bk-sops
def home(request):
    username = request.user.username
    if is_user_functor(request):
        return HttpResponseRedirect(settings.SITE_URL + 'function/home/')
    if is_user_auditor(request):
        return HttpResponseRedirect(settings.SITE_URL + 'audit/home/')
    try:
        biz_list = prepare_user_business(request)
    except exceptions.Unauthorized:
        return HttpResponseRedirect(settings.SITE_URL + 'error/401/')
    except exceptions.Forbidden:
        return HttpResponseRedirect(settings.SITE_URL + 'error/403/')
    except exceptions.APIError as e:
        ctx = {
            'system': e.system,
            'api': e.api,
            'message': e.message,
        }
        logger.error(json.dumps(ctx))
        return HttpResponse(status=503, content=json.dumps(ctx))
    if biz_list:
        try:
            obj = UserBusiness.objects.get(user=username)
            biz_cc_id = obj.default_buss
            biz_cc_id_list = [item.cc_id for item in biz_list]
            if biz_cc_id not in set(biz_cc_id_list):
                biz_cc_id = biz_cc_id_list[0]
                obj.default_buss = biz_cc_id
                obj.save()
        except UserBusiness.DoesNotExist:
            biz_cc_id = biz_list[0].cc_id
            UserBusiness.objects.create(user=username, default_buss=biz_cc_id)
        return HttpResponseRedirect(settings.SITE_URL + 'business/home/' + str(biz_cc_id) + '/')
    else:
        return HttpResponseRedirect(settings.SITE_URL + 'error/406/')
コード例 #4
0
ファイル: views.py プロジェクト: Q-skyworker/BK_project
def get_authorized_biz_list(request):
    """
    @summary 获取用户可操作列表
    @param request:
    @return:
    """
    biz_list = prepare_user_business(request)
    data = [{"text": biz.cc_name,
             "id": biz.cc_id}
            for biz in biz_list]

    return render_json({"result": True, "data": data})
コード例 #5
0
ファイル: resources.py プロジェクト: zhengxj91/bk-sops
 def get_object_list(self, request):
     if is_user_functor(request) or is_user_auditor(request):
         return super(BusinessResource, self).get_object_list(request)
     all_flag = request.GET.get('all', '0')
     if request.user.is_superuser and str(all_flag) == '1':
         return super(BusinessResource, self).get_object_list(request)
     try:
         # fetch business from CMDB
         biz_list = prepare_user_business(request)
     except (exceptions.Unauthorized, exceptions.Forbidden, exceptions.APIError) as e:
         logger.error(u'get business list[username=%s] from CMDB raise error: %s' % (request.user.username, e))
         return super(BusinessResource, self).get_object_list(request)
     cc_id_list = [biz.cc_id for biz in biz_list]
     return super(BusinessResource, self).get_object_list(request).filter(cc_id__in=cc_id_list)
コード例 #6
0
 def get_object_list(self, request):
     # fetch business from CMDB
     try:
         biz_list = prepare_user_business(request)
     except exceptions.Unauthorized:
         return HttpResponse(status=401)
     except exceptions.Forbidden:
         # target business does not exist (irregular request)
         return HttpResponseForbidden()
     except exceptions.APIError as e:
         return HttpResponse(status=503, content=e.error)
     if is_user_functor(request):
         return super(BusinessResource, self).get_object_list(request).exclude(life_cycle__in=['3', _(u"停运")])
     else:
         cc_id_list = [biz.cc_id for biz in biz_list]
         return super(BusinessResource, self).get_object_list(request).filter(cc_id__in=cc_id_list)
コード例 #7
0
ファイル: views.py プロジェクト: Q-skyworker/BK_project
def home(request):
    username = request.user.username
    if is_user_functor(request):
        return HttpResponseRedirect(SITE_URL + 'function/home/')
    if is_user_auditor(request):
        return HttpResponseRedirect(SITE_URL + 'audit/home/')
    try:
        biz_list = prepare_user_business(request)
    except exceptions.Unauthorized:
        # permission denied for target business (irregular request)
        return HttpResponse(status=406)
    except exceptions.Forbidden:
        # target business does not exist (irregular request)
        return HttpResponseForbidden()
    except exceptions.APIError as e:
        ctx = {
            'system': e.system,
            'api': e.api,
            'message': e.message,
        }
        ctx.update(context_processors.get_constant_settings())
        return render_mako_context(request, '503.html', ctx)
    if biz_list:
        try:
            obj = UserBusiness.objects.get(user=username)
            biz_cc_id = obj.default_buss
            biz_cc_id_list = [item.cc_id for item in biz_list]
            if biz_cc_id not in biz_cc_id_list:
                biz_cc_id = biz_cc_id_list[0]
                obj.default_buss = biz_cc_id
                obj.save()
        except UserBusiness.DoesNotExist:
            biz_cc_id = biz_list[0].cc_id
            UserBusiness.objects.create(user=username, default_buss=biz_cc_id)
        return HttpResponseRedirect(
            SITE_URL + 'business/home/' + str(biz_cc_id) + '/')
    else:
        company_info = _get_user_info(request)
        ctx = {
            "OwenerName": company_info.get('company_name') or _(u'蓝鲸'),
            "OwenerUin": company_info.get('company_code') or _(u'管理员'),
        }
        ctx.update(context_processors.get_constant_settings())
        return render_mako_context(request, '/temp/register.html', ctx)
コード例 #8
0
 def get_object_list(self, request):
     if is_user_functor(request) or is_user_auditor(request):
         return super(BusinessResource, self).get_object_list(request)
     all_flag = request.GET.get('all', '0')
     if request.user.is_superuser and str(all_flag) == '1':
         return super(BusinessResource, self).get_object_list(request)
     try:
         # fetch business from CMDB
         biz_list = prepare_user_business(request)
     except exceptions.Unauthorized:
         return HttpResponse(status=401)
     except exceptions.Forbidden:
         # target business does not exist (irregular request)
         return HttpResponseForbidden()
     except exceptions.APIError as e:
         return HttpResponse(status=503, content=e.error)
     cc_id_list = [biz.cc_id for biz in biz_list]
     return super(
         BusinessResource,
         self).get_object_list(request).filter(cc_id__in=cc_id_list)