def server_save(request, server_id=0): server_id = server_id or int(request.REQUEST.get('sid', '') or '0') new_server_id = int(request.REQUEST.get('new_server_id', '') or 0) model = None source_model = None is_add = True if server_id: model = Server.objects.get(id=server_id) source_model = copy.copy(model) is_add = False if not model: model = Server() model.id = new_server_id list_group = Group.objects.all() exists = False update_id = False err_msg = '' if server_id != new_server_id: exists = Server.objects.filter(id=new_server_id).exists() if exists: err_msg = '保存的服务器ID已存在' return render_to_response('feedback.html', locals()) else: update_id = True if not request.POST.get("tabId"): err_msg = '请填入分组ID' return render_to_response('feedback.html', locals()) model.tabId = int(request.POST.get("tabId") or 0) # model.client_ver = request.POST.get('client_ver', '') # 客户端版本 model.name = request.POST.get('name', '') model.status = int(request.POST.get('status', '2')) model.commend = int(request.POST.get('commend', '2')) # model.require_ver = int(request.POST.get('require_ver', '0')) # 要求最低版本 model.game_addr = request.POST.get('game_addr', '') model.game_port = int(request.POST.get('game_port', '2008')) model.report_url = request.POST.get('report_url', '') model.log_db_config = request.POST.get('log_db_config', '') model.remark = request.POST.get('remark', '') model.order = new_server_id if server_id == 0 else server_id model.json_data = request.POST.get('json_data', '') model.alias = request.REQUEST.get('alias', '') # model.is_ios = int(request.POST.get('is_ios', '0')) #ios标识 create_time = request.POST.get('create_time', '') model.last_time = datetime.datetime.now() model.game_db_addr_port = request.POST.get('game_db_addr_port', '') model.game_db_name = request.POST.get('game_db_name', '') model.game_db_user = request.POST.get('game_db_user', '') model.game_db_password = request.POST.get('game_db_password', '') if create_time == '': create_time = datetime.datetime.now() else: create_time = datetime.datetime.strptime(create_time, '%Y-%m-%d %H:%M:%S') model.create_time = create_time # 保存详细操作日志 save_server_log(server_id, is_add, request, source_model, model) if not exists: if model.name != '' and model.game_addr != '': try: # 修改ID old_server = copy.copy(model) if update_id: model.id = new_server_id model.save() group_ids = request.POST.getlist('group_id') group_ids = [int(x) for x in group_ids] for group_model in list_group: if group_model.id in group_ids: group_model.server.add(model) try: # 添加服务器分区后,在增加到角色资源里面 from models.admin import Role, Resource role_exclude = Role.objects.exclude( name__contains="系统管理员") for r in role_exclude: role_group_list = r.get_resource( 'server_group') if group_model in role_group_list: ser_l = list( group_model.server.values_list('id')) extend_l = r.get_resource( 'server').values_list('id') ser_l.extend(extend_l) ser_l = list(set([i[0] for i in ser_l])) r.create_resource('server', ser_l) r.save() except: print trace_msg() else: group_model.server.remove(model) # 前面保存没有出错 if update_id: old_server.status = Server.Status.TEST old_server.save() except Exception, e: err_msg = trace_msg() else: err_msg = '填写必要数据!'