def create(request): if request.method == "GET": p_id = request.GET.get('p_id', None) is_extends = False module = None if p_id: is_extends = True module = Module.objects.get(pk=p_id) groups = Group.objects() return render_to_response("module/module_create.html", locals(), context_instance=RequestContext(request)) elif request.method == 'POST': response = {"success": False, "error": "", "id": None} try: # 获取参数 request_json = json.loads(request.POST.get("json")) now = datetime.datetime.now() # 校验参数 module_id = request_json["moduleId"] module_name = request_json["moduleName"] module_remark = request_json["module_remark"] module_group = request_json["module_group"] module = None if module_id is not None: module = Module.objects.get(pk=module_id) module_by_name = Module.objects(name=module_name) if len(module_by_name) > 0: if len(module_by_name) > 1: response["error"] = "模块名称重复!" logger.error(response["error"]) return HttpResponse(json.dumps(response), mimetype="application/json") module_by_name = module_by_name[0] if module_by_name.id != module.id: response["error"] = "模块名称重复!" logger.error(response["error"]) return HttpResponse(json.dumps(response), mimetype="application/json") else: module_by_name = Module.objects(name=module_name) if len(module_by_name) > 0: response["error"] = "模块名称重复!" logger.error(response["error"]) return HttpResponse(json.dumps(response), mimetype="application/json") module = Module() # 保存 # 先保存文件信息 runInfoList = request_json["runInfoList"] run_info_list = [] for item in runInfoList: run_info = None run_info_id = item["runInfoId"] if run_info_id is not None: run_info = RunInfo.objects(pk=run_info_id)[0] else: run_info = RunInfo() run_info.run_info_name = item["run_info_name"] run_info.workingDir = item["workingDir"] run_info.runParam = item["runParam"] run_info.runType = item["runType"] run_info.timerParam = item["timerParam"] run_info.save() run_info_list.append(run_info) # 保存文件信息 fileInfoList = request_json["fileInfoList"] file_info_list = [] for item in fileInfoList: file_info_id = item["fileInfoId"] if file_info_id is not None: file_info = FileInfo.objects(pk=file_info_id)[0] else: file_info = FileInfo() file_info.filePath = item["filePath"] file_info.mod = item["mod"] file_info.descript = item["descript"] file_info.fileType = item["file_type"] file_info.rawPath = item["rawPath"] file_info.remark = item["remark"] if file_info_id is None: file_info.createTime = now file_info.updateTime = now file_info.save() file_info_list.append(file_info) # 保存模块信息 module.name = module_name module.head = request_json["moduleHead"] module.remark = module_remark module.version = VERSION_PREFIX_MODULE + str( int(time.time() * 1000)) module.group = module_group # 删除已删除的file和run信息 for item in set(module.files) - set(file_info_list): if type(item) is not DBRef: item.delete() for item in set(module.runInfos) - set(run_info_list): if type(item) is not DBRef: item.delete() module.files = file_info_list module.runInfos = run_info_list if module_id is None: module.createTime = now module.save() response["success"] = True response["id"] = str(module.id) response["error"] = "执行成功!" return HttpResponse(json.dumps(response), mimetype="application/json") except Exception, e: response["error"] = "系统异常![%s]" % str(e) logger.error(response["error"] + getTraceBack()) return HttpResponse(json.dumps(response), mimetype="application/json")