Esempio n. 1
0
def standup_send(token, channel_id, message):
    '''
    Using a valid token, the user sends a message in an active standup in the channel
    '''
    if not channel_exists(channel_id):
        raise ValueError(f"channel does not exist")

    if not standup_exists(channel_id):
        raise ValueError(f"Channel does not have an active standup")

    user_id = token_to_user(token)

    if not check_channel_member(user_id, channel_id):
        raise AccessError(
            f"User is not part of specified channel. Please join the channel.")

    if len(message) > 1000:
        raise ValueError(f"Message cannot be over 1000 characters")

    standups = server_data.standups
    target = get_standup(standups, channel_id)
    messages = target['messages']

    new_message = dict()
    new_message['first_name'] = token_to_firstname(token)
    new_message['message'] = message

    messages.append(dict(new_message))
Esempio n. 2
0
def standup_start(token, channel_id, length):
    '''
    Using a valid token, the user starts a standup period in a channel that they are
    part of
    '''
    if not channel_exists(channel_id):
        raise ValueError(f"channel does not exist")

    if standup_exists(channel_id):
        raise ValueError(f"A standup is already running in this channel")

    curr_user_id = token_to_user(token)

    if not check_channel_member(curr_user_id, int(channel_id)):
        raise AccessError(
            f"User is not part of specified channel. Please join the channel.")

    standups = server_data.standups

    new = dict()
    new['messages'] = []
    new['u_id'] = curr_user_id
    new['channel_id'] = channel_id
    new['time_end'] = int(t.time() + int(length))

    standups.append(new)
    return new['time_end']
Esempio n. 3
0
def channel_leave(token, channel_id):
    '''
    Using a valid token, the user leaves a channel specified by 'channel_id'

    Raises errors if:
    - Channel doesn't exist
    '''
    is_valid_token(token)
    # When channel Id is invalid
    if not channel_exists(channel_id):
        raise ValueError('Channel does not exist')

# Remove user from 'members' list in channel
# get members list (from channel_id)
    members = members_list(channel_id)

    # remove user from members list
    user_id = token_to_user(token)
    for member in members:
        if member['u_id'] == user_id:
            members.remove(member)

# Remove channel from users 'channels' list
    user_info = get_userinfo(user_id)
    user_info['channels'].remove(channel_id)
Esempio n. 4
0
def standup_active(token, channel_id):
    '''
    Using a valid token, check if a standup is active in a channel
    '''
    if not channel_exists(int(channel_id)):
        raise ValueError(f"channel does not exist")

    standups = server_data.standups
    exists = get_standup(standups, channel_id)

    if exists is None:
        return None  # @@@@ NEED TO CHECK IF THIS DOES NOT TRIGGER

    return exists['time_end']
Esempio n. 5
0
def message_sendlater(token, channel_id, message, time_sent):
    '''
    Using a valid token, the user sends a message to a channel that they are part of
    at a specific time in the future
    '''
    if not channel_exists(channel_id):
        raise ValueError(f"channel does not exist")

    if message is None:
        raise ValueError(f"No message")

    if int(time_sent) < t.time():
        raise ValueError(f"Time is in the past")

    is_valid_token(token)

    is_valid_message(message)
    curr_user_id = token_to_user(token)
    check_valid_user(curr_user_id)

    if not check_channel_member(curr_user_id, channel_id):
        raise AccessError(
            f"User is not part of specified channel. Please join the channel.")

    message_id = server_data.data['n_messages']
    server_data.data['n_messages'] += 1

    messages_later = server_data.messages_later

    new_message = dict()
    new_message['message_id'] = message_id
    new_message['u_id'] = curr_user_id
    new_message['message'] = message
    new_message['time_created'] = int(time_sent)
    new_message['channel_id'] = channel_id
    new_message['reacts'] = []
    new_message['is_pinned'] = False

    messages_later.append(dict(new_message))

    return message_id
Esempio n. 6
0
def message_send(token, channel_id, message):
    '''
    Using a valid token, the user sends a message to a channel that they are part of
    '''
    curr_user_id = token_to_user(token)

    check_valid_user(curr_user_id)

    if not channel_exists(channel_id):
        raise ValueError(f"channel does not exist")

    if message is None:
        raise ValueError(f"No message")

    if len(message) > 1000:
        raise ValueError(f"Message cannot be over 1000 characters")

    if not check_channel_member(curr_user_id, channel_id):
        raise AccessError(
            f"User is not part of specified channel. Please join the channel.")

    info = channel_info(channel_id)

    messages = info['messages']
    message_id = server_data.data['n_messages']
    server_data.data['n_messages'] += 1

    new_message = dict()
    new_message['message_id'] = message_id
    new_message['u_id'] = curr_user_id
    new_message['message'] = message
    new_message['time_created'] = int(t.time())
    new_message['reacts'] = []
    new_message['is_pinned'] = False

    server_data.data["channels"][channel_id]["channel_n_messages"] += 1
    messages.append(dict(new_message))

    return message_id
Esempio n. 7
0
def channel_join(token, channel_id):
    '''
    Using a valid token, the user joins a channel specified by 'channel_id'

    Raises errors if:
    - Channel doesn't exist
    - User tries to join a private channel
    '''
    is_valid_token(token)
    # When channel Id is invalid
    if not channel_exists(int(channel_id)):
        raise ValueError('Channel does not exist')

# When user tries to join a private channel ( AccessError)
    if not server_data.data['channels'][int(channel_id)]['is_public']:
        raise AccessError('Channel is invite only')

    user_id = token_to_user(token)

    # Add user to channel 'members' list (channel_permission 2)
    # create a new dictionary with u_id and default channel permission
    data = {
        'u_id': user_id,
        'channel_permission': 0,
    }

    # append this to the channel list
    members = members_list(channel_id)
    members.append(data)

    # Add channel to users 'channels' list
    # get user info
    user_info = get_userinfo(user_id)

    # add channel_id to 'channels' list
    user_info['channels'].append(channel_id)