Exemple #1
0
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))
Exemple #2
0
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!'})
Exemple #3
0
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))
Exemple #4
0
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'))
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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"
Exemple #8
0
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
Exemple #9
0
    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()
Exemple #10
0
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
Exemple #11
0
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.