def post(self, request): ret = {"result": 0} m_id = request.POST.get("cmdb_id") type = request.POST.get("type") if not m_id or not type: ret["result"] = 1 ret["msg"] = "未收到前端传过来的值" return JsonResponse(ret) try: m_obj = CmdbModel.objects.get(id__exact=m_id) except CmdbModel.DoesNotExist: ret["result"] = 1 ret["msg"] = "modelu_name: %s 不存在,因此不能查询其相应的打包版本" % (module_name) wslog_error().error(ret["msg"]) return JsonResponse(ret) if type == 'publish': ret["version_list"] = list( m_obj.publishversionmodel_set.filter( Q(status__exact="packed") | Q(status__exact="running")).order_by("-id")[:5].values( "id", "version", "pack_user", "status")) else: ret["version_list"] = list( m_obj.publishversionmodel_set.filter( Q(status__exact="running") | Q(status__exact="run_pre")).order_by("-id")[:5].values( "id", "version", "pack_user", "status")) return JsonResponse(ret)
def post(self, request): ret = {"result": 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'删除任务执行结果'的权限,请联系运维!" return JsonResponse(ret) tm_id = request.POST.get("id") try: tm_obj = TaskMeta.objects.get(id__exact=tm_id) tm_obj.delete() except TaskMeta.DoesNotExist: ret["result"] = 1 ret["msg"] = "TaskMeta 模型不存在 id: %s 的对象,请刷新重试" % (tm_id) return JsonResponse(ret) except Exception as e: ret["result"] = 1 ret["msg"] = "TaskMeta 模型删除 id: %s 的对象失败,请查看日志" % (tm_id) wslog_error().error("TaskMeta 模型删除 id %s 的对象失败,错误信息: %s" % (tm_id, e.args)) return JsonResponse(ret) else: ret["msg"] = "TaskMeta 模型删除 id: %s 的对象成功" % (tm_id) return JsonResponse(ret)
def post(self,request): ret = {"result":0} ## ajax 请求的权限验证 if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'添加工单类型'的权限,请联系运维!" return JsonResponse(ret) workform_type_form = WorkFormTypeAddForm(request.POST) if not workform_type_form.is_valid(): ret["result"] = 1 error_msg = json.loads(workform_type_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join([ i["message"] for v in error_msg.values() for i in v ]) return JsonResponse(ret) try: wft_obj = WorkFormTypeModel(**workform_type_form.cleaned_data) wft_obj.save() except Exception as e: ret["result"] = 1 ret["msg"] = "工单类型: '%s' 添加失败" %(workform_type_form.cleaned_data.get("cn_name")) wslog_error().error("工单类型: '%s' 添加失败,错误信息: %s" %(workform_type_form.cleaned_data.get("cn_name"),e.args)) return JsonResponse(ret) else: ret["msg"] = "工单类型: '%s' 添加成功" %(workform_type_form.cleaned_data.get("cn_name")) return JsonResponse(ret)
def get(self, request): ret = {"result": 0, "msg": None} idc_id = request.GET.get("id", 0) ## ajax 请求的权限验证 if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) try: idc_obj = IDC.objects.get(id__exact=idc_id) except IDC.DoesNotExist: ret["result"] = 1 ret["msg"] = "IDC id: %s 不存在,请刷新重试" % (idc_id) wslog_error().error("IDC 模型对象id: %s 不存在" % (idc_id)) return JsonResponse(ret) try: idc_info = model_to_dict(idc_obj) except Exception as e: ret["result"] = 1 ret["msg"] = "IDC 模型对象转dict 失败,请查看日志" wslog_error().error("IDC 模型对象id: %s 转dict 失败,错误信息: %s" % (idc_id, e.args)) else: ret["idc_info"] = idc_info wslog_info().info("IDC 模型对象id: %s 查询成功并返回给前端" % (idc_id)) return JsonResponse(ret)
def inception_check_to_split(self,sql_obj): sql = '''/*--user=%s;--password=%s;--host=%s;--enable-check;--port=%s;*/ inception_magic_start; use %s; %s inception_magic_commit;''' %(self.user,self.password,self.host,self.port,self.db_name,self.sql_str) ret = self.inception_server(sql) if ret["result"] == 1: wslog_error().error(ret["msg"]) return ret inc_check_result = ret["inc_result"] del ret["inc_result"] for s in inc_check_result[1:]: try: se_obj = SQLExecDetailModel(**{"sql":s[5]+';',"sql_block":sql_obj,"check_affected_rows": s[6],"sql_sha1": s[10]}) se_obj.save() except Exception as e: ret["result"] = 1 wslog_error().error("SQL 拆分时 SQLExecDetailModel 保存对象失败,错误信息: %s" %(e.args)) break return ret
def post(self,request): ret = {"result":0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) inc_bg_form = InceptionBackgroundAddForm(request.POST) if not inc_bg_form.is_valid(): ret['result'] = 1 error_msg = json.loads(inc_bg_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join([i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) try: inc_bg_obj = InceptionBackgroundModel(**inc_bg_form.cleaned_data) inc_bg_obj.save() except Exception as e: ret['result'] = 1 ret['msg'] = "Inception 添加服务器 %s 失败,错误信息: %s" % (inc_bg_form.cleaned_data.get('inc_ip'), e.args) wslog_error().error("Inception 添加服务器 %s 失败,错误信息: %s" % (inc_bg_form.cleaned_data.get('inc_ip'), e.args)) else: ret['msg'] = "Inception 添加服务器 %s 成功" % (inc_bg_form.cleaned_data.get('name')) return JsonResponse(ret)
def post(self,request): ret = {"result":0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) inc_ds_form = InceptionDangerSQLAddForm(request.POST) if not inc_ds_form.is_valid(): ret['result'] = 1 error_msg = json.loads(inc_ds_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join([i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) try: inc_ds_obj = InceptionDangerSQLModel(**inc_ds_form.cleaned_data) inc_ds_obj.save() except Exception as e: ret['result'] = 1 ret['msg'] = "Inception 自定义高危SQL %s 添加失败,错误信息: %s" % (inc_ds_form.cleaned_data.get("sql_keyword"), e.args) wslog_error().error("Inception 自定义高危SQL %s 添加失败,错误信息: %s" % (inc_ds_form.cleaned_data.get("sql_keyword"), e.args)) else: ret['msg'] = "Inception 自定义高危SQL %s 添加成功" % (inc_ds_form.cleaned_data.get("sql_keyword")) return JsonResponse(ret)
def WxMsgSend(send_data): r = requests.post(wx_url, data=send_data) if r.content.decode('utf8') == 'OK': wslog_info().info("微信消息 发送 成功") else: wslog_error().error("微信消息 发送 失败,错误信息: %s" % (json.loads(r.content)["errmsg"]))
def post(self, request): ret = {"result": 0} ph_id = request.POST.get("id") if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) try: ph_obj = PublishHistoryModel.objects.get(id__exact=ph_id) except PublishHistoryModel.DoesNotExist: ret["result"] = 1 ret["msg"] = "PublishHistoryModel 查不到该记录 id: %s" % (ph_id) return JsonResponse(ret) try: ph_obj.delete() except Exception as e: ret["result"] = 1 ret["msg"] = "PublishHistoryModel 删除对象 id: %s 失败, 请查看日志" % (ph_id) wslog_error().error( "PublishHistoryModel 删除对象 id: %s 失败, 错误信息: %s" % (ph_id, e.args)) else: ret["msg"] = "PublishHistoryModel 删除对象 id: %s 成功" % (ph_id) return JsonResponse(ret)
def get(self, request): ret = {"result": 0} pt_id = request.GET.get("id") try: pt_obj = PeriodicTask.objects.get(id__exact=pt_id) except PeriodicTask.DoesNotExist: ret["result"] = 1 ret["msg"] = "PeriodicTask 模型中不存在ID: %s 的对象,请刷新重试..." % (pt_id) return JsonResponse(ret) try: pt_info = model_to_dict(pt_obj) pt_info["enabled"] = '0' if pt_obj.enabled else '1' pt_info["schedule"] = "%s %s %s %s %s" %(pt_obj.crontab.minute,\ pt_obj.crontab.hour,\ pt_obj.crontab.day_of_month,\ pt_obj.crontab.month_of_year,\ pt_obj.crontab.day_of_week) \ if pt_obj.crontab else "%s %s" %(pt_obj.interval.every,pt_obj.interval.period) pt_info["date_changed"] = pt_obj.date_changed.strftime( "%Y-%m-%d %X") if pt_obj.date_changed else '' pt_info["expires"] = pt_obj.expires.strftime( "%Y-%m-%d %X") if pt_obj.expires else '' pt_info["last_run_at"] = pt_obj.last_run_at.strftime( "%Y-%m-%d %X") if pt_obj.last_run_at else '' pt_info["total_run_count"] = pt_obj.total_run_count except Exception as e: ret["result"] = 1 ret["msg"] = "对象 %s 转dict失败,请查看日志..." % (pt_obj.name) wslog_error().error("对象 %s 转dict失败,错误信息: %s" % (pt_obj.name, e.args)) else: ret["pt_info"] = pt_info return JsonResponse(ret)
def get(self,request): ret = {"result":0} ## ajax 请求的权限验证 if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'删除工单类型'的权限,请联系运维!" return JsonResponse(ret) wft_id = request.GET.get("id") try: wft_obj = WorkFormTypeModel.objects.get(id__exact=wft_id) wft_obj.delete() except WorkFormTypeModel.DoesNotExist: ret["result"] = 1 ret["msg"] = "WorkFormTypeModel 模型不存在 id: %s 的对象,请刷新重试" %(wft_id) return JsonResponse(ret) except Exception as e: ret["result"] = 1 ret["msg"] = "WorkFormTypeModel 模型删除 id: %s 的对象失败,请查看日志" %(wft_id) wslog_error().error("WorkFormTypeModel 模型删除 id %s 的对象失败,错误信息: %s" %(wft_id,e.args)) return JsonResponse(ret) else: ret["msg"] = "WorkFormTypeModel 模型删除 id: %s 的对象成功" %(wft_id) return JsonResponse(ret)
def post(self, request): ret = {"result": 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'删除 IntervalSchedule '的权限,请联系运维!" return JsonResponse(ret) is_id = request.POST.get("id") try: is_obj = IntervalSchedule.objects.get(id__exact=is_id) is_obj.delete() except IntervalSchedule.DoesNotExist: ret["result"] = 1 ret["msg"] = "IntervalSchedule 模型不存在 id: %s 的对象,请刷新重试" % (is_id) return JsonResponse(ret) except Exception as e: ret["result"] = 1 ret["msg"] = "IntervalSchedule 模型删除 id: %s 的对象失败,请查看日志" % (is_id) wslog_error().error("IntervalSchedule 模型删除 id %s 的对象失败,错误信息: %s" % (is_id, e.args)) return JsonResponse(ret) else: ret["msg"] = "IntervalSchedule 模型删除 id: %s 的对象成功" % (is_id) return JsonResponse(ret)
def post(self, request): ret = {'result': 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) dbi_id = request.POST.get('id', None) try: dbi_obj = DBInstanceModel.objects.get(id=dbi_id) dbi_obj.delete() except DBInstanceModel.DoesNotExist: ret['result'] = 1 ret['msg'] = "删除 Msyql 实例失败,获取不到 id" wslog_error().error("删除 Mysql 实例: %s 失败,获取不到 Cluster id" % (dbi_id)) except Exception as e: ret['result'] = 1 ret['msg'] = "删除 Mysql 实例: %s 失败,请查看日志" % (db_id) wslog_error().error("删除 Mysql 实例: %s 失败,错误信息: %s" % (dbi_id, e.args)) else: ret['msg'] = "Mysql 实例: %s 删除成功" % (dbi_obj.name) return JsonResponse(ret)
def post(self, request): ret = {"result": 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) cluster_form = DBClusterAddForm(request.POST) if not cluster_form.is_valid(): ret['result'] = 1 error_msg = json.loads( cluster_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join( [i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) try: dbc = DBClusterModel(**cluster_form.cleaned_data) dbc.save() ret['msg'] = "Mysql 集群 %s 添加成功" % ( cluster_form.cleaned_data.get('name')) except Exception as e: ret['result'] = 1 ret['msg'] = "Mysql 集群 %s 添加失败,错误信息: %s" % ( cluster_form.cleaned_data.get('name'), e.args) wslog_error().error( "Mysql 集群 %s 添加失败,错误信息: %s" % (cluster_form.cleaned_data.get('name'), e.args)) return JsonResponse(ret)
def post(self, request): ret = {"result": 0} db_id = request.POST.get("id") if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有权限,请联系运维!" return JsonResponse(ret) db_change_form = DBChangeForm(request.POST) if not db_change_form.is_valid(): ret['result'] = 1 error_msg = json.loads( db_change_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join( [i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) try: db_obj = DBModel.objects.get(id__exact=db_id) db_obj.save(update_fields=["last_update_time"]) db_obj.db_manage_group.set( db_change_form.cleaned_data.get("db_manage_group")) db_obj.cluster_name.set( db_change_form.cleaned_data.get("cluster_name")) except Exception as e: ret["result"] = 1 ret["msg"] = "DBModel 更新 id: %s 的对象失败,错误信息: %s" % (db_id, e.args) wslog_error().error("DBModel 更新 id: %s 的对象失败,错误信息: %s" % (db_id, e.args)) else: ret["msg"] = "DBModel 更新 id: %s 的对象成功" % (db_id) return JsonResponse(ret)
def inception_backup_server(self,sql): ret = self.get_inc_server_obj() if ret["result"] == 1: wslog_error().error(ret["msg"]) return ret inc_server_obj = ret["inc_server_obj"] del ret["inc_server_obj"] try: conn = pymysql.connect(host=inc_server_obj.inc_backup_ip,\ user=inc_server_obj.inc_backup_username,\ passwd=inc_server_obj.inc_backup_password,\ db=self.db_name,\ port=int(inc_server_obj.inc_backup_port),\ charset='utf8') cur = conn.cursor() cur.execute(sql) backup_select_result = cur.fetchall() cur.close() conn.close() except pymysql.Error as e: ret["result"] = 1 ret["msg"] = "连接 Inception 备份服务器执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1]) wslog_error().error("连接 Inception 备份服务器执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1])) else: ret["backup_select_result"] = backup_select_result return ret
def inception_server(self,sql): ret = self.get_inc_server_obj() if ret["result"] == 1: wslog_error().error(ret["msg"]) return ret inc_server_obj = ret["inc_server_obj"] del ret["inc_server_obj"] try: ''' 连接 inception 服务端 ''' conn = pymysql.connect(host=inc_server_obj.inc_ip,user='',passwd='',db='',port=int(inc_server_obj.inc_port),charset='utf8') cur = conn.cursor() cur.execute(sql) inc_result = cur.fetchall() # num_fields = len(cur.description) # field_names = [i[0] for i in cur.description] # print(field_names) # for row in inc_result: # print(row) cur.close() conn.close() except pymysql.Error as e: ret["result"] = 1 ret["msg"] = "连接 Inception 服务端执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1]) wslog_error().error("连接 Inception 服务端执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1])) else: ret["inc_result"] = inc_result return ret
def post(self, request): ret = {"result": 0, "msg": None} ## ajax 请求的权限验证 if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'删除 cmdb 模型对象'的权限,请联系运维!" return JsonResponse(ret) cid = request.POST.get("id") ret = GetCmdbObj(cid, ret) if ret["result"] == 1: return JsonResponse(ret) cmdb_obj = ret["msg"] try: cmdb_obj.delete() except Exception as e: ret["result"] = 1 ret["msg"] = "CmdbModel 删除对象 %s 失败,请查看日志" % (cmdb_obj.name) wslog_error().error("CmdbModel 删除 ID: %s 的对象失败,错误信息: %s" % (cid, e.args)) else: ret["msg"] = "CmdbModel 删除对象 %s 成功" % (cmdb_obj.name) wslog_info().info("CmdbModel 删除对象 %s 成功" % (cmdb_obj.name)) return JsonResponse(ret)
def post(self, request): ret = {"result": 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'添加定时任务'的权限,请联系运维!" return JsonResponse(ret) task_add_form = TaskAddForm(request.POST) if not task_add_form.is_valid(): ret["result"] = 1 error_msg = json.loads( task_add_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join( [i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) else: del task_add_form.cleaned_data["schedule"] print("task_add_form.cleaned_data: ", task_add_form.cleaned_data) if request.POST.get("expires"): task_add_form.cleaned_data["expires"] = datetime.strptime( request.POST.get("expires"), '%Y/%m/%d %H:%M') try: pt_obj = PeriodicTask(**task_add_form.cleaned_data) pt_obj.save() except Exception as e: ret["result"] = 1 ret["msg"] = "PeriodicTask 保存对象失败,请查看日志..." wslog_error().error("PeriodicTask 保存对象失败, 错误信息: %s" % (e.args)) else: ret["msg"] = "添加 PeriodicTask 对象成功" return JsonResponse(ret)
def CmdbIpsUpdate(ips, cmdb_obj, ret): if not ips: ret["result"] = 1 ret["msg"] = "请至少选择一个IP" return ret try: server_obj_list = [ ServerModel.objects.get(id__exact=sid) for sid in ips ] except Exception as e: ret["result"] = 1 ret["msg"] = "ServerModel 查询对象失败,请刷新并重新选择IP地址" wslog_error().error("ServerModel 查询对象地址失败, 错误信息: %s" % (e.args)) return ret try: cmdb_obj.ips.set(server_obj_list) except Exception as e: ret["result"] = 1 ret["msg"] = "CmdbModel模型对象: %s 关联 ServerModel 失败,请查看日志" % ( cmdb_obj.name) wslog_error().error("CmdbModel 模型对象: %s 关联 ServerModel 失败,错误信息: %s" % (cmdb_obj.name, e.args)) finally: return ret
def post(self, request): ret = {"result": 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'添加 IntervalSchedule '的权限,请联系运维!" return JsonResponse(ret) interval_schedule_add_form = IntervalScheduleForm(request.POST) if not interval_schedule_add_form.is_valid(): ret["result"] = 1 error_msg = json.loads( interval_schedule_add_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join( [i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) try: cs_obj = IntervalSchedule( **interval_schedule_add_form.cleaned_data) cs_obj.save() except Exception as e: ret["result"] = 1 ret["msg"] = "IntervalSchedule 保存对象失败,请查看日志..." wslog_error().error("IntervalSchedule 保存对象失败, 错误信息: %s" % (e.args)) else: ret["msg"] = "添加 IntervalSchedule 对象成功" return JsonResponse(ret)
def get_task_name(value): try: trr_obj = TaskResultRecord.objects.get(task_id__exact=value) except Exception as e: wslog_error().error("TaskResultRecord 模型中查询 task_id: %s 失败,错误信息: %s" %(value,e.args)) return value else: return trr_obj.task_name
def task_prerun_handler(sender=None, task_id=None, task=None, **kwargs): trr_obj = TaskResultRecord() try: trr_obj.task_name = task.name trr_obj.task_id = str(task_id) trr_obj.save() except Exception as e: wslog_error().error("保存 task: %s 的 task_id 失败,错误信息: %s" % (self.name, e.args))
def get(self, request): try: interval_list = [{"id":is_obj.id,"intervals_str":"%s %s" %(is_obj.every,is_obj.period)} \ for is_obj in IntervalSchedule.objects.all()] except Exception as e: interval_list = [] wslog_error().error("通过 api 接口获取 interval 调度信息失败,错误信息: %s" % (e.args)) return JsonResponse(interval_list, safe=False)
def get(self, request): i_obj = inspect() try: registered_tasks_list = list( set(chain.from_iterable(i_obj.registered_tasks().values()))) except Exception as e: registered_tasks_list = [] wslog_error().error("通过 api 接口获取 注册的task信息失败,错误信息: %s" % (e.args)) return JsonResponse(registered_tasks_list, safe=False)
def get(self, request): ret = {"result": 0, "msg": None} sid = request.GET.get("id", 0) try: server_aliyun_obj = ServerModel.objects.get(id__exact=sid) except ServerModel.DoesNotExist: ret["result"] = 1 ret["msg"] = "Aliyun 上不存在 ID 为 %s 的服务器" % (sid) return JsonResponse(ret) try: #server_aliyun_info = model_to_dict(server_aliyun_obj) // 使用这个方法,读不到 DateTimeField 设置为 auto_now = True 的字段,因此读不到 last_update_time 字段 server_aliyun_info = ServerModel.objects.filter( id__exact=sid).values()[0] server_aliyun_info["env"] = { "id": server_aliyun_obj.env, "name": server_aliyun_obj.get_env_display() } server_aliyun_info[ "charge_type"] = server_aliyun_obj.get_charge_type_display() server_aliyun_info[ "status"] = server_aliyun_obj.get_status_display() try: server_aliyun_info[ "monitor_status"] = server_aliyun_obj.zabbixhostmodel.get_status_display( ) except Exception as e: wslog_error().error("服务器 %s 在 zabbix 中不存在" % (server_aliyun_obj.private_ip)) server_aliyun_info["monitor_status"] = "未监控" server_aliyun_info[ "renewal_type"] = server_aliyun_obj.get_renewal_type_display() server_aliyun_info["disk"] = server_aliyun_info["disk"].replace( "</br>", "\n") if server_aliyun_info.get("expired_time"): server_aliyun_info["expired_time"] = server_aliyun_info[ "expired_time"] if server_aliyun_info.get("offline_time"): server_aliyun_info["offline_time"] = server_aliyun_info[ "offline_time"] if server_aliyun_info.get("online_time"): server_aliyun_info["online_time"] = server_aliyun_info[ "online_time"] if server_aliyun_info.get("last_update_time"): server_aliyun_info["last_update_time"] = server_aliyun_info[ "last_update_time"] except Exception as e: ret["result"] = 1 ret["msg"] = "模型对象转dict失败" wslog_error().error("模型对象 %s 转 dict 失败,错误信息: %s" % (server_aliyun_obj.private_ip, e.args)) else: ret["server_info"] = server_aliyun_info return JsonResponse(ret)
def mail_send_html(subject, message, mail_to, html_content=None): ''' 如果html_content 为None 则邮件不能发送, 而上面那种方式则不会 ''' try: m = EmailMultiAlternatives(subject, message, EMAIL_HOST_USER, mail_to) m.attach_alternative(html_content, "text/html") m.send() except Exception as e: wslog_error().error("邮件: '%s' 发送失败,错误信息: %s" % (subject, e.args)) else: wslog_info().info("邮件: '%s' 发送成功" % (subject))
def post(self, request): ret = {"result": 0} if not request.user.has_perm(self.permission_required): ret["result"] = 1 ret["msg"] = "Sorry,你没有'修改定时任务'的权限,请联系运维!" return JsonResponse(ret) pt_id = request.POST.get("id") try: pt_obj = PeriodicTask.objects.get(id__exact=int(pt_id)) except PeriodicTask.DoesNotExist: ret["result"] = 1 ret["msg"] = "PeriodicTask 模型中不存在 id: %s 的对象, 请刷新重试..." % (pt_id) return JsonResponse(ret) task_update_form = TaskUpdateForm(request.POST) if not task_update_form.is_valid(): ret["result"] = 1 error_msg = json.loads( task_update_form.errors.as_json(escape_html=False)) ret["msg"] = '\n'.join( [i["message"] for v in error_msg.values() for i in v]) return JsonResponse(ret) if request.POST.get("expires"): pt_obj.expires = datetime.strptime(request.POST.get("expires"), '%Y/%m/%d %H:%M') if task_update_form.cleaned_data.get("schedule") == 'crontab': pt_obj.crontab = task_update_form.cleaned_data.get("crontab") pt_obj.interval = None else: pt_obj.interval = task_update_form.cleaned_data.get("interval") pt_obj.crontab = None try: pt_obj.task = task_update_form.cleaned_data.get("task") pt_obj.description = task_update_form.cleaned_data.get( "description") pt_obj.args = task_update_form.cleaned_data.get("args") pt_obj.kwargs = task_update_form.cleaned_data.get("kwargs") pt_obj.enabled = task_update_form.cleaned_data.get("enabled") pt_obj.save(update_fields=[ "task", "description", "args", "kwargs", "enabled", "interval", "crontab", "expires" ]) except Exception as e: ret["result"] = 1 ret["msg"] = "PeriodicTask 更新对象 ID: %s 失败,请查看日志..." % (pt_id) wslog_error().error("PeriodicTask 更新对象 ID: %s 失败, 错误信息: %s" % (pt_id, e.args)) else: ret["msg"] = "更新 PeriodicTask 对象成功" return JsonResponse(ret)
def GetCmdbObj(cid, ret): try: cmdb_obj = CmdbModel.objects.get(id__exact=cid) except CmdbModel.DoesNotExist: ret["result"] = 1 ret["msg"] = "CmdbModel 不存在 ID: %s 的对象,请刷新重试" % (cid) wslog_error().error("CmdbModel 不存在 ID: %s 的对象" % (cid)) else: ret["msg"] = cmdb_obj return ret
def get_ip_address(ifname): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ip_addr = socket.inet_ntoa( fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15].encode("utf8")))[20:24]) except Exception as e: wslog_error().error("获取本机 %s 地址失败,错误信息: %s" % (ifname, e.args)) ip_addr = '127.0.0.1' return ip_addr