def close_log(request): """ 关闭实时日志 :param request: :return: """ res = BaseResponse() # 初始化返回值 if request.method == "POST": ip = request.POST.get('ip') dir = request.POST.get('dir') # 日志文件 file_name = request.POST.get('file_name') log_file = os.path.join(settings.LOG_BASE_DIR, dir, file_name) # print("关闭日志%s" % log_file) cmd = "kill -9 `ps -aux|grep -v grep|grep %s|awk '{print $2}'`" % file_name print("关闭日志,命令:", cmd) result = ssh3(ip, cmd) # print("result", result,type(result)) if not result or result['status'] != 0: res.code = 500 res.error = "错误,主机: {},关闭实时日志: {} 失败!".format(ip, log_file) return HttpResponse(json.dumps(res.__dict__)) else: res.code = 500 res.error = "非法请求" return HttpResponse(json.dumps(res.__dict__))
def post_idc(request): response = BaseResponse() try: name = request.POST.get('name', None) floor = request.POST.get('floor', None) # add_dict = QueryDict(request.body, encoding='utf-8') # print('add_dict', add_dict) # print(hostname, manage_ip, device_type_id, device_status_id, idc_id, business_unit_id) t_dict = {'name': name, 'floor': floor} print(t_dict) error_count = 0 idc_obj = models.IDC.objects.filter(**t_dict) if idc_obj: response.message = '添加的IDC信息已经存在' response.status = False response.error = '错误代码1' pass else: try: models.IDC.objects.create(name=name, floor=floor) except Exception as e: response.error = str(e) response.status = False error_count += 1 if error_count: response.message = '添加IDC信息失败' else: response.message = '添加IDC信息成功' except Exception as e: response.status = False response.message = str(e) return response pass
def post_users(request): response = BaseResponse() try: name = request.POST.get('name', None) email = request.POST.get('email', None) phone = request.POST.get('phone', None) mobile = request.POST.get('mobile', None) # add_dict = QueryDict(request.body, encoding='utf-8') # print('add_dict', add_dict) # print(hostname, manage_ip, device_type_id, device_status_id, idc_id, business_unit_id) t_dict = {'name': name, 'email': email, 'phone': phone, 'mobile': mobile} print(t_dict) error_count = 0 idc_obj = models.UserProfile.objects.filter(**t_dict) if idc_obj: response.message = '添加的IDC信息已经存在' response.status = False response.error = '错误代码1' pass else: try: models.UserProfile.objects.create(**t_dict) except Exception as e: response.error = str(e) response.status = False error_count += 1 if error_count: response.message = '添加IDC信息失败' else: response.message = '添加IDC信息成功' except Exception as e: response.status = False response.message = str(e) return response pass
def post(self, request, *args, **kwargs): """ 将课程添加到购物车 :param request: :param args: :param kwargs: :return: """ ret = BaseResponse() try: # 1. 获取用户提交的课程ID和价格策略ID course_id = int(request.data.get('courseid')) policy_id = int(request.data.get('policyid')) # 2. 获取专题课信息 course = models.Course.objects.get(id=course_id) # 3. 获取该课程相关的所有价格策略 price_policy_list = course.price_policy.all() price_policy_dict = {} for item in price_policy_list: price_policy_dict[item.id] = { "period": item.valid_period, "period_display": item.get_valid_period_display(), "price": item.price, } # 4. 判断用户提交的价格策略是否合法 if policy_id not in price_policy_dict: # 价格策略不合法 raise PricePolicyInvalid('价格策略不合法') # 5. 将购物信息添加到redis中 # self.conn # car_key = "luffy_shopping_car_%s_%s" car_key = settings.SHOPPING_CAR_KEY % ( request.auth.user_id, course_id, ) car_dict = { 'title': course.name, 'img': course.course_img, 'default_policy': policy_id, 'policy': json.dumps(price_policy_dict) } # conn = get_redis_connection("default") self.conn.hmset(car_key, car_dict) ret.data = '添加成功' except PricePolicyInvalid as e: ret.code = 2001 ret.error = e.msg except ObjectDoesNotExist as e: ret.code = 2001 ret.error = '课程不存在' except Exception as e: ret.code = 1001 ret.error = '获取购物车失败' return Response(ret.dict)
def patch(self,request,*args,**kwargs): ret = BaseResponse() try: # 1. 用户提交要修改的优惠券 course = request.data.get('courseid') course_id = str(course) if course else course coupon_id = str(request.data.get('couponid')) # payment_global_coupon_1 redis_global_coupon_key = settings.PAYMENT_COUPON_KEY %(request.auth.user_id,) # 修改全站优惠券 if not course_id: if coupon_id == "0": # 不使用优惠券,请求数据:{"couponid":0} self.conn.hset(redis_global_coupon_key,'default_coupon',coupon_id) ret.data = "修改成功" return Response(ret.dict) # 使用优惠券,请求数据:{"couponid":2} coupon_dict = json.loads(self.conn.hget(redis_global_coupon_key,'coupon').decode('utf-8')) # 判断用户选择得优惠券是否合法 if coupon_id not in coupon_dict: ret.code = 1001 ret.error = "全站优惠券不存在" return Response(ret.dict) # 选择的优惠券合法 self.conn.hset(redis_global_coupon_key, 'default_coupon', coupon_id) ret.data = "修改成功" return Response(ret.dict) # 修改课程优惠券 # luffy_payment_1_1 redis_payment_key = settings.PAYMENT_KEY % (request.auth.user_id, course_id,) # 不使用优惠券 if coupon_id == "0": self.conn.hset(redis_payment_key,'default_coupon',coupon_id) ret.data = "修改成功" return Response(ret.dict) # 使用优惠券 coupon_dict = json.loads(self.conn.hget(redis_payment_key,'coupon').decode('utf-8')) if coupon_id not in coupon_dict: ret.code = 1010 ret.error = "课程优惠券不存在" return Response(ret.dict) self.conn.hset(redis_payment_key,'default_coupon',coupon_id) except Exception as e: ret.code = 1111 ret.error = "修改失败" return Response(ret.dict)
def create(self, request, *args, **kwargs): """ 添加购物车 """ reply = BaseResponse() try: # 1. 获取用户id user_pk = request.user.pk # 2. 获取课程id和对应的价格策略id course_id = request.data["course_id"] price_policy_id = request.data["price_policy_id"] # 3.校验课程数据合法性 course_obj = models.Course.objects.get(pk=course_id) # 4. 校验课程关联的价格策略 price_policy_list = course_obj.price_policy.all() # 构建价格策略字典 price_policy_dict = {} for price_policy in price_policy_list: price_policy_dict[price_policy.pk] = { "price": price_policy.price, "valid_period": price_policy.valid_period, "valid_period_text": price_policy.get_valid_period_display() } if price_policy_id not in price_policy_dict: raise PriceDoesNotExist # 5.redis中存储数据 # 得到redis中存储的key shopping_car_key = "shopping_car_%s_%s" % (user_pk, course_id) # 构造value course_info = { "name": course_obj.name, "course_img": course_obj.course_img, "relate_price_policy": json.dumps(price_policy_dict), "default_price_policy_id": price_policy_id } reply.data = "更新购物车成功" if self.redis.exists( shopping_car_key) else "加入购物车成功" self.redis.hmset(shopping_car_key, course_info) except ObjectDoesNotExist as e: reply.code = "1002" reply.error = "课程不存在!!!" except PriceDoesNotExist as e: reply.code = "1003" reply.error = e.error except Exception as e: reply.code = "1004" reply.error = str(e) return Response(reply.dict)
def post(self, request, *args, **kwargs): """ 购物车添加一条数据 :param request: :param args: :param kwargs: :return: """ results = BaseResponse() try: # 1.获取用户提交的 课程ID 和 价格策略ID course_id = int( request.data.get('course_id')) # 有可能传来是 str 类型,不管什么类型,都转换成int policy_id = int(request.data.get('policy_id')) # 2.获取课程信息 course_obj = models.Course.objects.get( id=course_id) # 课程对象。 如果取不到或取多个就报错 ObjectDoesNotExist # 3.获取该课程的所有的价格策略 price_policy_list = course_obj.price_policy.all() price_policy_dict = {} for item in price_policy_list: price_policy_dict[item.id] = { "period_display": item.get_valid_period_display(), "period": item.valid_period, "price": item.price } # 4.检测 用户提交的价格策略id 是否存在(合法) 该课程是否有此 价格策略 if policy_id not in price_policy_dict: # 价格策略不合法, 抛出自定义异常 raise PricePolicyInvalid("价格策略不合法") # 5.将购物信息添加到 redis 中 user_id = request.user.id # 用户认证过后用 user_id = request.user.id 来获取 redis_car_key = "shopping_car_{0}_{1}".format( user_id, course_id) # redis 中存的key # redis_car_key = settings.SHOPPING_CART_KEY.format(user_id, course_id) # 可以配置到 settings.py 里面 self.conn.hmset( redis_car_key, { "title": course_obj.name, "img": course_obj.course_img, "policy": json.dumps(price_policy_dict), "default_policy": policy_id }) results.data = "添加成功" except ObjectDoesNotExist as e: results.code = 3001 results.error = "课程不存在" except PricePolicyInvalid as e: results.code = 2001 results.error = e.error except Exception as e: results.code = 1001 results.error = "添加失败" return Response(results.dict)
def process(server_obj,server_info,user_obj): response = BaseResponse() try: # 获取数据库中所有网卡信息 # server_info 服务器最新汇报的数据 nic_info = server_info['nic'] if not nic_info['status']: response.status = False models.ErrorLog.objects.create(asset_obj=server_obj.asset,title='nic-agent',content=nic_info['error']) return response client_nic_dict = nic_info['data'] nic_obj_list = models.NIC.objects.filter(server_obj=server_obj) nic_name_list = map(lambda x:x,(item.name for item in nic_obj_list)) update_list = agorithm.get_intersection(set(client_nic_dict.keys()),set(nic_name_list)) add_list = agorithm.get_exclude(client_nic_dict.keys(),update_list) del_list = agorithm.get_exclude(nic_name_list,update_list) # 删除 更新 添加操作 HandleNic._add_nic(add_list, client_nic_dict, server_obj, user_obj) HandleNic._update_nic(update_list, nic_obj_list, client_nic_dict, server_obj, user_obj) HandleNic._del_nic(del_list, nic_obj_list, server_obj, user_obj) except Exception as e: response.status = False response.error = str(e) models.ErrorLog.objects.create(asset_obj=server_obj.asset,title='nic-run',content=traceback.format_exc()) return response
def put_queryset(self, request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') update_list = json.loads(put_dict.get('update_list')) error_count = 0 for row_dict in update_list: nid = row_dict.pop('nid') num = row_dict.pop('num') try: self.queryset.filter(id=nid).update(**row_dict) except Exception as e: response.error.append({'num': num, 'message': str(e)}) response.status = False error_count += 1 if error_count: response.message = '共%s条,失败%s条' % ( len(update_list), error_count,) else: response.message = '更新成功' except Exception as e: response.status = False response.message = str(e) return response
def add_server_group(request): response = BaseResponse() try: response.error = {} print(request.body) post_dict = QueryDict(request.body, encoding='utf-8') add_group_app_id = post_dict.get('add_group_app_id') add_group_name = post_dict.get('add_group_name') add_group_yaml_path = post_dict.get('add_group_yaml_path') add_group_type = post_dict.get('add_group_type') add_to_db = repository_models.AppGroups( name=add_group_name, yaml_path=add_group_yaml_path, # app_id = repository_models.Applications.objects.get(id=add_group_app_id) group_type=add_group_type, ) add_to_db.save() add_to_db.app_id.add(repository_models.Applications.objects.get(id=add_group_app_id)) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def update_urlmaps_groups(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') urlmaps_id = post_dict.get('urlmaps_id') instance_list = post_dict.getlist('instance_list') group_type = post_dict.get('group_type') urlmaps_obj = repository_models.UrlConfigHandler.objects.get( id=urlmaps_id) if group_type == 'cloud': urlmaps_obj.cloud.clear() for instance_id in instance_list: urlmaps_obj.cloud.add( CMDB_MODELS.Asset.objects.get(id=instance_id)) elif group_type == 'forward': urlmaps_obj.forward.clear() for instance_id in instance_list: urlmaps_obj.forward.add( CMDB_MODELS.Asset.objects.get(id=instance_id)) elif group_type == 'docker': urlmaps_obj.docker.clear() for instance_id in instance_list: urlmaps_obj.docker.add( CMDB_MODELS.DockerInstance.objects.get(id=instance_id)) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def git_commits(request): """ 根据分支获取所有的commit :param request: :return: """ response = BaseResponse() try: env_id = request.GET.get('env_id') branch = request.GET.get('branch') env_object = models.ProjectEnv.objects.filter(id=env_id).first() url = env_object.project.repo project_name = env_object.project.title local_path = os.path.join(settings.HG_DEPLOY_BASE_PATH, project_name) repo_object = GitRepository(local_path, url) # 切换到指定分支 repo_object.change_to_branch(branch) # 获取所有提交记录 commit_list = repo_object.commits() response.data = commit_list except Exception as e: response.status = False response.error = '版本获取失败' return JsonResponse(response.dict)
def application_del(request): """应用删除视图""" response = BaseResponse() if request.method == 'POST': aid = request.POST.get('aid') try: application_obj = models.Application.objects.filter(id=aid).first() application_name = application_obj.name project_obj = models.Project.objects.filter( id=application_obj.project_id).first() if os.path.exists( os.path.join(settings.RSYNC_LOG_DIR, project_obj.path_name, application_obj.path_name)): shutil.rmtree( os.path.join(settings.RSYNC_LOG_DIR, project_obj.path_name, application_obj.path_name)) application_obj.delete() response.message = '删除成功' Logger().log(message='[%s]删除应用[%s]成功' % (request.user.name, application_name), mode=True) except Exception as e: response.status = False response.message = '删除失败' response.error = str(e) Logger().log(message='[%s]删除应用失败,%s' % (request.user.name, str(e)), mode=False) return JsonResponse(response.__dict__)
def post_assets(request): response = BaseResponse() # 前端来获取业务线说明 get_id = request.POST.get('get_id', None) if get_id: obj = models.BusinessTwo.objects.filter(id=get_id).first() business_remark = obj.business_remark response.data = {'business_remark': business_remark} response.status = True return response # 编辑业务线说明 business_text = request.POST.get('business_text', None) if business_text: business_id = request.POST.get('id', None) try: models.BusinessTwo.objects.filter(id=business_id).update( business_remark=business_text) response.status = True except Exception as e: response.status = False response.message = str(e) return response # 新添加业务线 try: response.error = [] name = request.POST.get('business1_name') models.BusinessTwo.objects.create(name=name) response.message = '添加成功' except Exception as e: response.status = False response.message = str(e) return response
def post(self, request, *args, **kwargs): """ 用于用户认证相关接口 :param request: :param args: :param kwargs: :return: """ print(request.data) # ret = {"code":100,'data':None} ret = BaseResponse() try: user = request.data.get('user') pwd = request.data.get('pwd') obj = models.UserInfo.objects.filter(user=user, pwd=pwd).first() # obj = models.UserInfo.objects.get(user=user,pwd=pwd) if not user: # 简单逻辑往上放 ret.code = 400 ret.error = "错误的用户名或密码" return Response(ret) token = str(uuid.uuid4()) models.Token.objects.update_or_create( user=obj, defaults={"token": token}) # defaults字段用于更新 ret.token = token except Exception as e: ret.code = 1002 ret.msg = e # obj = Response('...') # obj['Access-Control-Allow-Origin'] = "*" return Response(ret.dict)
def post_business(request): response = BaseResponse() try: hostname = request.POST.get('hostname', None) manage_ip = request.POST.get('manage_ip', None) device_type_id = request.POST.get('device_type_id', None) device_status_id = request.POST.get('device_status_id', None) idc_id = request.POST.get('idc_id', None) business_unit_id = request.POST.get('business_unit_id', None) cabinet_num = request.POST.get('cabinet_num', None) cabinet_order = request.POST.get('cabinet_order', None) # add_dict = QueryDict(request.body, encoding='utf-8') # print('add_dict', add_dict) # print(hostname, manage_ip, device_type_id, device_status_id, idc_id, business_unit_id) obj_asset = models.Asset.objects.create(device_type_id=device_type_id, device_status_id=device_status_id, cabinet_num=cabinet_num, cabinet_order=cabinet_order, business_unit_id=business_unit_id, idc_id=idc_id) print('newobj_asset_id', obj_asset.id) if 1 == int(device_type_id): models.Server.objects.create(hostname=hostname, manage_ip=manage_ip, asset_id=obj_asset.id) elif 2 == int(device_type_id): models.NetworkDevice.objects.create(hostname=hostname, manage_ip=manage_ip, asset_id=obj_asset.id) if obj_asset: response.message = '添加资产成功' else: response.error = '添加资产失败' except Exception as e: response.status = False response.message = str(e) return response pass
def approved_data(request): response = BaseResponse() try: response.error = [] id_list = QueryDict(request.body, encoding='utf-8').getlist('id_list') error_count = 0 ass_handler = client_report_handler.Asset(request) for obj_id in id_list: try: # 调用接口新增审批资产数据 get_source_data = models.NewAssetApprovalZone.objects.filter(id=obj_id) json_data = json.loads(get_source_data[0].data) request.POST = {"asset_data": json_data} ass_handler = client_report_handler.Asset(request) if ass_handler.data_is_valid_without_id(): ass_handler.data_inject() models.NewAssetApprovalZone.objects.filter(id=obj_id).update(approved=True, asset_resume_num=ass_handler.asset_obj.asset_num) else: error_count += 1 response.error.append({'id': "ID %s" %obj_id, 'message': "Asset already exist."}) except Exception as e: response.error.append({'id': obj_id, 'message': str(e)}) response.status = False error_count += 1 if error_count: response.message = '共%s条,失败%s条' % (len(id_list), error_count,) response.status = False else: response.message = '更新成功' except Exception as e: response.status = False response.message = str(e) return response
def get(self,request, *args, **kwargs): """ 查看购物车中所有的商品 :param request: :param args: :param kwargs: :return: """ ret = BaseResponse() try: key_match = settings.SHOPPING_CAR_KEY %(request.auth.user_id,"*") course_list = [] for key in self.conn.scan_iter(key_match,count=10): info = { "title":self.conn.hget(key,'title').decode('utf-8'), # 不用getall的原因是每个字段不同 "img":self.conn.hget(key,'img').decode('utf-8'), "policy":json.loads(self.conn.hget(key,'policy').decode('utf-8')), "default_policy":self.conn.hget(key,'default_policy').decode('utf-8') } course_list.append(info) ret.data = course_list except Exception as e: ret.code = 1002 ret.error = "获取失败" return Response(ret.dict)
def delete(self, request, *args, **kwargs): """ 删除购物车中的数据 :param request: :param args: :param kwargs: :return: """ result = BaseResponse() try: course_id_list = request.data.get('course_id') user_id = request.user.id # 用户认证过后用 user_id = request.user.id 来获取 # key_list = [] # for course_id in course_id_list: # redis_car_key = settings.SHOPPING_CART_KEY.format(user_id, course_id) # key_list.append(redis_car_key) key_list = [ settings.SHOPPING_CART_KEY.format(user_id, course_id) for course_id in course_id_list ] # 同上注释掉的 self.conn.delete(*key_list) # 删除 except Exception as e: result.code = 1001 result.error = "删除失败" return Response(result.dict)
def add_server_group(request): response = BaseResponse() try: response.error = {} print(request.body) post_dict = QueryDict(request.body, encoding='utf-8') add_group_app_id = post_dict.get('add_group_app_id') add_group_name = post_dict.get('add_group_name') add_group_yaml_path = post_dict.get('add_group_yaml_path') add_group_type = post_dict.get('add_group_type') add_to_db = repository_models.AppGroups( name=add_group_name, yaml_path=add_group_yaml_path, # app_id = repository_models.Applications.objects.get(id=add_group_app_id) group_type=add_group_type, ) add_to_db.save() add_to_db.app_id.add( repository_models.Applications.objects.get( id=add_group_app_id)) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def add_data(request): response = BaseResponse() try: response.error = [] post_dict = QueryDict(request.body, encoding='utf-8') idc_name = post_dict.get('idc_name') idc_floor = post_dict.get('idc_floor') idc_phone = post_dict.get('idc_phone') idc_address = post_dict.get('idc_address') add_to_db = CMDB_MODELS.IDC( name=idc_name, floor=idc_floor, phone=idc_phone, idc_address = idc_address, ) add_to_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def get_urlmaps_groups_by_id(request): response = BaseResponse() try: response.error = {} group_type = request.GET.get('group_type') group_id = request.GET.get('group_id') urlmaps_id = request.GET.get('urlmaps_id') urlmaps_obj = repository_models.UrlConfigHandler.objects.filter(id=urlmaps_id).values() if group_type == 'cloud': instance_in_group = CMDB_MODELS.Asset.objects.filter(instances__id=group_id).values('id', 'server__ipaddress') instance_in_urlmaps = CMDB_MODELS.Asset.objects.filter(urlconfighandler_cloud__id=urlmaps_id).values('id', 'server__ipaddress') elif group_type == 'forward': instance_in_group = CMDB_MODELS.Asset.objects.filter(instances__id=group_id).values('id', 'server__ipaddress') instance_in_urlmaps = CMDB_MODELS.Asset.objects.filter(urlconfighandler_forward__id=urlmaps_id).values('id', 'server__ipaddress') elif group_type == 'docker': instance_in_group = CMDB_MODELS.Asset.objects.filter(instances__id=group_id).values('id','server__ipaddress') instance_in_urlmaps = CMDB_MODELS.DockerInstance.objects.filter(urlconfighandler_docker__id=urlmaps_id).values('id', 'asset__server__ipaddress', 'port') print(instance_in_urlmaps) response.urlmaps_obj = list(urlmaps_obj) response.left_select_list = list(instance_in_group) response.right_select_list = list(instance_in_urlmaps) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def update_urlmaps_groups(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') urlmaps_id = post_dict.get('urlmaps_id') instance_list = post_dict.getlist('instance_list') group_type = post_dict.get('group_type') urlmaps_obj = repository_models.UrlConfigHandler.objects.get(id=urlmaps_id) if group_type == 'cloud': urlmaps_obj.cloud.clear() for instance_id in instance_list: urlmaps_obj.cloud.add(CMDB_MODELS.Asset.objects.get(id=instance_id)) elif group_type == 'forward': urlmaps_obj.forward.clear() for instance_id in instance_list: urlmaps_obj.forward.add(CMDB_MODELS.Asset.objects.get(id=instance_id)) elif group_type == 'docker': urlmaps_obj.docker.clear() for instance_id in instance_list: urlmaps_obj.docker.add(CMDB_MODELS.DockerInstance.objects.get(id=instance_id)) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def update_log(request): """更新日志视图""" response = BaseResponse() if request.method == 'POST': app_value = request.POST.get('app_value') application_obj = models.Application.objects.filter( id=app_value).first() application_path_name = application_obj.path_name project_path_name = application_obj.project.path_name receive_path = os.path.join(settings.RSYNC_LOG_DIR, project_path_name, application_path_name) module_name = '%s_%s' % (project_path_name, application_path_name) ip = application_obj.ip command = '/usr/bin/rsync -az --delete --password-file=/etc/easylogrsync.secrets easylogrsync_user@%s::%s %s' % ( ip, module_name, receive_path) try: subprocess.call(command, shell=True) response.message = '更新成功!' Logger().log(message='[%s]执行更新命令成功,%s[%s]已更新' % (request.user.name, application_obj.project.name, application_obj.name), mode=True) except Exception as e: response.status = False response.error = str(e) response.message = '更新失败!' Logger().log(message='[%s]执行更新命令失败,%s[%s]未能成功更新,%s' % (request.user.name, application_obj.project.name, application_obj.name, str(e)), mode=False) return JsonResponse(response.__dict__)
def delete(self, request): res = BaseResponse() course_ids = request.data.get("course_list", "") print(course_ids) name = "ShoppingCar_for_userId_%s" % request.user.pk try: for course_id in course_ids: if not Course.objects.filter(id=course_id): res.code = 1040 res.error = "课程id(%d)不存在" % course_id return Response(res.dict) conn.hdel(name, "course_id_%d" % course_id) res.code = 1000 res.data = {"商品删除成功"} except Exception as e: res.code = 1037 res.error = "删除失败,reason:" + str(e) return Response(res.dict)
def softwareserver_api(request): """软件服务器API视图""" if request.method == 'POST': response = BaseResponse() report_data = json.loads(request.body.decode('utf-8')) hostname = report_data.get('hostname', None) idc = report_data.get('idc', None) business_unit = report_data.get('business_unit', None) if not idc: response.status = False response.message = '未提供IDC信息' return JsonResponse(response.__dict__) if not business_unit: response.status = False response.message = '未提供业务线信息' return JsonResponse(response.__dict__) if hostname: host_obj = models.SoftwareServer.objects.filter( hostname=hostname).first() if host_obj: response.status = False response.message = '此软件服务器的主机名已存在' return JsonResponse(response.__dict__) else: try: asset_obj = models.Asset.objects.create( idc_id=int(idc), business_unit_id=int(business_unit), cabinet_num='', cabinet_order='') models.SoftwareServer.objects.create(asset=asset_obj, hostname=hostname) response.message = '软件服务器资产添加成功' return JsonResponse(response.__dict__) except Exception as e: response.message = '软件服务器资产添加失败' response.error = str(e) response.status = False models.ErrorLog.objects.create( asset=None, title='save_softwareserver_api_post_data', content=traceback.format_exc()) return JsonResponse(response.__dict__) else: response.status = False response.message = '未提供软件服务器主机名' return JsonResponse(response.__dict__) # 如果请求为get hostname = request.GET.get('hostname', None) if hostname: response = softwareserver.check_softwareserver_exist(hostname=hostname) else: response = BaseResponse() response.status = False response.message = '未提供软件服务器主机名' return JsonResponse(response.__dict__)
def post_assets(request): response = BaseResponse() try: response.error = [] name = request.POST.get('business1_name') models.BusinessThree.objects.create(name=name) response.message = '添加成功' except Exception as e: response.status = False response.message = str(e) return response
def put_assets(request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') update_list = json.loads(put_dict.get('update_list')) error_count = 0 for row_dict in update_list: nid = row_dict.pop('nid') num = row_dict.pop('num') # print(row_dict) # 更新主机名 host_name = row_dict.get('host_name') if host_name: if re.search('[》>$&()<!#*]', row_dict['host_name']): response.error.append({'num': num, 'message': '非法字符!'}) response.status = False error_count += 1 else: obj = models.Asset.objects.filter(id=nid) change_host_name(host_ip=obj[0].host_ip, host_name=row_dict['host_name']) try: models.Asset.objects.filter(id=nid).update( **row_dict) # 更新权限管理表中的主机名 models.AuthInfo.objects.filter( ip=obj[0].host_ip).update(hostname=host_name) except Exception as e: response.error.append({ 'num': num, 'message': str(e) }) response.status = False error_count += 1 else: try: models.Asset.objects.filter(id=nid).update(**row_dict) except Exception as e: response.error.append({'num': num, 'message': str(e)}) response.status = False error_count += 1 if error_count: response.message = '非法字符!共%s条,失败%s条' % ( len(update_list), error_count, ) else: response.message = '更新成功' except Exception as e: response.status = False response.message = str(e) return response
def retrieve(self, request, *args, **kwargs): ret = BaseResponse() try: pk = kwargs.get('pk') obj = CourseDetail.objects.filter(id=pk).first() ser = CourseDetailViewSetSerializers(instance=obj, many=False) ret.data = ser.data except Exception as e: ret.code = 1001 ret.error = '未获取到资源' return Response(ret.dict)
def post_queryset(self, request): response = BaseResponse() model_form_class = self.create_model_form() model_form_obj = model_form_class(request.POST) if model_form_obj.is_valid(): model_form_obj.save() response.message = '创建成功' else: response.status = False response.error = model_form_obj.errors return response
def patch(self, request, *args, **kwargs): """ 修改课程的价格策略 :param request: :param args: :param kwargs: :return: """ ret = BaseResponse() try: # 1. 获取价格策略ID和课程ID course_id = int(request.data.get('courseid')) policy_id = str(request.data.get('policyid')) # 2. 拼接课程的key key = settings.SHOPPING_CAR_KEY % ( request.auth.user_id, course_id, ) if not self.conn.exists(key): ret.code = 1002 ret.error = "购物车中不存在此课程" return Response(ret.dict) # 3. redis中获取所有的价格策略 policy_dict = json.loads( str(self.conn.hget(key, 'policy'), encoding='utf-8')) if policy_id not in policy_dict: ret.code = 1003 ret.error = "价格策略不合法" return Response(ret.dict) # 4. 在购物车中修改该课程的默认价格策略 self.conn.hset(key, 'default_policy', policy_id) ret.data = "修改成功" except Exception as e: ret.code = 1004 ret.error = "修改失败" return Response(ret.dict)
def post(self, request, *args, **kwargs): response = BaseResponse() try: operation = request.POST.get('operation') username = request.POST.get('username') family_name = request.POST.get('family_name') given_name = request.POST.get('given_name') tel = request.POST.get('tel') email = request.POST.get('email') working_place = request.POST.get('working_place') pwd = request.POST.get('pwd') display_name = family_name + given_name # current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) current_time = time.strftime('%Y-%m-%d', time.localtime(time.time())) if operation == 'add_user': if username: slb_obj = models.DcmUser.objects.filter( user_name=username).all().first() if slb_obj: response.data = '用户已存在,不能重复添加!' else: # 这里需要调用添加用户api返回添加用户成功后再在数据库中插入该用户信息 # add_user_res = dcm_add_modify_reset_user.add_user(username, display_name, tel, email, pwd) add_user_res = '添加用户成功' if add_user_res == '添加用户成功': models.DcmUser.objects.create( user_name=username, family_name=family_name, given_name=given_name, tel_number=tel, email=email, working_place=working_place, vpn=0, password=pwd, tag=0, add_time=current_time) # 这里需要调用雨馨接口同步用户信息 else: response.data = 'Error:系统异常(EcsUpDownView)' elif operation == 'modify_user': if username: slb_obj = models.DcmUser.objects.filter( username=username).all().first() if slb_obj: modify_user_res = dcm_add_modify_reset_user.modify_user( ) else: response.data = '用户不存在!' return HttpResponse(json.dumps(response.data)) except Exception as e: response.error = str(e) return HttpResponse(json.dumps(response.error))
def post(self, request): res = BaseResponse() user_id = request.user.pk course_id = request.data.get("course_id", "") course_obj = Course.objects.filter(pk=course_id).first() if not course_obj: res.code = 1040 res.error = "课程id不存在" return Response(res.dict) else: name = "ShoppingCar_for_userId_%s" % user_id Value = { "course_id": course_id, "course_img": str(course_obj.course_img), "PricePolicy": [{ "id": police_obj.id, "is_promotion": police_obj.is_promotion, "promotion_price": police_obj.promotion_price, "price": police_obj.price, "valid_period": "永久有效" if police_obj.is_valid_forever else police_obj.get_valid_period_display() } for police_obj in course_obj.price_policy.all()] } try: conn.hmset(name, {"course_id_%s" % course_id: Value}) res.code = 1000 res.data = {"加入购物车成功"} except Exception as e: res.code = 1035 res.error = "加入购物车失败,reason:" + str(e) return Response(res.dict)
def login(self, request, *args, **kwargs): """用户登陆认证""" response = BaseResponse() try: username = request.data.get('username') pwd = request.data.get('password') # 验证用户和密码 user = authenticate(username=username, password=pwd) # obj = User.objects.filter(username=user).first() # obj = User.objects.get(username=user) # uclass = UserInfo.objects.get(user=obj) # print(type(uclass)) 输出结果如下,所以此步 定义为uclass # <class 'rbac.models.UserInfo'> if not user: # 判断查询结果 response.code = 1002 response.error = '用户名或密码错误' else: login(request, user) uclass = UserInfo.objects.get(user=user) obj = UserInfo.objects.filter(user_id=uclass.user_id).first() # 查询当前用户的所有角色 role = obj.roles.all() permission_list = [] for i in role: # 查看当前用户所有角色的所有权限 per = i.permissions.all() for j in per: permission_list.append(j.url) response.code = 1000 # 用户所具备的权限列表写入session request.session['url'] = permission_list init_permission(request, obj) except Exception as e: response.code = 10005 response.error = '操作异常' return Response(response.dict)
def get_dir_json(request): """ 目录列表json,供前端ajax调用 :param request: :return: """ res = BaseResponse() # 初始化返回值 if request.method == "POST": ip = request.POST.get('ip') dir = request.POST.get('dir') key = request.POST.get('key') if key: log_list = get_search_log_list(ip, dir,key) # 分页a标签的herf前缀 herf_prefix = "?ip={}&dir={}&search={}".format(ip, dir, key) else: log_list = get_log_list(ip, dir) # 分页a标签的herf前缀 herf_prefix = "?ip={}&dir={}".format(ip, dir) # print("log_list", log_list) if log_list is False: res.code = 500 res.error = "获取目录列表失败" elif log_list == []: res.code = 500 res.error = "目录列表为空" elif log_list == {}: res.code = 500 res.error = "搜索结果为空" else: res.data = log_list res.url = "/view_dir/%s" % (herf_prefix) else: res.code = 500 res.error = "非法请求" return HttpResponse(json.dumps(res.__dict__))
def get_server_urlmaps_detial(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') urlmaps_id = post_dict.get('urlmaps_id') get_detail_data = repository_models.UrlConfigHandler.objects.get(id=urlmaps_id) response.data = get_detail_data except Exception as e: response.status = False response.message = str(e) return response
def delete_urlmaps(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') urlmaps_id = post_dict.get('urlmaps_id') data_from_db = repository_models.UrlConfigHandler.objects.get(id=urlmaps_id) data_from_db.delete() except Exception as e: response.status = False response.message = str(e) return response
def delete_server_logs(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') log_id = post_dict.get('log_id') add_to_db = repository_models.WebConfigLogsCenter.objects.get(id=log_id) add_to_db.delete() except Exception as e: response.status = False response.message = str(e) return response
def delete_server_instance(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') delete_instance_id = post_dict.get('instance_id') get_data_from_db = repository_models.AppInstances.objects.get(id=delete_instance_id) get_data_from_db.delete() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def delete_server_instance(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') group_id = post_dict.get('group_id') docker_id = post_dict.get('docker_id') add_to_db = repository_models.AppGroups.objects.get(id=group_id) add_to_db.docker.remove(CMDB_MODELS.DockerInstance.objects.get(id=docker_id)) except Exception as e: response.status = False response.message = str(e) return response
def put_data(request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') user_id = put_dict.get('group_id') group_name = put_dict.get('group_name') update_data = user_models.UserGroup.objects.get(id=user_id) update_data.name = group_name update_data.save() except Exception as e: print(Exception,e) response.status = False response.message = str(e) return response
def update_yaml_conf(self, request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') update_group_id = post_dict.get('group_id') yaml_conf_data = post_dict.get('yaml_conf_data') get_yaml_from_db = repository_models.DockerYamlConf.objects.get(group_id__id=update_group_id) get_yaml_from_db.yaml_data = json.dumps(self.__yaml_to_json(yaml_conf_data)) get_yaml_from_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def add_server_instance(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') print(post_dict) add_instance_group_id = post_dict.get('add_instance_group_id') add_instance_id = post_dict.get('add_instance_id') add_to_db = repository_models.AppGroups.objects.get(id=add_instance_group_id) add_to_db.instance.add(CMDB_MODELS.Asset.objects.get(id=add_instance_id)) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def put_assets(request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') project_id = put_dict.get('project_id') project_name = put_dict.get('project_name') business_unit_id = put_dict.get('business_unit_id') update_data = repository_models.ProjectInfo.objects.get(id=project_id) update_data.name = project_name update_data.business_unit = CMDB_MODELS.BusinessUnit.objects.get(id=business_unit_id) update_data.save() except Exception as e: print(Exception,e) response.status = False response.message = str(e) return response
def update_server_instance(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') docker_group_id = post_dict.get('docker_group_id') new_docker_id = post_dict.get('new_docker_id') old_docker_id = post_dict.get('old_docker_id') get_group_from_db = repository_models.AppGroups.objects.get(id=docker_group_id) get_group_from_db.docker.remove(CMDB_MODELS.DockerInstance.objects.get(id=old_docker_id)) get_group_from_db.docker.add(CMDB_MODELS.DockerInstance.objects.get(id=new_docker_id)) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def chart(): response = BaseResponse() try: sql = """ SELECT id, name, (select count(id) from asset as A where B.id=A.business_unit_id and A.device_type_id=1) as server_count, (select count(id) from asset as A where B.id=A.business_unit_id and A.device_type_id=2) as switch_count, (select count(id) from asset as A where B.id=A.business_unit_id and A.device_type_id=3) as firewall_count from businessUnit as B""" result = models.BusinessUnit.objects.raw(sql) ret = { 'categories':[], 'series':[ { 'name':'服务器', 'data':[] }, { 'name':'交换机', 'data':[] }, { 'name':'防火墙', 'data':[] } ] } for row in result: ret['categories'].append(row.name) ret['series'][0]['data'].append(row.server_count) ret['series'][1]['data'].append(row.switch_count) ret['series'][2]['data'].append(row.firewall_count) response.data = ret except Exception as e: response.status = False response.error = str(e) return response
def update_server_group(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') update_group_id = post_dict.get('group_id') add_group_name = post_dict.get('add_group_name') add_group_yaml_path = post_dict.get('add_group_yaml_path') get_group_from_db = repository_models.AppGroups.objects.get(id=update_group_id) get_group_from_db.name = add_group_name get_group_from_db.yaml_path = add_group_yaml_path get_group_from_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def update_server_logs(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') log_id = post_dict.get('log_id') add_server_log_url = post_dict.get('add_server_log_url') add_server_log_memo = post_dict.get('add_server_log_memo') get_logs_from_db = repository_models.WebConfigLogsCenter.objects.get(id=log_id) get_logs_from_db.url = add_server_log_url get_logs_from_db.memo = add_server_log_memo get_logs_from_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def add_data(request): response = BaseResponse() try: response.error = [] post_dict = QueryDict(request.body, encoding='utf-8') # print(post_dict) group_name = post_dict.get('group_name') add_to_db = user_models.UserGroup( name=group_name, ) add_to_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def put_assets(request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') server_id = put_dict.get('server_id') app_name = put_dict.get('app_name') project_id = put_dict.get('project_id') app_type = put_dict.get('app_type') update_data = repository_models.Applications.objects.get(id=server_id) update_data.name = app_name update_data.project_id = repository_models.ProjectInfo.objects.get(id=project_id) update_data.app_type = app_type update_data.save() except Exception as e: print(Exception,e) response.status = False response.message = str(e) return response
def update_server_instance(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') instance_id = post_dict.get('instance_id') add_instance_group_id = post_dict.get('add_instance_group_id') add_instance_ip = post_dict.get('add_instance_ip') add_instance_port = post_dict.get('add_instance_port') get_instance_from_db = repository_models.AppInstances.objects.get(id=instance_id) get_instance_from_db.group_id = repository_models.AppGroups.objects.get(id=add_instance_group_id) get_instance_from_db.ip = add_instance_ip get_instance_from_db.port = add_instance_port get_instance_from_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def add_urlmaps(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') urlmaps_url = post_dict.get('urlmaps_url') urlmaps_group_id = post_dict.get('urlmaps_group_id') urlmaps_memo = post_dict.get('urlmaps_memo') add_to_db = repository_models.UrlConfigHandler( group_id_id = urlmaps_group_id, url = urlmaps_url, memo = urlmaps_memo ) add_to_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def add_server_logs(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') add_logs_group_id = post_dict.get('add_logs_group_id') add_server_log_url = post_dict.get('add_server_log_url') add_server_log_memo = post_dict.get('add_server_log_memo') add_to_db = repository_models.WebConfigLogsCenter( group_id_id = add_logs_group_id, url = add_server_log_url, memo = add_server_log_memo ) add_to_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def add_data(request): response = BaseResponse() try: response.error = [] post_dict = QueryDict(request.body, encoding='utf-8') print(post_dict) project_name = post_dict.get('project_name') business_unit_id = post_dict.get('business_unit_id') add_to_db = repository_models.ProjectInfo( name=project_name, business_unit=CMDB_MODELS.BusinessUnit.objects.get(id=business_unit_id), ) add_to_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def put_data(request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') user_id = put_dict.get('user_id') user_name = put_dict.get('user_name') user_phone = put_dict.get('user_phone') user_email = put_dict.get('user_email') user_department = put_dict.get('user_department') user_group_list = put_dict.getlist('user_group') user_roles_list = put_dict.getlist('user_roles') update_data = user_models.UserProfile.objects.get(id=user_id) try: groups_list = user_models.UserGroup.objects.filter(id__in=user_group_list) except: groups_list = [] try: roles_list = user_models.Roles.objects.filter(id__in=user_roles_list) except: roles_list = [] update_data.username = user_name update_data.phone = user_phone update_data.email = user_email update_data.department = user_department update_data.user_groups.clear() update_data.roles.clear() update_data.user_groups.add(*groups_list) update_data.roles.add(*roles_list) update_data.save() except Exception as e: print(Exception,e) response.status = False response.message = str(e) return response
def put_idc(request): response = BaseResponse() try: response.error = [] put_dict = QueryDict(request.body, encoding='utf-8') idc_id = put_dict.get('idc_id') idc_name = put_dict.get('idc_name') idc_floor = put_dict.get('idc_floor') idc_phone = put_dict.get('idc_phone') idc_address = put_dict.get('idc_address') update_data = CMDB_MODELS.IDC.objects.get(id=idc_id) update_data.name = idc_name update_data.floor = idc_floor update_data.phone = idc_phone update_data.idc_address = idc_address update_data.save() except Exception as e: print(Exception,e) response.status = False response.message = str(e) return response
def update_urlmaps(request): response = BaseResponse() try: response.error = {} post_dict = QueryDict(request.body, encoding='utf-8') print(post_dict) urlmaps_id = post_dict.get('urlmaps_id') urlmaps_url = post_dict.get('urlmaps_url') urlmaps_group_id = post_dict.get('urlmaps_group_id') urlmaps_memo = post_dict.get('urlmaps_memo') get_data_from_db = repository_models.UrlConfigHandler.objects.get(id=urlmaps_id) get_data_from_db.group_id_id = urlmaps_group_id get_data_from_db.url = urlmaps_url get_data_from_db.memo = urlmaps_memo get_data_from_db.save() except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response
def chart(last_id): response = BaseResponse() try: import time import random last_id = int(last_id) if last_id == 0: end = 100 else: end = random.randint(1,10) ret = [] for i in range(0,end): temp = {'x':time.time()*1000,'y':random.randint(1,1000)} ret.append(temp) last_id += 10 response.data = ret response.last_id = last_id except Exception as e: response.status = False response.error = str(e) return response
def add_data(request): response = BaseResponse() try: response.error = [] post_dict = QueryDict(request.body, encoding='utf-8') print(post_dict) app_name = post_dict.get('app_name') project_id = post_dict.get('project_id') app_type = post_dict.get('app_type') add_to_db = repository_models.Applications( name = app_name, app_type = app_type, project_id = repository_models.ProjectInfo.objects.get(id=project_id), ) add_to_db.save() # # create groups include production and cstest. # from urllib import parse, request # import json # import urllib # groups_list = ['CSTest', 'Production'] # header_dict = {"Content-Type": "application/x-www-form-urlencoded"} # url = 'http://127.0.0.1:%s/update-server-group.html' % settings.project_port # for group in groups_list: # textmod = {"add_group_app_id": add_to_db.id, "add_group_name": group, "add_group_yaml_path": 1} # textmod = parse.urlencode(textmod).encode(encoding='utf-8') # request = urllib.request.Request(url=url, data=textmod, headers=header_dict) # response = urllib.request.urlopen(request) except Exception as e: print(Exception, e) response.status = False response.message = str(e) return response