Esempio n. 1
0
def post_change_password(user_id: int):
    email = request.form.get('email', '')
    token = request.form.get('token', '')
    expired = request.form.get('expired', '')
    password = request.form.get('password', '')
    password_confirm = request.form.get('password_confirm', '')

    now = datetime.now(tz=config.TIMEZONE)
    expired = datetime.strptime(expired, config.DATETIME_FORMAT)
    if expired < now or not valid_token(token, str(user_id), 'post_change_password', expired):  # fail
        return render_template('error.html', message='잘못된 비밀번호 변경 요청입니다.')

    user = db_session.query(User).filter(User.id == user_id).first()
    if not user:
        return render_template('error.html', message='해당 사용자 정보가 존재하지 않습니다.')

    if password != password_confirm:
        return render_template('change-password.html', message='비밀번호와 비밀번호 확인이 일치하지 않습니다.', config=config,
                               email=email, token=token, expired=expired, user_id=user_id)

    user.password = password
    db_session.add(user)
    db_session.commit()

    return render_template('change-password-success.html')
Esempio n. 2
0
def post_signup():
    email = request.form.get('email', None)
    name = request.form.get('name', None)
    password = request.form.get('password', None)
    password_confirm = request.form.get('password_confirm', None)
    mail_subscribe = request.form.get('mail_subscribe', 'off') == 'on'

    message = None

    # validation of user input
    if not EMAIL_REGEX.match(email):
        message = '이메일 형식이 올바르지 않습니다.'
    elif password != password_confirm:
        message = '입력한 두 비밀번호가 서로 다릅니다.'
    elif not name:
        message = '이름이 입력되지 않았습니다.'

    # check user duplication
    if db_session.query(User).filter(User.email == email).count() > 0:
        message = '동일한 이메일 주소로 가입된 사용자가 존재합니다.'

    if message:
        return render_template('signup.html', message=message, input_email=email, input_name=name)

    # add user
    user = User(name=name, email=email, password=password, mail_subscribe=mail_subscribe)
    db_session.add(user)
    db_session.commit()

    return render_template('signup-success.html')
Esempio n. 3
0
def modify_meeting(meeting_id):
    try:
        name, where, location_lat, location_lng, when, when_end, available, quota = get_meeting_data_from_request(
        )
    except ValueError:
        return render_template('error.html',
                               current_user=get_current_user(),
                               message='잘못된 요청입니다.'), 400

    meeting = db_session.query(Meeting).filter(
        Meeting.id == meeting_id).first()
    if not meeting:
        return render_template('error.html',
                               current_user=get_current_user(),
                               message='해당 모임 정보가 없습니다.')

    when = config.TIMEZONE.localize(datetime.strptime(when, '%Y-%m-%d %H:%M'))
    when_end = config.TIMEZONE.localize(
        datetime.strptime(when_end, '%Y-%m-%d %H:%M'))

    meeting.name = name
    meeting.where = where
    meeting.location_lat = location_lat
    meeting.location_lng = location_lng
    meeting.when = when
    meeting.when_end = when_end
    meeting.available = available
    meeting.quota = quota
    db_session.add(meeting)
    db_session.commit()

    return redirect(url_for('meetings.get_meetings'))
Esempio n. 4
0
def post_change_password(user_id: int):
    email = request.form.get('email', '')
    token = request.form.get('token', '')
    expired = request.form.get('expired', '')
    password = request.form.get('password', '')
    password_confirm = request.form.get('password_confirm', '')

    now = datetime.now(tz=config.TIMEZONE)
    expired = datetime.strptime(expired, config.DATETIME_FORMAT)
    if expired < now or not valid_token(
            token, str(user_id), 'post_change_password', expired):  # fail
        return render_template('error.html', message='잘못된 비밀번호 변경 요청입니다.')

    user = db_session.query(User).filter(User.id == user_id).first()
    if not user:
        return render_template('error.html', message='해당 사용자 정보가 존재하지 않습니다.')

    if password != password_confirm:
        return render_template('change-password.html',
                               message='비밀번호와 비밀번호 확인이 일치하지 않습니다.',
                               config=config,
                               email=email,
                               token=token,
                               expired=expired,
                               user_id=user_id)

    user.password = password
    db_session.add(user)
    db_session.commit()

    return render_template('change-password-success.html')
