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))
def get_form_registration(meeting_id): message = request.args.get('message', None) current_user = get_current_user() meeting = db_session.query(Meeting).filter(Meeting.id == meeting_id).first() registration = db_session.query(Registration).filter(Registration.user == current_user, Registration.meeting == meeting).first() if (not meeting or len(meeting.users) >= meeting.quota or not meeting.available) and not registration: return render_template('meeting.html', message='이미 끝난 모임이거나, 정원이 다 차버린 모임입니다.', meeting=meeting, current_user=get_current_user()) return render_template('registration.html', participant=current_user, current_user=current_user, next_meeting=meeting, message=message, registration=registration)
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')
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'))
def get_meeting(meeting_id): meeting = db_session.query(Meeting).filter( Meeting.id == meeting_id).first() return render_template('meeting.html', meeting=meeting, current_user=get_current_user(), config=config)
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')
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')
def form_modify_meeting(meeting_id): 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='해당 모임 정보가 없습니다.') return render_template('form-meeting.html', meeting=meeting, current_user=get_current_user(), config=config)
def get_form_registration(meeting_id): message = request.args.get('message', None) current_user = get_current_user() meeting = db_session.query(Meeting).filter( Meeting.id == meeting_id).first() registration = db_session.query(Registration).filter( Registration.user == current_user, Registration.meeting == meeting).first() if (not meeting or len(meeting.users) >= meeting.quota or not meeting.available) and not registration: return render_template('meeting.html', message='이미 끝난 모임이거나, 정원이 다 차버린 모임입니다.', meeting=meeting, current_user=get_current_user()) return render_template('registration.html', participant=current_user, current_user=current_user, next_meeting=meeting, message=message, registration=registration)
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))
def post_signin(): email = request.form.get('email', None) password = request.form.get('password', None) dest = request.args.get('dest', None) user = db_session.query(User).filter(User.email == email, User.password == password).first() if user: session['user_id'] = user.id else: return render_template('signin.html', message='로그인 정보가 잘못되었습니다.') if not dest: dest = url_for('index.get_index') return redirect(dest)
def post_signin(): email = request.form.get('email', None) password = request.form.get('password', None) dest = request.args.get('dest', None) user = db_session.query(User).filter(User.email == email, User.password == password).first() if user: session['user_id'] = user.id else: return render_template('signin.html', message='로그인 정보가 잘못되었습니다.') if not dest: dest = url_for('index.get_index') return redirect(dest)
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))
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))
def post_find_password(): email = request.form.get('email', '') if not email: return render_template('find-password.html', message='메일 주소를 입력해주세요.') user = db_session.query(User).filter(User.email == email).first() if not user: return render_template('find-password.html', message='해당 메일 주소를 갖는 사용자가 없습니다.') expired = datetime.now(tz=config.TIMEZONE) + timedelta(minutes=30) args = { 'config': config, 'expired': expired, 'email': email, 'user_id': user.id, 'token': create_token(email, 'form_change_password', expired) } if send_email_to_user(user, '[tototo] 요청하신 비밀번호 찾기 메일입니다.', 'mail-find-password.html', args): return render_template('find-password-send-complete.html') return render_template('error.html', message='비밀번호 찾기 메일 발송에 실패했습니다.')
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'))
def post_find_password(): email = request.form.get('email', '') if not email: return render_template('find-password.html', message='메일 주소를 입력해주세요.') user = db_session.query(User).filter(User.email == email).first() if not user: return render_template('find-password.html', message='해당 메일 주소를 갖는 사용자가 없습니다.') expired = datetime.now(tz=config.TIMEZONE) + timedelta(minutes=30) args = { 'config': config, 'expired': expired, 'email': email, 'user_id': user.id, 'token': create_token(email, 'form_change_password', expired) } if send_email_to_user(user, '[tototo] 요청하신 비밀번호 찾기 메일입니다.', 'mail-find-password.html', args): return render_template('find-password-send-complete.html') return render_template('error.html', message='비밀번호 찾기 메일 발송에 실패했습니다.')
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')
def form_modify_meeting(meeting_id): 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='해당 모임 정보가 없습니다.') return render_template('form-meeting.html', meeting=meeting, current_user=get_current_user(), config=config)
def get_meetings(): meetings = db_session.query(Meeting).order_by(desc( Meeting.registered)).all() return render_template('meetings-list.html', meetings=meetings, current_user=get_current_user())
def get_meeting(meeting_id): meeting = db_session.query(Meeting).filter(Meeting.id == meeting_id).first() return render_template('meeting.html', meeting=meeting, current_user=get_current_user())
def get_meetings(): meetings = db_session.query(Meeting).order_by(desc(Meeting.registered)).all() return render_template('meetings-list.html', meetings=meetings, current_user=get_current_user())