def update_event(id): data = { "name": querystring_get("name"), "description": querystring_get("description") } if not data["name"]: Alert.bad("The <strong>name</strong> field is required") return render_template("event/view.html", **data) create = str(id).lower() == "create" item = None if create: item = Event() else: item = api.get(Event, id) if not item: Alert.bad("Could not find <strong>Event</strong> {}; {}".format(id, api.error)) return render_template("event/view.html", **data) item.name = data["name"] item.description = data["description"] item = api.update(Event, item) if not item: Alert.bad(api.error) return render_template("event/view.html", **data) Alert.good("Event <strong>{}</strong> {}".format(item.name, "created" if create else "updated")) return redirect("/events/{}".format(item.id))
def create_event(): logged_user = auth_user(request) if logged_user is None: return jsonify({'error': 'User not authenticated!'}) event_params = json.loads(request.data) start = datetime.strptime(event_params['start_time'], '%Y-%m-%dT%H:%M:%S') end = datetime.strptime(event_params['end_time'], '%Y-%m-%dT%H:%M:%S') if start <= end: event = Event() event.description = event_params['description'] event.start_time = start event.end_time = end event.user_id = logged_user.id #verifica se há overlap com eventos já existentes if overlap(event.start_time, event.end_time): return jsonify({'error': 'You cannot overlap another event!'}) else: db.session.add(event) db.session.commit() return jsonify({'event': event.serialize()}) return jsonify({'error': 'Start time must be earlier than end time!'})
def get_first_upcoming(): upcoming_event = Event.query.filter( Event.start >= datetime.now()).order_by(Event.start.asc()).first() if upcoming_event: return jsonify(map_event_dto(upcoming_event)) else: upcoming_event = Event() upcoming_event.description = 'Er zijn geen activiteiten meer ingeplant!' upcoming_event.title = 'Coming soon' upcoming_event.start = datetime.now() return jsonify(map_event_dto(upcoming_event))
def event_register(): form = EventForm() form.set_choices() if form.validate_on_submit(): event = Event(name=form.name.data, date=form.date.data, \ place=form.place.data, type_id=form.type_id.data) event.description = form.description.data db.session.add(event) db.session.commit() flash(_('Succesfully athlete added')) return redirect(url_for('main.events')) return render_template('event_register_edit.html', form=form, title=_('Register event'))
def new_event(): form = EditEventForm() if form.validate_on_submit(): kwb_event = Event() kwb_event.title = form.title.data kwb_event.location = form.location.data kwb_event.description = form.description.data kwb_event.start = form.start.data kwb_event.end = form.end.data db.session.add(kwb_event) db.session.commit() flash('Your blog post has been created!') return redirect(url_for('events')) return render_template("create_event.html", form=form)
def copyevent(event_id=None): new_event=Event() event=Event.query.get_or_404(event_id) new_event.title=event.title new_event.image=event.image new_event.description=event.description new_event.begin=event.begin new_event.end=event.end new_event.location=event.location new_event.price=event.price form = CreateEventForm(obj=new_event) if form.validate_on_submit(): form.populate_obj(new_event) new_event.image=new_event.image.replace("https://www.dropbox.com","https://dl.dropboxusercontent.com/") db.session.add(new_event) db.session.commit() flash("Event edited succesfully") return redirect(url_for("admin.index")) return render_template('newevent.html',form=form)
from datetime import datetime from app.models import Event event1 = Event() event1.name = "HackJam" event1.location = "The Woz, Soda Hall" event1.sponsor = "Hackers@Berkeley" event1.latitude = 37.8757435 event1.longitude = -122.2587323 event1.description = "Awesome Hackathon" event1.food = "Cheeseboard" event1.start_time = datetime.datetime(2013, 9, 28, 11, 00) event1.end_time = datetime.datetime(2013, 9, 29, 1, 00) event2 = Event() event2.name = "Berkeley MFE Info Session" event2.location = "The Woz, Soda Hall" event2.sponsor = "Master of Financial Engineering Program" event2.latitude = 37.8715012 event2.longitude = -122.2538014 event2.description = "Information session and Q&A: resume review, discussion of finance career paths. Lunch Served" event2.food = "Lunch" event2.start_time = datetime.datetime(2013, 10, 3, 13, 00) event2.end_time = datetime.datetime(2013, 10, 4, 14, 00) event3 = Event() event3.name = "Tech Talk: Dropbox" event3.location = "The Woz, Soda Hall" event3.sponsor = "Dropbox"
def parseXML(xmlfile): # create element tree object tree = ET.parse(xmlfile, ET.XMLParser(encoding="utf-8")) # get root element root = tree.getroot() # create empty list for news items eventsitems = [] # iterate news items for item in root.findall('./channel/item'): event = Event( FID=None, title=None, description=None, startdate=None, enddate=None, isRepetition=None, venueName=None, venueAddress=None, venueId=None, venueCoordinates=None, organizer=None, organizerName=None, organizerWebsite=None, ageRestriction=None, regularPrize=None, reducedPrize=None, category_id=None, category_name=None, picture=None, ticketsURL=None, moreInfoURL=None, facebookEventUrl=None, videoUrl=None ) eventfields = [] if item: for subitem in item: if subitem.text: eventfields.append([subitem.tag, subitem.text]) for subsubitem in subitem: if subsubitem.text: if '{Event}' in subsubitem.tag: eventfields.append( [subsubitem.tag.split('{Event}', 1)[1], subsubitem.text.replace('\n', '').strip()]) for subsubsubitem in subsubitem: if subsubsubitem: for subsubsubsubitem in subsubsubitem: if subsubsubsubitem.text: eventfields.append((subsubsubsubitem.tag, subsubsubsubitem.text)) lat = 0 lng = 0 for f in eventfields: if f[0] == 'title': event.title = f[1] if f[0] == 'id': event.FID = f[1] if f[0] == 'description': event.description = f[1] if f[0] == 'isRecurrent': if f[1] == 'no': event.isRepetition = False if f[1] == 'yes': event.isRepetition = True if f[0] == 'startdate': event.startdate = f[1] if f[0] == 'enddate': event.enddate = f[1] if f[0] == 'categoryID': event.category_id = f[1] if f[0] == 'categoryName': event.category_name = f[1] if f[0] == 'venueId': event.venueId = f[1] if f[0] == 'venueName': event.venueName = f[1] if f[0] == 'venueStreet': event.venueAddress = f[1] if f[0] == 'venueLat': if f[1] == '': lat = None else: lat = float(f[1]) if f[0] == 'venueLng': if f[1] == '': lng = None else: lng = float(f[1]) if f[0] == 'organizer': event.organizer = f[1] if f[0] == 'organizerFacebook': event.organizerWebsite = f[1] if f[0] == 'picture': event.picture = f[1] if f[0] == 'normalPrice': event.regularPrice = f[1] if f[0] == 'reducedPrize': event.reducedPrice = f[1] if f[0] == 'ageRestriction': if f[1] == '': event.ageRestriction = None else: event.ageRestriction = f[1] if f[0] == 'videoUrl': event.videoUrl = f[1] if f[0] == 'moreInfoUrl': event.moreInfoURL = [1] if f[0] == 'facebookEventUrl': event.facebookEventUrl = f[1] if lat is not None and lng is not None: event.venueCoordinates = 'Point(' + str(lng) + ' ' + str(lat) + ')' eventsitems.append(event) return eventsitems
event_type = session.query(EventType).filter( EventType.code == event_item.get('type')).first() locations_list = event_item.get('location').split(', ') locations = session.query(Location).filter( Location.code.in_(locations_list)).all() categories_list = event_item.get('category').split(', ') categories = session.query(EventCategory).filter( EventCategory.code.in_(categories_list)).all() date_time_template = '{} {}'.format(event_item.get('date'), event_item.get('time')) date_time = datetime.datetime.strptime(date_time_template, '%d.%m.%Y %H:%M') event = Event() event.title = event_item.get('title') event.description = event_item.get('description') event.date = date_time.date() event.time = date_time.time() event.address = event_item.get('address') event.seats = event_item.get('seats') event.type = event_type event.locations = locations event.categories = categories session.add(event) session.commit()
def refresh_data(sched_info_fname, convention_info_fname=None): # Keep track of the number of errors and warnings. num_errors = 0 num_warnings = 0 # Delete records from tables of interest. events = Event.query.all() for event in events: event.rooms = [] event.presenters = [] event.timeslots = [] db.session.commit() DataLoadError.query.delete() Convention.query.delete() Timeslot.query.delete() Track.query.delete() Event.query.delete() Presenter.query.delete() Room.query.delete() RoomGroup.query.delete() # Define the convention. if not convention_info_fname: script_dir = os.path.dirname(__file__) convention_info_fname = os.path.join(script_dir, CONVENTION_INFO_FNAME) convention = Convention() with open(convention_info_fname, 'rb') as csvfile: csvreader = csv.reader(csvfile, delimiter=',', quotechar='"') first_row = True for row in csvreader: if first_row: first_row = False else: convention.name = row[0] convention.description = row[1] convention.date_format = row[5] convention.datetime_format = row[6] convention.start_dt = datetime.datetime.strptime( row[2], convention.datetime_format) convention.end_dt = datetime.datetime.strptime( row[3], convention.datetime_format) convention.timeslot_duration = datetime.timedelta( 0, int(row[4]) * 60) # Minutes converted to seconds. convention.url = row[7] convention.active = True # There is only one row of convention data. break db.session.add(convention) db.session.commit() # Commit the data to the database. db.session.commit() # Create timeslots. timeslot_count = int( (convention.end_dt - convention.start_dt).total_seconds() / convention.timeslot_duration.total_seconds()) for n in range(timeslot_count): timeslot = Timeslot(n) timeslot.active = True db.session.add(timeslot) # Commit the data to the database. db.session.commit() # Add tracks. # The track name and the email address for each CREM track. track_infos = ( ('Literature', '*****@*****.**'), ('Tech', '*****@*****.**'), ('After Dark', '*****@*****.**'), ('Action Adventure', '*****@*****.**'), ('Costuming', '*****@*****.**'), ('Comics', '*****@*****.**'), ('Gaming', '*****@*****.**'), ('DIY', '*****@*****.**'), ('Food', '*****@*****.**'), ('Science', '*****@*****.**'), ('Media', '*****@*****.**'), ('Mayhem', '*****@*****.**'), ('Anime', '*****@*****.**'), ('Penguicon', '*****@*****.**'), ('Life', '*****@*****.**'), ) # Create tracks and save database objects in dictionary for later reference. tracks = {} for track_info in track_infos: track = Track(track_info[0], track_info[1]) tracks[track_info[0]] = track db.session.add(track) # Commit the data to the database. db.session.commit() # Add room groups. room_group_names = ( 'Algonquin', 'Charlevoix', 'Lobby', ) for room_group_name in room_group_names: room_group = RoomGroup(room_group_name) db.session.add(room_group) # Commit the data to the database. db.session.commit() # Add rooms. # For each room, the name, square feet, capacity and room group it belongs to. room_infos = ( ('Algonquin A', 1207, 100, 'Algonquin'), ('Algonquin B', 1207, 100, 'Algonquin'), ('Algonquin C', 1207, 100, 'Algonquin'), ('Algonquin D', 1207, 100, 'Algonquin'), ('Algonquin Foyer', 3000, 450, None), ('Charlevoix A', 756, 64, 'Charlevoix'), ('Charlevoix B', 756, 64, 'Charlevoix'), ('Charlevoix C', 756, 64, 'Charlevoix'), ('Portage Auditorium', 1439, 68, None), ('Windover', 1475, 40, None), ('TC Linguinis', 1930, 40, None), ('Baldwin Board Room', 431, 12, None), ('Board of Directors', 511, 15, None), ('Board of Governors', 391, 5, None), ('Board of Regents', 439, 15, None), ('Board of Trustees', 534, 40, None), ('Hamlin', 360, 25, None), ('Montcalm', 665, 50, None), ('Nicolet', 667, 50, None), ('Game Table A', 20, 10, 'Lobby'), ('Game Table B', 20, 10, 'Lobby'), ('Game Table C', 20, 10, 'Lobby'), ('Game Table D', 20, 10, 'Lobby'), ) # Create rooms and save database objects in dictionary for later reference. rooms = {} for room_info in room_infos: room = Room() room.room_name = room_info[0] room.room_sq_ft = room_info[1] room.room_capacity = room_info[2] if room_info[3]: room.room_group = db.session.query(RoomGroup).\ filter(RoomGroup.room_group_name == room_info[3]).first() rooms[room.room_name] = room db.session.add(room) # Commit the data to the database. db.session.commit() # Keep track of presenters. presenters = {} # Read events from file. with open(sched_info_fname, 'rb') as csvfile: csvreader = csv.reader(csvfile, delimiter=',', quotechar='"') first_row = True for row in csvreader: if first_row: first_row = False continue if len(row) < 11: load_error = DataLoadError() load_error.error_level = 'Error' load_error.destination_table = 'event' load_error.line_num = csvreader.line_num load_error.error_msg = 'Not enough columns in row %d' % csvreader.line_num load_error.error_dt = datetime.datetime.now() db.session.add(load_error) num_errors += 1 continue trackname = row[5].split(',')[0].strip() if trackname not in tracks: # There is no corresponding track, so add it. email = '-'.join( trackname.lower().split()) + '*****@*****.**' track = Track(trackname, email) tracks[trackname] = track db.session.add(track) load_error = DataLoadError() load_error.error_level = 'Warning' load_error.destination_table = 'event' load_error.line_num = csvreader.line_num load_error.error_msg = '%s is not a defined track; adding it' % trackname load_error.error_dt = datetime.datetime.now() db.session.add(load_error) num_errors += 1 continue event = Event() event.title = row[6] event.description = row[8] event.track = tracks[trackname] # Add timeslots and duration. try: timeslots = get_timeslots(row[0], row[1], row[9], convention, Timeslot) event.timeslots = timeslots event.duration = len(timeslots) except Exception as e: load_error = DataLoadError() load_error.error_level = 'Error' load_error.destination_table = 'event' load_error.line_num = csvreader.line_num load_error.error_msg = str(e) load_error.error_dt = datetime.datetime.now() db.session.add(load_error) num_errors += 1 continue event.facilityRequest = row[10] event.convention = convention # Add room to the event. if row[4].strip(): if row[4] not in rooms: # This is not a predefined room, so add it. load_error = DataLoadError() load_error.error_level = 'Warning' load_error.destination_table = 'event' load_error.line_num = csvreader.line_num load_error.error_msg = '%s is not a pre-defined room; adding this room' % row[ 4] load_error.error_dt = datetime.datetime.now() num_warnings += 1 db.session.add(load_error) room = Room() room.room_name = row[4] room.room_sq_ft = 0 room.room_capacity = 0 rooms[row[4]] = room db.session.add(room) else: room = rooms[row[4]] event.rooms.append(room) # Add presenters. if row[7].strip(): presenter_names = row[7].split(',') presenter_names = [s.strip() for s in presenter_names] for presenter_name in presenter_names: if presenter_name in presenters: presenter = presenters[presenter_name] else: last_name = presenter_name.split(' ')[-1].strip() first_name = ' '.join( presenter_name.split(' ')[0:-1]).strip() presenter = Presenter(first_name, last_name) presenters[presenter_name] = presenter db.session.add(presenter) event.presenters.append(presenter) db.session.add(event) # Commit the data to the database. db.session.commit() # Return the number of errors and warnings. return num_errors, num_warnings
events_file = open(os.path.join(script_dir, 'test_events.txt'), 'rb') csvreader = csv.reader(events_file, delimiter='|', quotechar='"') first_row = True for row in csvreader: if first_row: # Skip the header line. first_row = False continue if row[2] in tuxtrax_tracks: track_name = tuxtrax_tracks[row[2]] else: # There is no corresponding track in CREM at this time. continue event = Event() event.title = row[0] event.description = unicode(row[1], 'utf8') event.track = db.session.query(Track).\ filter(Track.name == track_name).first() event.duration = int(row[3]) event.failityRequest = row[4] event.convention = convention # Assign a random timeslot. timeslot_index = random.randint(0, timeslot_count-1) timeslot = Timeslot.query.filter_by(timeslot_index=timeslot_index).first() event.timeslots.append(timeslot) db.session.add(event) events_file.close() # Commit the test data to the database.