Esempio n. 5
0
def post_meeting():
    try:
        name, where, location_lat, location_lng, when, when_end, available, quota = get_meeting_data_from_request(
        )
    except ValueError:
        return render_template('error.html',
                               current_user=get_current_user(),
                               message='잘못된 요청입니다.'), 400

    when = config.TIMEZONE.localize(datetime.strptime(when, '%Y-%m-%d %H:%M'))
    when_end = config.TIMEZONE.localize(
        datetime.strptime(when_end, '%Y-%m-%d %H:%M'))

    meeting = Meeting(name=name,
                      where=where,
                      when=when,
                      when_end=when_end,
                      available=available,
                      quota=quota,
                      location_lat=location_lat,
                      location_lng=location_lng)
    db_session.add(meeting)
    db_session.commit()

    return redirect(url_for('meetings.get_meetings'))
Esempio n. 6
0
def post_registration(meeting_id):
    participant = get_current_user()
    memo = request.form.get('memo', None)

    if not memo:
        return redirect(
            url_for('meetings.get_form_registration',
                    meeting_id=meeting_id,
                    message='모임에서 달성할 목표는 반드시 입력해야합니다.'))

    meeting = db_session.query(Meeting).filter(
        Meeting.id == meeting_id).first()
    if not meeting:
        return redirect(
            url_for('meetings.get_form_registration',
                    meeting_id=meeting_id,
                    message='해당 모임이 존재하지 않습니다.'))

    registration = db_session.query(Registration).filter(
        Registration.user == participant,
        Registration.meeting == meeting).first()
    if not registration:
        if not meeting.available or len(meeting.users) >= meeting.quota:
            return redirect(
                url_for('meetings.get_form_registration',
                        meeting_id=meeting_id,
                        message='해당 모임에는 참가할 수 없습니다.'))
        registration = Registration(user_id=participant.id,
                                    meeting_id=meeting_id)

    registration.memo = memo
    db_session.add(registration)
    db_session.commit()

    return redirect(url_for('meetings.get_meeting', meeting_id=meeting_id))
Esempio n. 7
0
def post_meeting():
    try:
        name, where, location_lat, location_lng, when, available, quota = get_meeting_data_from_request()
    except ValueError:
        return render_template('error.html', current_user=get_current_user(), message='잘못된 요청입니다.'), 400

    when = config.TIMEZONE.localize(datetime.strptime(when, '%Y-%m-%d %H:%M'))

    meeting = Meeting(
        name=name, where=where, when=when, available=available, quota=quota, location_lat=location_lat,
        location_lng=location_lng)
    db_session.add(meeting)
    db_session.commit()

    return redirect(url_for('meetings.get_meetings'))
Esempio n. 8
0
def manage_registration(meeting_id, registration_id):
    registration = db_session.query(Registration).filter(Registration.id == registration_id).first()
    if not registration:
        return render_template('error.html', message='해당 참가 신청이 존재하지 않습니다.')
    if meeting_id != registration.meeting_id:
        return render_template('error.html', message='해당 참가 신청 데이터가 잘못되었습니다. (not matched meeting id)')
    status = request.form.get('status', None)
    if status not in ['waiting', 'accepted', 'cancelled', 'refused', 'not-attended']:
        return render_template('error.html', message='참가 신청 상태 정보가 잘못되었습니다. (' + str(status) + ')')

    registration.status = status
    db_session.add(registration)
    db_session.commit()

    return redirect(url_for('meetings.get_meeting', meeting_id=meeting_id))
Esempio n. 9
0
def post_slides(meeting_id):
    presenter_id = int(request.form.get('presenter_id', '-1'))
    title = request.form.get('title', None)
    memo = request.form.get('memo', None)
    url = request.form.get('url', None)

    if not title or not url or presenter_id == -1:
        return render_template(
            'form-slides.html', current_user=get_current_user(), meeting_id=meeting_id,
            message='발표자 번호, 제목, URL은 반드시 입력해야합니다.')

    slide = Slide(presenter_id=presenter_id, meeting_id=meeting_id, title=title, memo=memo, url=url)
    db_session.add(slide)
    db_session.commit()

    return redirect(url_for('meetings.get_meeting', meeting_id=meeting_id))
Esempio n. 10
0
def post_meeting():
    name = request.form.get('name', None)
    where = request.form.get('where', None)
    when = request.form.get('when', None)
    available = request.form.get('available', 'off') == 'on'
    quota = int(request.form.get('quota', '-1'))

    if not name or not where or not when or quota == -1:
        return '', 400

    when = config.TIMEZONE.localize(datetime.strptime(when, '%Y-%m-%d %H:%M'))

    meeting = Meeting(name=name, where=where, when=when, available=available, quota=quota)
    db_session.add(meeting)
    db_session.commit()

    return redirect(url_for('meetings.get_meetings'))
