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))
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']
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)
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']
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
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
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)