def create_event(username, title, members, event_length=None, event_deadline=None): """ Create an event with the given details. Parameters: username (str): username of event creator title (str): name of event members ([str]): list of usernames of additional event members event_length (int): event length in hours event_deadline (datetime.date): latest desired event date Returns: event_id (int): unique ID of new event Exceptions: AuthError if any of: the user is not logged in InputError if any of: username does not exist a username in the members list does not exist title is longer than 100 characters or empty event_length is less than 1 or greater than 14 * 24 (fortnight) event_deadline is a date in the past """ check_username(username) for u in members: check_username(u) check_logged_in(username) if not len(title) or len(title) > MAX_TITLE: raise InputError("Title length is invalid") if (event_length != None and (event_length < MIN_EVENT or event_length > MAX_EVENT)): raise InputError("Event length is invalid") if event_deadline and event_deadline < datetime.now().date(): raise InputError("Event deadline is invalid") new_event = Event(data.event_next_id, title, username) data.event_next_id += 1 for u in members: new_event.member_usernames.add(u) new_event.event_length = event_length new_event.event_deadline = event_deadline data.events[new_event.event_id] = new_event return new_event.event_id