Пример #1
0
def server():
    serialized={}
    serv = server_socket()
    host = socket.gethostname()
    port = 8999
    serv.bind((host, port))
    serv.listen(5)
    c, addr = serv.accept()
    while True:
        msg = c.recv(1024)

        #server_json = json()
        serialized = convert_from_json_object(msg)
        serialized_list = [None]*5
        serialized_list[0]=serialized['action']

        if serialized_list[0] == "signup":
            serialized_list[1]=serialized['username']
            serialized_list[2]=serialized['password']
            serialized_list[3]=serialized['DOB']
            serialized_list[4]=serialized['email']
            U = User(serialized_list[1], serialized_list[2], serialized_list[3], serialized_list[4])
            validation = U.validate()
            if not isinstance(validation,str):
            #if project13_forums.model.memory.sign_up(U):
                if sign_up(U):
                    c.send(U.deserializer("Succesful"))
                else:
                    c.send(U.deserializer("Username already exists"))
            else:
                c.send(U.deserializer("Invalid Credentials " + validation))
            pass
        elif serialized_list[0] == "login":
            serialized_list[1]=serialized['username']
            serialized_list[2]=serialized['password']
            UA = UserAuth(serialized_list[1], serialized_list[2])
            validation = UA.validate()
            if not validation.isstring():
                if sign_in(UA):
                    c.send(UA.deserializer("login successful"))
                else:
                    c.send(UA.deserializer("username password mismatch"))
            else:
                c.send(UA.deserializer("Invalid Credentials " + validation))
                pass
        elif serialized_list[0] == "view_forum":
            serialized_list[1]=serialized['forum_name']
            VF = ViewForum(serialized_list[1])
            forum_list=view_forum(VF.forum_name)
            forum_json=convert_list(forum_list)
            c.send(VF.deserializer(forum_json))
            pass
        elif serialized_list[0] == "new_sub_forum":
            serialized_list[1]=serialized['forum_name']
            serialized_list[2]=serialized['new_sub_forum']
            serialized_list[3]=serialized['created_by']
            CSF=CreateSubForum(serialized_list[1],serialized_list[2],serialized_list[3])
            if create_sub_forum(CSF):
                c.send(CSF.deserializer(serialized_list[2]+"subforum is created"))
            else:
                c.send(CSF.deserializer("subforum name already exists"))
        elif serialized[0] == "open_sub_forum":
            serialized_list[1]=serialized['forum_name']
            serialized_list[2]=serialized['new_sub_forum']
            VSF = ViewSubForum(serialized_list[1],serialized_list[2])
            sub_forum_question_list=view_sub_forum(VSF)
            question_json=convert_list(sub_forum_question_list)
            c.send(question_json)



        elif serialized_list[0] == "post_question":
            serialized_list[1]=serialized['forum_name']
            serialized_list[2]=serialized['sub_forum']
            serialized_list[3]=serialized['created_by']
            serialized_list[4:]=serialized['new_question']
            PQ = PostQuestion(serialized_list[1],serialized_list[2],serialized_list[3],serialized_list[4:])
            if post_question_in_sub_forum(PQ):
                c.send(PQ.deserializer("successfully posted"))
        elif serialized[0] == "post_answer":
            serialized_list[1]=serialized['forum_name']
            serialized_list[2]=serialized['sub_forum']
            serialized_list[3]=serialized['created_by']
            serialized_list[4]=serialized['question_new']
            PC=PostComment(serialized_list[1],serialized_list[2],serialized_list[3])
            if post_comment(PC):
                c.send(PC.deserializer("successfully posted"))
        elif serialized_list[0] == "view_question":
            serialized_list[1]=serialized['forum_name']
            serialized_list[2]=serialized['sub_forum']
            serialized_list[3:]=serialized['question']
            VQ=viewQuestion(serialized_list[1],serialized_list[2],serialized_list[3])
            reply_list=view_ques_in_sub_forum(VQ)
            c.send(VQ.deserializer(reply_list))
            pass
        elif serialized_list[0] == 'exit':
            c.close()
        serv.close()