Example #1
0
def add_meeting():
    """
    This functin accepted meeting details from post request
    and saves them in the db.
    """
    output = dict()
    status = 422

    data = json.loads(request.data.decode('utf-8'))
    if not data:
        return jsonify({"error": "Missing data to save"}), status
    try:
        user_id = data['user_id']
        name = data['name']
        event_type = data['event_type']
        description = data['description']
        duration = data['duration']

        newMeeting = Meeting(user_id, name, event_type, description, duration)
        result = Meeting.save(newMeeting)
        if result:
            output["success"] = f"meeting {data} saved"
            status = 200
        else:
            output["error"] = "Could not save"
        return jsonify(output), status
    except Exception as e:
        output['error'] = f'{e}'
        status = 500
        return jsonify(output), status
Example #2
0
def create_meeting(meetingData: MeetingType):
    """
    Create a new meeting.
    """

    try:

        meeting = Meeting()
        meeting.validate(meetingData)

        meeting = Meeting.create(**dump_schema(meetingData))

        headers = {"Content-Location": f"/v1/meetings/{meeting.id}"}

        msg = "Meeting created successfully."

        log.info(f"{msg} with id: {meeting.id}")
        return HTTP_201, {"message": f"{msg}"}, headers

    except ValidationError as error:

        log.error(f"ValidationError: {error}")
        raise HTTPError(HTTP_400, {"errors": str(error)})

    except ConflictError as error:

        log.error(f"ConflictError: {error}")
        raise HTTPError(HTTP_409, {"errors": str(error)})
Example #3
0
 def create_with_owner(self, obj_in: Dict[str, Any],
                       user_id: int) -> Dict[str, Any]:
     db_obj = Meeting(**obj_in, user_id=user_id)
     db.session.add(db_obj)
     try:
         db.session.commit()
     except IntegrityError:
         db.session.rollback()
         return {'added': False}
     db.session.refresh(db_obj)
     return {'added': True, 'db_obj': db_obj}
Example #4
0
def create_meeting():
    if request.method == 'POST':
        email = session['email']

        day = request.form['day']
        time = request.form['time']
        p1 = request.form['p1']
        p2 = request.form['p2']
        p3 = request.form['p3']
        p4 = request.form['p4']
        p5 = request.form['p5']
        p6 = request.form['p6']
        p7 = request.form['p7']
        p8 = request.form['p8']
        p9 = request.form['p9']
        p10 = request.form['p10']

        member_emails = {
            'p1': p1,
            'p2': p2,
            'p3': p3,
            'p4': p4,
            'p5': p5,
            'p6': p6,
            'p7': p7,
            'p8': p8,
            'p9': p9,
            'p10': p10
        }

        # get all available rooms in DB
        rooms = RoomMatrix.get_rooms()

        # gets random room number to assign new meetings to random room number
        random.random()
        # random.randint selects (start, end) with both ends inclusive
        r_int = random.randint(0, (len(rooms) - 1))
        # get room object using a random room_id assigned from the RoomMatrix
        room = Room.get_from_mongo(rooms[r_int]['room_id'])
        # room object stores room number
        r_number = room.roomNum
        # create the meeeting
        meeting = Meeting(day=day, time=time, r_number=r_number, email=email, members=member_emails)

        # if meeting day/time available, ALSO update room list with new meeting and save meeting to DB
        if meeting.isAvailable(day, time):
            room.update_meetings(room._id, day + time, meeting._id)
            meeting.save_to_mongo()
            return make_response(back_to_profile())
    return render_template('create_meeting_error.html', error="Meeting Day-Time already taken", email=session['email'])
Example #5
0
def generate_meetings(session):
    import random
    from models.meeting import Meeting
    from faker import Faker

    faker = Faker()
    clients = list(range(1, 3001))
    friend_groups = list(range(1, 2001))
    for i in range(1, 5000):
        meeting = Meeting()
        meeting.client_id = random.choice(clients)
        meeting.friend_group_id = random.choice(friend_groups)
        meeting.date = faker.date_between(start_date='-1y', end_date='today')
        session.add(meeting)
    session.commit()
Example #6
0
    def authorize():
        error = request.args.get('error', default="", type=str)
        if error != "":
            return make_response(
                redirect(f"http://localhost:3000/after-login?error={error}!"))
        google = gauth.create_client('google')
        token = google.authorize_access_token()
        resp = google.get('userinfo')
        user_info = resp.json()
        g_user = gauth.google.userinfo()
        session["access_token"] = token["access_token"]
        """
        If user exists in DB then db_user will be dict.
        But if we are saving brand new user object
        Then db_user would be object containing
        property inserted_id
        """
        my_user = User(g_user)
        db_user = my_user.save("users")
        session['profile'] = user_info
        # User exists then db_user is dict
        if type(db_user) is dict:
            user_id = db_user["_id"]
            query = {"_id": ObjectId(db_user["_id"])}
            resonse = make_response(
                redirect("http://localhost:3000/dashboard?access_token=" +
                         token["access_token"] + "&user_id=" + str(user_id) +
                         "&email=" + g_user.email + "&jwt_token=" +
                         token["id_token"]))
        else:
            user_id = db_user.inserted_id
            query = {"_id": db_user.inserted_id}
            meeting = Meeting(user_id, "First meeting", "one-to-one",
                              "my meeting", 60)
            saveMeeting = meeting.save("meeting")
            if saveMeeting.inserted_id:
                my_user.add_meeting_id(saveMeeting.inserted_id)
            resonse = make_response(
                redirect(
                    "http://localhost:3000/profile_settings?access_token=" +
                    token["access_token"] + "&user_id=" + str(user_id) +
                    "&email=" + g_user.email + "&jwt_token=" +
                    token["id_token"]))

        newValues = {"$set": {"access_token": token["access_token"]}}
        result = User.update(query, newValues)
        session.permanent = True
        return resonse
Example #7
0
 def add_meeting():
     if request.method == 'POST':
         data = request.json
         meeting = {
             'subject': data['subject'],
             'location': data['location'],
             'date': data['date'],
             'time': data['time'],
             'attending': data['attending']
         }
         new_meeting = Meeting(meeting['subject'], meeting['location'],
                               meeting['date'], meeting['time'],
                               meeting['attending'])
         session.add(new_meeting)
         session.commit()
         print(meeting, 'Added To The Database Successfully.')
         return 'Instance added successfully'
Example #8
0
def create_meeting():
    form = CreateMeetingForm()
    if form.validate_on_submit():
        meeting = Meeting(
            meeting_creator=current_user.id,
            max_bikers=form.num_of_bikers.data,
            area=form.area.data,
            trail=form.trail.data,
            date_time=datetime.fromisoformat(f"{form.date.data} {form.time.data}"),
            title=form.title.data,
            description=form.description.data,
            min_skill=form.min_skill.data
        )
        db.session.add(meeting)
        current_user.participations.append(meeting)
        db.session.commit()
        return redirect(url_for("main.profile"))

    context = {
        "title": "Create a meeting",
        "form": form
    }
    return render_template("meeting/create_meeting.html", **context)