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
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
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/')
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})
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)
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)
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)
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)