Esempio n. 11
0
def post_slides(meeting_id):
    presenter_id = int(request.form.get('presenter_id', '-1'))
    title = request.form.get('title', None)
    memo = request.form.get('memo', None)
    url = request.form.get('url', None)

    if not title or not url or presenter_id == -1:
        return render_template('form-slides.html',
                               current_user=get_current_user(),
                               meeting_id=meeting_id,
                               message='발표자 번호, 제목, URL은 반드시 입력해야합니다.')

    slide = Slide(presenter_id=presenter_id,
                  meeting_id=meeting_id,
                  title=title,
                  memo=memo,
                  url=url)
    db_session.add(slide)
    db_session.commit()

    return redirect(url_for('meetings.get_meeting', meeting_id=meeting_id))
Esempio n. 12
0
def manage_registration(meeting_id, registration_id):
    registration = db_session.query(Registration).filter(
        Registration.id == registration_id).first()
    if not registration:
        return render_template('error.html', message='해당 참가 신청이 존재하지 않습니다.')
    if meeting_id != registration.meeting_id:
        return render_template(
            'error.html',
            message='해당 참가 신청 데이터가 잘못되었습니다. (not matched meeting id)')
    status = request.form.get('status', None)
    if status not in [
            'waiting', 'accepted', 'cancelled', 'refused', 'not-attended'
    ]:
        return render_template('error.html',
                               message='참가 신청 상태 정보가 잘못되었습니다. (' +
                               str(status) + ')')

    registration.status = status
    db_session.add(registration)
    db_session.commit()

    return redirect(url_for('meetings.get_meeting', meeting_id=meeting_id))
Esempio n. 13
0
def post_registration(meeting_id):
    participant = get_current_user()
    memo = request.form.get('memo', None)

    if not memo:
        return redirect(url_for('meetings.get_form_registration', meeting_id=meeting_id, message='모임에서 달성할 목표는 반드시 입력해야합니다.'))

    meeting = db_session.query(Meeting).filter(Meeting.id == meeting_id).first()
    if not meeting:
        return redirect(url_for('meetings.get_form_registration', meeting_id=meeting_id, message='해당 모임이 존재하지 않습니다.'))

    registration = db_session.query(Registration).filter(Registration.user == participant, Registration.meeting == meeting).first()
    if not registration:
        if not meeting.available or len(meeting.users) >= meeting.quota:
            return redirect(url_for('meetings.get_form_registration', meeting_id=meeting_id, message='해당 모임에는 참가할 수 없습니다.'))
        registration = Registration(user_id=participant.id, meeting_id=meeting_id)

    registration.memo = memo
    db_session.add(registration)
    db_session.commit()

    return redirect(url_for('meetings.get_meeting', meeting_id=meeting_id))
Esempio n. 14
0
def modify_meeting(meeting_id):
    try:
        name, where, location_lat, location_lng, when, available, quota = get_meeting_data_from_request()
    except ValueError:
        return render_template('error.html', current_user=get_current_user(), message='잘못된 요청입니다.'), 400

    meeting = db_session.query(Meeting).filter(Meeting.id == meeting_id).first()
    if not meeting:
        return render_template('error.html', current_user=get_current_user(), message='해당 모임 정보가 없습니다.')

    when = config.TIMEZONE.localize(datetime.strptime(when, '%Y-%m-%d %H:%M'))

    meeting.name = name
    meeting.where = where
    meeting.location_lat = location_lat
    meeting.location_lng = location_lng
    meeting.when = when
    meeting.available = available
    meeting.quota = quota
    db_session.add(meeting)
    db_session.commit()

    return redirect(url_for('meetings.get_meetings'))
Esempio n. 15
0
def post_signup():
    email = request.form.get('email', None)
    name = request.form.get('name', None)
    password = request.form.get('password', None)
    password_confirm = request.form.get('password_confirm', None)
    mail_subscribe = request.form.get('mail_subscribe', 'off') == 'on'

    message = None

    # validation of user input
    if not EMAIL_REGEX.match(email):
        message = '이메일 형식이 올바르지 않습니다.'
    elif password != password_confirm:
        message = '입력한 두 비밀번호가 서로 다릅니다.'
    elif not name:
        message = '이름이 입력되지 않았습니다.'

    # check user duplication
    if db_session.query(User).filter(User.email == email).count() > 0:
        message = '동일한 이메일 주소로 가입된 사용자가 존재합니다.'

    if message:
        return render_template('signup.html',
                               message=message,
                               input_email=email,
                               input_name=name)

    # add user
    user = User(name=name,
                email=email,
                password=password,
                mail_subscribe=mail_subscribe)
    db_session.add(user)
    db_session.commit()

    return render_template('signup-success.html')