예제 #1
0
def delete_event():
    """ Delete the event of the group
    :param room_id: the room_id of the group
    """
    incoming = request.get_json()
    Event.delete_event_with_room_id(incoming['room_id'])
    return jsonify(results = incoming['room_id'])
예제 #2
0
def get_events_rsvp(sel):
    serialized = []
    if sel == 'false':
        #returns all the events that the current user has not RSVP to
        subquery = EventRSVP.query.with_entities(
            EventRSVP.event_id).filter_by(user_id=current_identity.id)
        events = db.session.query(Event).filter(~Event.id.in_(subquery)).all()

        serialized = [Event.serialize(e) for e in events]
    else:
        #returns all the events that the current user has RSVPed to, grouped by organization
        events_and_status = db.session.query(Event, Event.org_id, EventRSVP.status).outerjoin(EventRSVP) \
                                                .filter(EventRSVP.user_id.is_(current_identity.id)) \
                                                .order_by(Event.event_start.desc()).all()

        orgs = db.session.query(Organization).outerjoin(Event).outerjoin(EventRSVP) \
                                                .filter(EventRSVP.user_id.is_(current_identity.id)).all()

        serialized = [{
            "title":
            item.name,
            "events":
            [(Event.serialize(event), get_rsvp_status_string(rsvp_status))
             for (event, org_id, rsvp_status) in events_and_status
             if org_id is item.id]
        } for item in orgs]

    return jsonify(message=serialized), 200
예제 #3
0
def get_org_events(id):
    serialized = []
    org_name = Organization.query.get(id).name

    #events rsvp with status
    events_and_status = db.session.query(Event, EventRSVP.status).filter_by(org_id=id).outerjoin(EventRSVP) \
                                                .filter(EventRSVP.user_id.is_(current_identity.id)) \
                                                .order_by(Event.event_start.desc()).all()

    #events not rsvped to
    events_rsvp = EventRSVP.query.with_entities(
        EventRSVP.event_id).filter_by(user_id=current_identity.id).subquery()
    events_not_rsvp = db.session.query(Event).filter(~Event.id.in_(events_rsvp)).filter_by(org_id=id)\
                                             .order_by(Event.event_start.desc()).all()

    events_serialized = [(Event.serialize(event),
                          get_rsvp_status_string(rsvp_status))
                         for (event, rsvp_status) in events_and_status]
    [
        events_serialized.append((Event.serialize(event), ""))
        for event in events_not_rsvp
    ]

    serialized = [{"title": org_name, "events": events_serialized}]

    return jsonify(message=serialized), 200
예제 #4
0
def create_event():
    request_data = request.get_json()

    eventTags = ''.join(request_data["eventTags"].split()) + "#"
    dateFormat = '%Y-%m-%dT%H:%M:%S'

    eventStart = datetime.strptime(request_data["eventStartTime"][:-5],
                                   dateFormat) - timedelta(hours=7)
    eventEnd = datetime.strptime(request_data["eventEndTime"][:-5],
                                 dateFormat) - timedelta(hours=7)

    data = Event(name=request_data["eventTitle"],
                 description=request_data["eventDescription"],
                 location=request_data["eventLocation"],
                 event_start=eventStart,
                 event_end=eventEnd,
                 members_only=request_data["eventMembersOnly"],
                 max_participants=request_data["maxParticipants"],
                 image=request_data["eventImage"],
                 tags=eventTags)

    org_name = request_data["callOutTitle"]
    data.organization = Organization.query.filter_by(name=org_name).first()
    data.creator = current_identity

    try:
        db.session.add(data)
        db.session.commit()
    except:
        db.session.rollback()

    return jsonify(message="successful event creation")
예제 #5
0
def write_to_events(action, objtype, objid, user=None):
    if user:
        event = Event(user.id, action, objtype, objid)
    else:
        event = Event(current_user.id, action, objtype, objid)
    event.time = sydney_timezone_now()
    db.session.add(event)
    db.session.commit()
    return event.id
