def get_person_all_node(username: str): """ 获取个人所有节点信息 :param username: :return: """ all_node_info = list() # 获取唯一的user_id user = User.objects.filter(user_name=username).first() if not user: log.tag_error(DbStatus.Inquire, "User: %s not Exist In table user" % username) raise ActionError("User error") user_id = user.user_id all_node = UserNode.objects.filter(user_id=user_id).all() # 没有数据 if len(all_node) == 0: return all_node_info node_id_list = [node.node_id for node in all_node] node_info = Node.objects.filter(node_id__in=node_id_list).all() node_single = dict() for node in node_info: node_single["nodeId"] = node.node_id node_single["nodeName"] = node.node_name node_single["nodePath"] = node.node_path node_single["nodeInfo"] = get_node_by_path(node.node_path) all_node_info.append(deepcopy(node_single)) return all_node_info
def delete_node(node_path: str): """ 删除节点 :param node_path: :return: """ try: ZK.delete(node_path, recursive=True) except Exception as e: log.tag_error(ZkControlStatus.Delete, "delete node with error: " + str(e)) raise ActionError(KazooMsg.Delete_Failed)
def de_json(data: b""): """ 将b""型数据解码成json(dict) :param data: :return: """ if data == b"": return dict() decode_data = data.decode("utf-8") try: data_json = json.loads(decode_data) except Exception as e: log.tag_error(Code.DeCode, str(e)) raise ActionError("node data is not json type") return data_json
def my_listener(state): """ Listening for Connection Events :param state: """ if state == KazooState.LOST: log.tag_error( KazooStatus.Lost, "Register somewhere that session was lost, " "Please check session status") elif state == KazooState.SUSPENDED: log.tag_error(KazooStatus.Suspended, "Handle being disconnected from zookeeper") else: log.tag_info(KazooStatus.Conn, "Handle being connected/reconnected to zookeeper")
def get_node(node_path: str): """ 获取节点信息 :param node_path: :return: """ try: data, _ = ZK.get(node_path) except Exception as e: if type(e) == NoNodeError: log.tag_error(ZkControlStatus.Get, "Node not exist") raise ActionError(KazooMsg.Node_Not_Exist) else: log.tag_error(ZkControlStatus.Get, "get node with error: " + str(e)) raise ActionError(KazooMsg.Get_Failed) return data
def get_children(node_path: str): """ get a list of child nodes of a path :param node_path: :return: """ try: children_list = ZK.get_children(node_path) except Exception as e: if type(e) is NoNodeError: log.tag_error(ZkControlStatus.Get, "Node not exist") raise ActionError(KazooMsg.Node_Not_Exist) else: log.tag_error(ZkControlStatus.Get, "inquire children list with error: " + str(e)) raise ActionError(KazooMsg.Delete_Failed.Get_Children_Failed) return children_list
def verify_node(user_name: str, node_id: str): """ 验证节点归属并返回节点记录 :param user_name: :param node_id: :return: """ # 验证node归属 user = User.objects.filter(user_name=user_name).first() if not user: log.tag_error(DbStatus.Inquire, "User: %s not Exist In table user" % user_name) raise ActionError("User error") user_id = user.user_id all_node = UserNode.objects.filter(user_id=user_id).all() node_id_list = [node.node_id for node in all_node] if node_id not in node_id_list: raise ActionError("The node: %s is not belongs to user: %s" % (node_id, user_name)) # 获取node_path node_record = Node.objects.get(node_id=node_id) return node_record
def contact(request): """ 联系我们处理函数 :param request: :return: """ title = "Contact Us" title_align_center = True form = ContactForm(request.POST or None) if form.is_valid(): '''for Key,value in form.cleaned_data.iteritems(): print(Key,value)''' for Key in form.cleaned_data: # 输出所有在form中的数据 print(Key, ":", form.cleaned_data.get(Key)) # 注册时发送邮件同时在settings那有设置邮箱 form_email = form.cleaned_data.get("email") form_message = form.cleaned_data.get("message") form_full_name = form.cleaned_data.get("full_name") subject = 'Site contact form' from_email = EMAIL_HOST_USER to_email = [form_email, '[email protected] '] contact_message = "User: %s, Message: %s. \n Email: via %s" % ( form_full_name, form_message, form_email) some_html_message = "<h1>Hello, %s</h1>" % contact_message mail_error = send_mail(subject, contact_message, from_email, to_email, html_message=some_html_message, fail_silently=True) # 设置是否可以发送邮件 if mail_error != 1: log.tag_error( "Mail Error", "Contact Send Mail Error, user: %s, email: %s, message: %s!!!" % (form_full_name, form_email, form_message)) context = { "form": form, "title": title, "title_align_center": title_align_center, } return render(request, "contact.html", context)
def update_node(node_path: str, new_node_data: b""): """ 更新节点 :param node_path: :param new_node_data: :return: """ with ZK.transaction(): try: ZK.set(node_path, new_node_data) except Exception as e: if type(e) is NoNodeError: log.tag_error(ZkControlStatus.Update, "Node not exist") raise ActionError(KazooMsg.Node_Not_Exist) else: log.tag_error(ZkControlStatus.Update, "update node with error: " + str(e)) raise ActionError(KazooMsg.Update_Failed) # 返回更新后的数据 data = get_node(node_path) return data
def create_node(node_path: str, node_data: b"" = b""): """ 创建新节点并set data, 目前只支持json格式的data :param node_path: 节点路径 :param node_data: 节点值 :return: """ with ZK.transaction(): try: ZK.create(node_path, node_data) except Exception as e: if type(e) == NodeExistsError: log.tag_error(ZkControlStatus.Create, "Node exist") raise ActionError(KazooMsg.Node_Exist) else: log.tag_error(ZkControlStatus.Create, "create node with error: " + str(e)) raise ActionError(KazooMsg.Create_Failed) # 返回创建后的数据 data = get_node(node_path) return data
def register(request): """ 注册模块 :param request: :return: """ context = dict() if request.method == "GET": return render(request, "register.html", context) if request.method != "POST": raise Http404(WebErr.PostErr) user_name = request.POST.get("user_name") password = request.POST.get("password") email = request.POST.get("email") sex = request.POST.get("sex") # 查询记录是否存在, 不存在则返回None already_user = User.objects.filter(user_name=user_name).first() if already_user: information = "该用户已注册" context["errMsg"] = information return render(request, "register.html", context) # 校验密码格式 if not pass_word_check(password): information = "密码格式错误!!!" context["errMsg"] = information return render(request, "register.html", context) # 新建用户 try: # 我的表注册 user = User.objects.create(user_name=user_name, password=password, email=email, sex=sex) information = "注册成功, 欢迎: " + user_name context["errMsg"] = information except Exception: log.tag_error(DjangoStatus.Register, "%s Register Failed, Create User error" % user_name) information = "注册失败" context["errMsg"] = information return render(request, "register.html", context) # Django注册 register_add = DUser.objects.create_user(username=user_name, password=password, email=email) if not register_add: information = "注册失败" context["errMsg"] = information log.tag_error(DjangoStatus.Register, "%s Register Failed, delete data" % user_name) # 删除我的表数据 User.objects.delelet(user_id=user.user_id) # 注册成功则登录 auth_user = authenticate(username=user_name, password=password) login(request, auth_user) log.tag_info(DjangoStatus.Register, "%s Register succeed!" % user_name) return render(request, "register.html", context)