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
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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")
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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)
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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)