Пример #1
0
def add_user():
    if request.method == 'GET':
        return render_template('add_user.html')

    #post
    uname = request.form.get('username')
    upwd = current_app.config['DEFAULT_UPWD']
    User.add_user(uname, upwd)
    return redirect(url_for('.list_users'))
Пример #2
0
def add_user():
    if request.method == 'GET':
        return render_template('add_user.html')

    #post
    uname = request.form.get('username')
    upwd = current_app.config['DEFAULT_UPWD']
    User.add_user(uname, upwd)
    return redirect(url_for('.list_users'))
Пример #3
0
def signup():
    if request.method == 'GET':
        return render_template('signup.html')

    # POST
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')
    print username, password, email
    #user = User.query.filter_by(name=username).first()
    User.add_user(username, password, email)

    return render_template('signin.html')
Пример #4
0
def signup():
    if request.method == 'GET':
        return render_template('signup.html')

    # POST
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')
    print username, password, email
    #user = User.query.filter_by(name=username).first()
    User.add_user(username, password, email)

    return render_template('signin.html')
Пример #5
0
def update_user(user_id):
    if request.method == 'GET':
        user = User.get_user(user_id)
        return render_template('update_user.html', user=user)
    #post
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')

    User.update_user(user_id, username, password, email)
    flash('update user information successfully')
    session.pop('uid', None)
    return redirect(url_for('.signin'))
Пример #6
0
def update_user(user_id):
    if request.method == 'GET':
        user = User.get_user(user_id)
        return render_template('update_user.html', user=user)
    #post
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')

    User.update_user(user_id, username, password, email)
    flash('update user information successfully')
    session.pop('uid', None)
    return redirect(url_for('.signin'))
Пример #7
0
def list_all_posts():
    posts = Post.get_all_posts()
    users = {}
    for post in posts:
        users[post.id] = User.get_user(post.user_id)
    #print posts
    return render_template('list_posts.html', posts=posts, users=users)
Пример #8
0
def list_all_posts():
    posts = Post.get_all_posts()
    users={}
    for post in posts:
        users[post.id] = User.get_user(post.user_id)
    #print posts
    return render_template('list_posts.html', posts=posts, users=users)
Пример #9
0
def show_post(post_id):
    if request.method == 'GET':
        post = Post.get_post(post_id)
        user_id = post.user_id
        user = User.get_user(user_id)
        return render_template('show_post.html', post=post, user=user)

    #post
    #title = request.form.get('title')
    #author = request.form.get('author')
    content = request.form.get('content')
    Post.update_post(content=content, post_id=post_id)
    return redirect(url_for('web.show_post', post_id=post_id))
Пример #10
0
def show_post(post_id):
    if request.method == 'GET':
        post = Post.get_post(post_id)
        user_id = post.user_id
        user = User.get_user(user_id)
        return render_template('show_post.html', post=post, user=user)

    #post
    #title = request.form.get('title')
    #author = request.form.get('author')
    content = request.form.get('content')
    Post.update_post(content=content, post_id=post_id)
    return redirect(url_for('web.show_post', post_id=post_id))
Пример #11
0
def form():
    data = request.json['linkedIn']
    try:
        pattern = re.search(r"^(https://es.linkedin.com/in/)", data)
        extract_name = pattern.string[pattern.regs[0][1]:pattern.endpos]

        new_row = User(linkedIn=extract_name)
        db.session.add(new_row)
        db.session.commit()

        print(User.query.all())

        return jsonify({'access': 'True'})

    except (AttributeError, IntegrityError):
        db.session.rollback()

        return jsonify({'access': 'False'})
Пример #12
0
def signin():
    if request.method == 'GET':
        return render_template('signin.html')

    # POST
    username = request.form.get('username')
    password = request.form.get('password')
    print username, password
    #user = User.query.filter_by(name=username).first()
    user = User.get_user_by_name(username)
    print user
    if user is None:
        flash('user does not exist!')
        return render_template('signin.html')
    elif password != user.password:
        flash('username password mismatch!')
    #logged_in
    #session['logged_in'] = True
    session['uid'] = user.id
    return redirect(url_for('web.list_posts', user_id=session['uid']))
