def write_event(): try: data = request.get_json() if data == None or 'event' not in data: # Request data is in wrong format return 'Please use Reco Client', 403 sessionID = request.headers['Authorization'] if checksession(sessionID): # Compose the new event data new_event = Event() new_event.fromObject(data['event']) # Execute update if update_event(new_event): return 'Execution success', 200 else: return 'Internal Server Error', 500 else: # Session is not availible return 'Session is not availible', 401 except Exception as e: exc_type, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] print(bcolors.FAIL + 'Exception occur when handling /write-event request:' + bcolors.ENDC) print('Error: {}'.format(e)) print(exc_type, fname, exc_tb.tb_lineno) return 'Internal Server Error', 500
def GenerateLifetime(figure): event_types = ["discovers a relic", "seiges a city", "unearths an ancient secret", "assassinates a rival", "builds a monument", "founds a religion", "betrays a partner", "marries", "battles for faction", "has a vision", "commissions a massive weapon", "loses a magical artifact", "calls for a crusade", "decrees an important law", "has a child", "victimizes a faction", "wins major war", "invents something important", "gathers favor with a faction", "builds a temple", "creates a piece of art", "holds a major festival", "falls under a curse", "becomes obsessed with something"] # First event is always a birth event event = Event("birth") ResolveEvent(event, figure) # Generate a set of middle events num_events = random.randrange(10) for i in range(num_events): event = Event(random.choice(event_types)) ResolveEvent(event, figure) # Last event is always a death event event = Event("death") ResolveEvent(event, figure)
async def begin(ctx, *, event_name): """Only for administrators: begins an even with <event_name>""" global id_increment event = Event(id_increment, event_name, ctx.author) if not check_events_server(ctx): servers[ctx.guild.id] = {} server_events = servers[ctx.guild.id] server_events[event.id] = event id_increment += 1 await ctx.send(f'{event.host.display_name} started {event.eventName}. Use id {event.id} to enter queue.')
async def begin(ctx, *, event_name): """Only for hosts: begins an even with <event_name>""" print( f"Begin command sent from server: {ctx.message.guild.name} by {ctx.message.author}" ) sys.stdout.flush() global id_increment event = Event(id_increment, event_name, ctx.author) if not check_events_server(ctx): servers[ctx.guild.id] = {} server_events = servers[ctx.guild.id] server_events[event.id] = event id_increment += 1 await ctx.send( f'{event.host.display_name} started {event.eventName}. Use id {event.id} to enter queue.' )
def parse_xml_timetable(xml_object): print('Parsing XML object.') xml_events = xml_object.timetable.event events = [] for event in xml_events: events.append( Event(event["id"], event.prettytimes.cdata, event.resources, event.rawweeks.cdata, event.day.cdata)) print('Creating Timetable object.') timetable = Timetable() timetable.add(events) return timetable
def parseFile(): marathon_dict = {} runner_list = [] with open('Project1_data.csv', 'r', encoding='UTF-8') as f: reader = csv.reader(f, delimiter=',') next(reader) # skip header row for aLine in reader: number_of_marathons = (len(aLine) - 1) // 5 runner_id = aLine[0] event_list = [] for i in range(number_of_marathons): # Hacky way to access the information in a given line in the csv marathon_date = aLine[5 * i + 1] marathon_name = aLine[5 * i + 2] marathon_etype = aLine[5 * i + 3] marathon_time = aLine[5 * i + 4] marathon_category = aLine[5 * i + 5] event_list.append( Event( marathon_date, # Create new Event and append to list marathon_name, marathon_etype, marathon_time, marathon_category)) # Increments/initializes the values in the marathon_dict if marathon_name in marathon_dict: marathon_dict[ marathon_name] = marathon_dict[marathon_name] + 1 else: marathon_dict[marathon_name] = 1 gender, age = parseCategory(aLine[5]) runner_list.append( Runner(runner_id, event_list, gender, age)) # Create a new runner object and append to list """ Some code to help you get a better idea of the dataset, use this when you need some information about the number of marathons that exist for key in marathon_dict: if marathon_dict[key] < 500 and marathon_dict[key] > 300: print key, ": ", marathon_dict[key] """ return runner_list, marathon_dict
def create_event(item): # Create an empty event event = Event() # Set the English name for the event and if it doesn't exist choose the Finnish name if item['name']['en'] is not None: event.name = item['name']['en'] elif item['name']['fi'] is not None: event.name = item['name']['fi'] else: event.name = 'No name announced' # Set the address if it exists if item['location']['address']['street_address'] is not None: event.address = item['location']['address']['street_address'] else: event.address = 'No address announced' # Set the starting and ending dates of the event if item['event_dates']['starting_day'] is None: event.start_time = 'No starting date announced' else: event.add_start_time( str_to_datetime(item['event_dates']['starting_day'])) if item['event_dates']['ending_day'] is None: event.end_time = 'No ending date announced' else: event.end_time = str_to_datetime(item['event_dates']['ending_day']) # Set coordinates for the event event.lat = item['location']['lat'] event.lon = item['location']['lon'] # Set the description of the event if item['description']['intro'] is None: event.desc = 'No description available' else: event.desc = item['description']['intro'] # Set the info link url of the event event.link = item['info_url'] # Set the tags for the event from list if len(item['tags']) < 1: event.tags = ['The event has no tags'] else: tags = item['tags'] for tag in tags: event.add_tag(tag['name'].lower()) # Set image if it exists if item['description']['images']: if item['description']['images'][0][ 'url'] is not None and '{' not in item['description'][ 'images'][0]['url']: event.img_link = item['description']['images'][0]['url'] # Return the created event return event
def build_repeat(userid, year, month): '''Build all events which create by repeat in certain month Args: userid (str): ID of the user. year (int): The year you want to build events. month (int): The month you want to build events. ''' target_range_start = datetime(year, month, 1, 0, 0, 0) target_range_end = datetime(year, month, calendar.monthrange(year, month)[1], 23, 59, 59) target_range = Range(target_range_start, target_range_end) for cal in calendars_collection.find({'owner': userid}): calendar_id = cal['_id'] for repeat in repeats_collection.find({'calendar': calendar_id}): repeat_range = Range(repeat['startDate'], repeat['endDate']) # If this repeat is in target range. if range_overlap(target_range, repeat_range) > 0: new_generated = repeat['generated'] # Iterate all days in target range. pointer = target_range_start while pointer <= target_range_end: # Check if this day should have a evnet accroding to repeat but it hasnt. pointer_day_string = pointer.strftime("%Y/%-m/%-d") if (repeat['cycle'] == 'Week' and int(repeat['repeatData']) - 1 == pointer.weekday() and pointer_day_string not in repeat['generated'] ) or (repeat['cycle'] == 'Month' and int(repeat['repeatData']) == pointer.day and pointer_day_string not in repeat['generated']): # Add this day into new generated array new_generated.append(pointer_day_string) # Compose new Event new_event = Event() new_event._id = str(uuid.uuid4()) new_event.title = repeat['title'] new_event.calendar = cal['_id'] new_event.color = cal['color'] new_event.startTime = pointer.replace( hour=repeat['startTime'].hour, minute=repeat['startTime'].minute, second=repeat['startTime'].second) new_event.endTime = pointer.replace( hour=repeat['endTime'].hour, minute=repeat['endTime'].minute, second=repeat['endTime'].second) # Upload new event database update_event(new_event) pointer += timedelta(days=1) # Update the generated array repeat['generated'] = new_generated update_repeat(repeat)