예제 #6
0
def new_event():
    form = EventForm()
    if form.validate_on_submit():
        print(form.youtube.data)
        url = form.youtube.data.replace("watch?v=", "embed/")
        if form.youtube.data == "":
            url = None
        if form.picture.data:
            image_file = save_picture(form.picture.data)
        if not form.picture.data:
            image_file = ""
        event = Event(event_name=form.title.data,
                      event_time=form.time.data,
                      location=form.location.data,
                      event_date=form.event_date.data,
                      last_registration=form.last_registration.data,
                      max_participants=form.max_participants.data)
        db.session.add(event)
        db.session.flush()
        post = Post(title=form.title.data,
                    content=form.content.data,
                    youtube=url,
                    author=current_user,
                    image_file=image_file,
                    event_id=event.id)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('posts.home'))
    user_info = User_info.query.filter_by(id=current_user.id).first()
    return render_template('new_event.html', form=form, user_info=user_info)
예제 #7
0
def create_event():
    """ Create an event with name, location, start and end time and description
    :param room_id: the room_id of the group
    :param event_name: the name of the event
    :param location: the location of the event
    :param start_time: start date and time of the event
    :param end_time: end date and time of the event
    :param description: the description of the event
    """
    incoming = request.get_json()
    try:
        start_time = incoming['start_time'][:-1].replace('T', ' ')
    except:
        start_time = None
    try:
        end_time = incoming['end_time'][:-1].replace('T', ' ')
    except:
        end_time = None
    event = Event(
        room_id = incoming['room_id'],
        name = incoming['event_name'],
        location = incoming['location'],
        start_time =  start_time,
        end_time = end_time,
        description = incoming['description']
    )
    db.session.add(event)
    db.session.commit()
    return jsonify(results = event.room_id)
예제 #8
0
def upload():
    if request.method == 'GET':
        return redirect(url_for('home'))
    file = request.files['image']
    EventNameFile = request.form['EventName']
    EventDateFile = request.form['EventDate']
    EventTimeFile = request.form['EventTime']
    EventLocationFile = request.form['EventLocation']
    EventDescriptionFile = request.form['EventDescription']

    if not file:
        flash("No file")
        return render_template('index.html')
    if not EventNameFile:
        flash("Incorrect Name")
        return render_template('index.html')
    if not EventDateFile:
        flash("Incorrect Date")
        return render_template('index.html')
    if not EventTimeFile:
        flash("Incorrect Time")
        return render_template('index.html')
    if not EventLocationFile:
        flash("Incorrect Location")
        return render_template('index.html')
    if not EventDescriptionFile:
        flash("Incorrect Description")
        return render_template('index.html')
    f = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
    file.save(f)
    print(EventNameFile)
    print(EventDateFile)
    print(EventTimeFile)
    print(EventLocationFile)
    print(EventDescriptionFile)
    try:
        geolocator = Nominatim(user_agent="cleanup-meetup")
        location = geolocator.geocode(EventLocationFile)
        print((location.latitude, location.longitude))
        locLat = truncate(location.latitude)
        locLng = truncate(location.longitude)
    except:
        flash("Please enter a valid address!")
        return render_template('index.html')
    #FOR DEMOING PURPOSES!!!!!!!!
    userID = "UserID1"
    e = Event(name=EventNameFile,
              lat=locLat,
              lng=locLng,
              confirmed_users=userID,
              event_date=EventDateFile,
              event_creator=userID,
              fileLocation=file.filename,
              address=EventLocationFile,
              description=EventDescriptionFile,
              time=EventTimeFile)
    db.session.add(e)
    db.session.commit()
    return render_template('index.html')
예제 #9
0
def get_all_events():
    serialized = []
    try:
        events = Event.query.all()
        serialized = [Event.serialize(item) for item in events]
    except:
        db.session.rollback()
    return jsonify(message=serialized), 200
예제 #10
0
def get_event():
    """ Get the event information of the group
    :param room_id: the room_id of the group
    """
    incoming = request.get_json()
    event = Event.get_event_with_room_id(incoming['room_id'])
    if event:
        results = {'event_name': event.name,
        'location': event.location, 'start_time': event.start_time,
        'end_time': event.end_time, 'description': event.description}
    else:
        results = {'event_name': "", 'location': "",
        'start_time': "", 'end_time': "", 'description': ""}
    return jsonify(results = results)
예제 #11
0
def get_events(sel):
    serialized = []

    if sel == 'true':
        #gets all the events for the orgs you are an admin of
        orgs = current_identity.organizations_as_admin
    else:
        #gets all the events for the orgs you are a member of
        orgs = current_identity.organizations_as_member

    serialized = [{
        "title": item.name,
        "admin": True,
        "events": [Event.serialize(i) for i in item.events]
    } for item in orgs]

    return jsonify(message=serialized), 200