Пример #13
0
def signin():
    if request.method == 'GET':
        return render_template('signin.html')

    # POST
    username = request.form.get('username')
    password = request.form.get('password')
    print username, password
    #user = User.query.filter_by(name=username).first()
    user = User.get_user_by_name(username)
    print user
    if user is None:
        flash('user does not exist!')
        return render_template('signin.html')
    elif password != user.password:
        flash('username password mismatch!')
    #logged_in
    #session['logged_in'] = True
    session['uid'] = user.id
    return redirect(url_for('web.list_posts', user_id=session['uid']))
Пример #14
0
def list_posts(user_id):
    posts = Post.get_posts_by_user(user_id)
    users = {}
    for post in posts:
        users[post.id] = User.get_user(post.user_id)
    return render_template('admin_list_posts.html', posts=posts, users=users)
async def send_back(reader: asyncio.StreamReader,
                    writer: asyncio.StreamWriter):
    """
    The function gives the sent message from client in a loop, if the message is quit the
    loop will be stopped. The received message will be splited and message[0] will be compare
    with given known commands and in each part it will be made a user/admin instance and the
    related function will be called by this instance and get the answer from service module
    and sent it to Client.py.The function includes 7 service commands including commands:
    register, login, create_folder, change_folder, list, write_file, read_file, delete, quit.
    """
    client_addr_info = []
    global path
    addr = writer.get_extra_info('peername')
    message = f'{addr!r} is connected !!!!'
    print(message)
    pre_file_name = ""
    with open(f'{path}/root/Server/client-info.json', 'r') as file:
        registered = json.load(file)
    with open(f'{path}/root/Server/signed-info.json', 'r') as file:
        signedin = json.load(file)
    writer.write('\n\rPlease select login or register (login/register)'.encode(
        encoding='UTF-8'))
    await writer.drain()

    while True:
        data = await reader.read(1000)
        msg = data.decode().strip()
        await asyncio.sleep(0.05)
        message = msg.split()

        if message[0] == 'register':
            reg_Flag = False
            while True:
                if len(message) == 4:
                    name = message[1]
                    password = message[2]
                    privilege = message[3]
                    restricted_char = string.punctuation
                    for char in restricted_char:
                        if char in name:
                            writer.write(
                                '\n\rError:The username characters are not acceptable. Try again!'
                                .encode(encoding='UTF-8'))
                            await writer.drain()
                            reg_Flag = True
                            break
                    if reg_Flag == True:
                        break
                else:
                    writer.write('\n\rError: Wrong command format'.encode(
                        encoding='UTF-8'))
                    await writer.drain()
                    writer.write(
                        '\n\rUse: register <username> <password> <privilege>'.
                        encode(encoding='UTF-8'))
                    await writer.drain()
                    break
                if (name not in registered['client_name']
                    ) and password != "" and (privilege == "user"
                                              or privilege == "admin"):
                    registered['client_name'].append(name)
                    registered['client_password'].append(password)
                    registered['client_privilege'].append(privilege)
                    if privilege == "user":
                        user_path = f"{path}/root/user/{name}"
                        os.mkdir(user_path)

                    elif privilege == "admin":
                        admin_path = f"{path}/root/admin/{name}"
                        os.mkdir(admin_path)

                    writer.write(
                        '\n\rNow you are successfully registered'.encode(
                            encoding='UTF-8'))
                    await writer.drain()

                    with open(f'{path}/root/Server/client-info.json',
                              'w') as file:
                        json.dump(registered, file)
                    break
                else:
                    try:
                        assert name not in registered['client_name'] == True
                        writer.write(
                            '\n\rError: The selected username, password or privilege is not correct.'
                            .encode(encoding='UTF-8'))
                        await writer.drain()
                        break
                    except AssertionError:
                        writer.write(
                            '\n\rError:The username has been already selected.'
                            .encode(encoding='UTF-8'))
                        await writer.drain()
                        break

        elif message[0] == 'login':
            while True:
                if len(message) == 3:
                    name = message[1]
                    password = message[2]
                else:
                    writer.write('\n\rError: Wrong command format'.encode(
                        encoding='UTF-8'))
                    await writer.drain()
                    writer.write('\n\rUse: login <username> <password>'.encode(
                        encoding='UTF-8'))
                    await writer.drain()
                    break

                if ((name in registered['client_name'])
                        and name not in signedin):
                    index = registered['client_name'].index(name)

                    try:
                        assert password == registered['client_password'][index]
                        with open(f'{path}/root/Server/signed-info.json',
                                  'r') as file:
                            signedin = json.load(file)
                        signedin.append(name)
                        with open(f'{path}/root/Server/signed-info.json',
                                  'w') as file:
                            json.dump(signedin, file)

                        client_addr_info.append(addr[0])
                        client_addr_info.append(addr[1])
                        client_addr_info.append(writer)
                        test.append(client_addr_info)

                    except AssertionError:
                        writer.write(
                            '\n\rError:The password is incorrect. Please try again.'
                            .encode(encoding='UTF-8'))
                        await writer.drain()
                        break

                    index = registered['client_name'].index(name)
                    privilege = registered['client_privilege'][index]

                    if privilege == "user":
                        client = User(name, password, privilege)
                    else:
                        client = Admin(name, password, privilege)
                    break
                else:
                    writer.write(
                        '\n\rError: This username is not exist or already logged in.'
                        .encode(encoding='UTF-8'))
                    await writer.drain()
                    break

        elif message[0] == 'create_folder':
            if name in signedin:
                while True:
                    if len(message) == 2:
                        folder = message[1]
                    else:
                        writer.write('\n\rError: Wrong command format'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        writer.write(
                            '\n\rUse: create_folder <folder_name>'.encode(
                                encoding='UTF-8'))
                        await writer.drain()
                        break
                    if name in signedin:
                        writer.write(
                            client.create_folder(
                                name, privilege,
                                folder).encode(encoding='UTF-8'))
                        await writer.drain()
                        break
                    else:
                        writer.write(
                            '\n\rError: You should sign in first'.encode(
                                encoding='UTF-8'))
                        await writer.drain()
                        break
            else:
                writer.write(f'\n\rError: You should log in first'.encode())
                await writer.drain()

        elif message[0] == 'change_folder':
            if name in signedin:
                while True:
                    if len(message) == 2:
                        folder = message[1]
                        restricted_char = string.punctuation

                    else:
                        writer.write('\n\rError: Wrong command format'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        writer.write(
                            '\n\rUse: change_folder <folder_name> or change_folder .. to go back'
                            .encode(encoding='UTF-8'))
                        await writer.drain()
                        break

                    if folder == '..':
                        if name in signedin:
                            writer.write(
                                client.back_folder(
                                    name, privilege).encode(encoding='UTF-8'))
                            await writer.drain()
                            break

                    for char in restricted_char:
                        cd_flag = False
                        if char in folder:
                            writer.write(
                                '\n\rError:The folder does not exist. Try again!!!!.'
                                .encode(encoding='UTF-8'))
                            await writer.drain()
                            cd_flag = True
                            break

                    if cd_flag == False:
                        writer.write(
                            client.change_folder(
                                name, privilege,
                                folder).encode(encoding='UTF-8'))
                        await writer.drain()
                        break
                    break
            else:
                writer.write(f'\n\rError: You should log in first'.encode())
                await writer.drain()

        elif message[0] == 'list':
            if name in signedin:
                while True:
                    if len(message) == 1:
                        if name in signedin:
                            msg_list = client.print_list(name)
                            writer.write(msg_list.encode(encoding='UTF-8'))

                            await writer.drain()

                            break
                    else:
                        writer.write('\n\rError: Wrong command format'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        writer.write('\n\rUse: list'.encode(encoding='UTF-8'))
                        await writer.drain()
                        break
            else:
                writer.write(f'\n\rError: You should log in first'.encode(
                    encoding='UTF-8'))
                await writer.drain()

        elif message[0] == 'write_file':
            if name in signedin:
                while True:
                    if len(message) >= 2:
                        file_name = message[1]
                        user_input = ' '.join(message[2:])
                    else:
                        writer.write('\n\rError: Wrong command format'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        writer.write(
                            '\n\rUse: write_file <filename> <input>'.encode(
                                encoding='UTF-8'))
                        await writer.drain()
                        break
                    if name in signedin:
                        client.write_file(name, file_name, user_input)
                        break
            else:
                writer.write(f'\n\rError: You should log in first'.encode())
                await writer.drain()

        elif message[0] == 'read_file':
            if name in signedin:
                read_flag = False
                while True:
                    if len(message) == 1:
                        file_name = ""
                    elif len(message) == 2:
                        file_name = message[1]
                    else:
                        writer.write('\n\rError: Wrong command format'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        writer.write('\n\rUse: read_file <filename>'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        break

                    if name in signedin:
                        if pre_file_name == file_name:
                            read_flag = True

                        writer.write(
                            client.read_file(
                                file_name, read_flag).encode(encoding='UTF-8'))
                        await writer.drain()
                        pre_file_name = str(file_name)
                        break
            else:
                writer.write(f'\n\rError: You should log in first'.encode())
                await writer.drain()

        elif message[0] == 'delete':
            if name in signedin:
                while True:
                    if len(message) == 3:
                        user_name = message[1]
                        input_password = message[2]
                    else:
                        writer.write('\n\rError: Wrong command format'.encode(
                            encoding='UTF-8'))
                        await writer.drain()
                        writer.write(
                            '\n\rUse: delete <username> <admin_password>'.
                            encode(encoding='UTF-8'))
                        await writer.drain()
                        break

                    if name in signedin:
                        if privilege == 'admin':
                            with open(f'{path}/root/Server/signed-info.json',
                                      'r') as file:
                                signedin = json.load(file)
                            if user_name in signedin:
                                user_name_index = signedin.index(user_name)
                                test[user_name_index][2].close()
                            delete_msg = client.delete(name, user_name,
                                                       input_password,
                                                       signedin)
                            writer.write(
                                str(delete_msg).encode(encoding='UTF-8'))
                            await writer.drain()
                            break
                        else:
                            writer.write(
                                '\n\rThe request is denied. You are not admin.'
                                .encode(encoding='UTF-8'))
                            await writer.drain()
                        break

            else:
                writer.write(f'\n\rError: You should log in first'.encode())
                await writer.drain()

        elif message[0] == 'quit':
            if name in signedin:
                with open(f'{path}/root/Server/signed-info.json', 'r') as file:
                    signedin = json.load(file)

                signedin.remove(name)

                with open(f'{path}/root/Server/signed-info.json', 'w') as file:
                    json.dump(signedin, file)

                close_msg = f'{addr!r} wants to close the connection.'
                print(close_msg)
                break
            else:
                writer.write(f'\n\rError: You should log in first'.encode())
                await writer.drain()

        elif message[0] == 'commands':
            pass

        else:
            writer.write(
                '\n\rThe implemented command is wrong.Please type "commands"'.
                encode(encoding='UTF-8'))
            await writer.drain()

        writer.write('\n\r>>'.encode(encoding='UTF-8'))
        await writer.drain()
    writer.close()
Пример #16
0
def delete_user(user_id):
    User.delete_user(user_id)
    return redirect(url_for('.list_users'))
Пример #17
0
def list_users():
    users = User.get_all_users()
    return render_template('list_users.html', users=users)
Пример #18
0
def list_users():
    users = User.get_all_users()
    return render_template('list_users.html', users=users)
Пример #19
0
def delete_user(user_id):
    User.delete_user(user_id)
    return redirect(url_for('.list_users'))
Пример #20
0
def list_posts(user_id):
    posts = Post.get_posts_by_user(user_id)
    users = {}
    for post in posts:
        users[post.id] = User.get_user(post.user_id)
    return render_template('admin_list_posts.html', posts=posts, users=users)