예제 #12
0
def get_events_filtered():
    serialized = []
    tag = request.args.get("filter")

    #default when there is no filter, returns all the events you have not rsvp to
    if tag == "":
        return get_events_rsvp("false")

    try:
        subquery = EventRSVP.query.with_entities(
            EventRSVP.event_id).filter_by(user_id=current_identity.id)
        events = db.session.query(Event).filter(~Event.id.in_(subquery)) \
                                        .filter((Event.tags.like("%#" + tag + "#%")) | (Event.name.like("%" + tag + "%"))).all()
        serialized = [Event.serialize(item) for item in events]
    except:
        db.session.rollback()

    return jsonify(message=serialized), 200
예제 #13
0
def sportradar_insert_game(game_data):
    for game in game_data['games']:
        name = '{0} {1} at {2} {3}'.format(
            game['away']['market'], game['away']['name'],
            game['home']['market'], game['home']['name'])
        start_date = date_from_string(game['scheduled'])
        try:
            event = Event(name, start_date, game['id'])
            db.session.add(event)
            db.session.commit()
            for adapter in adapters:
                instance = adapter()
                name = instance.assign_name(game)
                outcome = Outcome(event.id, name, datetime.datetime.now(),
                                start_date, True, adapter.type_id)
                db.session.add(outcome)
        except InvalidRequestError:
            continue # already exists
    db.session.commit()
예제 #14
0
 def create_event(cls, session, name, ts=dt.now(), msg="msg"):
     event = Event(name=name, ts=ts, msg=(f"{name}_{msg}"))
     session.add(event)
     session.commit()
     return event
예제 #15
0
 def make_event(self, data, **kwargs):
     return Event(**data)
예제 #16
0
def order_coffee(slackclient, user, channel, match):
    """Handle adding coffee to existing orders.

  Args:
    slackclient: the slackclient.SlackClient object for the current
      connection to Slack.
    user: the slackclient.User object for the user who send the
      message to us.
    channel: the slackclient.Channel object for the channel the
      message was received on.
    match: the object returned by re.match (an _sre.SRE_Match object).
  """
    logger = logging.getLogger('order_coffee')
    logger.info('Matches: %s', pprint.pformat(match.groupdict()))
    runid = match.groupdict().get('runid', None)
    run = None
    if runid and runid.isdigit():
        run = Run.query.filter_by(id=int(runid)).first()
    if not run:
        # Pick a run
        runs = Run.query.filter_by(is_open=True).order_by('time').all()
        if len(runs) > 1:

            def resolve_run_feedback():
                channel.send_message(
                    'More than one open run, please specify by adding run=<id> on the end.'
                )
                list_runs(slackclient, user, channel, match=None)

            return (False, resolve_run_feedback)
        if len(runs) == 0:

            def resolve_closed_feedback():
                channel.send_message('No open runs')

            return (False, resolve_closed_feedback)
        run = runs[0]

    # Create the coffee
    c = coffeespecs.Coffee(match.groupdict().get('order', None))
    validation_errors = list(c.validation_errors())
    if validation_errors:

        def resolve_validation_feedback():
            channel.send_message(
                'That coffee is not valid missing the following specs: {}. Got: {}'
                .format(
                    ', '.join(spec.name for spec in validation_errors),
                    c,
                ))

        return (False, resolve_validation_feedback)
    coffee = Coffee(c, 0, run.id)

    # Find the user that requested this
    dbuser = utils.get_or_create_user(user.id, TEAM_ID, user.name)
    logger.info('User: %s', dbuser)

    # Put it all together
    coffee.person = dbuser.id
    db.session.add(coffee)
    db.session.commit()
    events.coffee_added(run.id, coffee.id)

    # Write the event
    event = Event(coffee.person, "created", "coffee", coffee.id)
    event.time = sydney_timezone_now()
    db.session.add(event)
    db.session.commit()
    logger.info('Parsed coffee: %s', coffee)

    runuser = User.query.filter_by(id=run.person).first()
    if runuser.slack_user_id:
        mention_runner = '<@{}>'.format(runuser.slack_user_id)
    else:
        mention_runner = runuser.name
    channel.send_message('That\'s a {} for {} (added to {}\'s run.)'.format(
        coffee.pretty_print(), mention(user), mention_runner))
    return (True, None)