def process(self, form: FlaskForm): user = User.query.filter(User.email == form.email.data).count() if user: return return_bad_status( 'Пользователь с такой почтой уже существует.') user = User.query.filter(User.login == form.login.data).count() if user: return return_bad_status( 'Пользователь с таким логином уже существует.') code = ''.join([ random.choice( list( '123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' )) for x in range(8) ]) secret_link = 'http://*****:*****@yandex.ru", recipients=[form.email.data]) msg.body = 'Для подтверждения вашей учетной записи пройдите по этой ссылке: ' + secret_link mail.send(msg) secret_pass = sha256(form.password.data.encode()).hexdigest() user = User(form.name.data, form.email.data, form.login.data, secret_pass, code) user.save() user_id = User.last_id() return return_ok_status(user_id)
def get(self): if not is_auth(): return_bad_status('Вы не авторизованы!') time = datetime.now() tournaments_ = db.session.query(Tournament).filter(and_(Tournament.time_to_live > time, Tournament.private == 0)).all() tournaments = TournamentSchema(many=True).dump(tournaments_).data return return_ok_status(tournaments)
def post(self, id): creator = db.session.query(Tournament.creator).filter(Tournament.id == id) if session['username'] != creator: return_bad_status('Вы не создатель турнира!') if not is_auth(): return_bad_status('Вы не авторизованы!') Tournament.query.filter(Tournament.id == id).delete() db.session.commit() return return_ok_status('Турнир успешно удален!')
def post(self, tournament_id, task_id): task = Task.get_by_id(task_id) tournament = task.tournament creator_id = tournament.creator_id if session['id'] != creator_id: return return_bad_status('Вы не создатель турнира!') if not is_auth(): return return_bad_status('Вы не авторизованы!') Task.query.filter(Task.id == task_id).delete() db.session.commit() return return_ok_status('Задача успешно удалена!')
def get(self): code = request.args.get('code') user = db.session.query(User).filter(User.code == code) if user.count(): if user[0].is_confirmed: return return_bad_status( "Вы уже подтвердили свою учетную запись!") user[0].is_confirmed = True user[0].code = None db.session.commit() return return_ok_status( "Вы успешно подтвердили свою учетную запись!") return return_bad_status('Неверный код подтверждения!')
def process(self, form: FlaskForm): login = session['username'] if db.session.query(User.password).filter(User.login == login) != form.old_password.data: User.update_by_login(login,'password', form.new_password.data) return return_ok_status('Password change.') else: return return_bad_status('Not change.')
def process(self, form: FlaskForm): login = session['username'] if db.session.query(User.surname).filter(User.login == login) != form.surname.data: User.update_by_login(login, 'surname', form.surname.data) return return_ok_status('Surname change.') else: return return_bad_status('Not change.')
def process(self, form: FlaskForm): login = session['username'] if db.session.query(User.email).filter(User.login == login) != form.email.data and db.session.query( User.password).filter(User.login == login) == sha256(form.password.data.encode()).hexdigest(): User.update_by_login(login, 'email', form.email.data) return return_ok_status('Email change.') else: return return_bad_status('Not change.')
def process(self, form: FlaskForm, tournament_id): if not is_auth(): return return_bad_status("Вы не авторизованы!") message = (form.text.data, form.tournament.data) message.creator_id = session['username'] message.save() return return_ok_status('Сообщение отправлено!')
def process(self, form: FlaskForm): password = sha256(form.password.data.encode()).hexdigest() user = User.query.filter(User.login == form.login.data).filter( User.password == password) if user.count(): if user[0].is_confirmed: session['username'] = form.login.data session['id'] = user[0].id session['team_id'] = user[0].teams[0].name if user[ 0].teams else 'null' data = { 'username': session['username'], 'id': session['id'], 'team_id': session['team_id'] } return return_ok_status(data) return return_bad_status( 'Аккаунт не подтверждён! Введите код подтверждения на почте') return return_bad_status('Неправильный логин или пароль!')
def process(self, form: FlaskForm): task_id = int(form.id.data) tournament_id = int(form.tournament_id.data) task = Task.get_by_id(task_id) tournament = Tournament.get_info(tournament_id) true_flag = task.flag user_flag = form.flag.data contestant_id = g.user.id if not tournament.for_team_allowed and g.user.teams: contestant_id = g.user.teams[0] tournament_to_object = TournamentsToObject.get_one_or_none( tournament_id, contestant_id) if not tournament_to_object: return return_bad_status( "Ты должен войти в турнир чтобы сдать таск") if Attempt.already_solved(tournament_to_object.id, task_id): return return_bad_status("Задача сдана") if user_flag == true_flag: attemp = Attempt(user_flag, True, task=task.id, tournament_to_object=tournament_to_object.id) attemp.save() send_scoreboard_to_room( tournament_id ) # Notify everyone who is watching scoreboard for this tournament return return_ok_status({ 'right': True, 'message': 'Попытка добавлена' }) else: attemp = Attempt(user_flag, False, task=task.id, tournament_to_object=tournament_to_object.id) attemp.save() return return_ok_status({ 'right': False, 'message': 'Попытка добавлена' })
def process(self, form: FlaskForm, tournament_id): if not is_auth(): return return_bad_status("Вы не авторизованы!") Tournament.update_by_id(tournament_id, 'name', form.name.data) Tournament.update_by_id(tournament_id, 'description', form.description.data) Tournament.update_by_id(tournament_id, 'private', bool(int(form.private.data))) Tournament.update_by_id(tournament_id, 'platform', bool(int(form.platform.data))) Tournament.update_by_id(tournament_id, 'time', form.time.data) Tournament.update_by_id(tournament_id, 'time_to_live', form.time_to_live.data) Tournament.update_by_id(tournament_id, 'place', form.place.data) Tournament.update_by_id(tournament_id, 'online', bool(int(form.online.data))) Tournament.update_by_id(tournament_id, 'for_team_allowed', bool(int(form.for_team_allowed.data))) return return_ok_status('Все изменено.')
def process(self, form: FlaskForm): if not is_auth(): return return_bad_status("Вы не авторизованы!") user_id = session['id'] user = User.get_user_by_id(user_id) time = form.time.data time_to_live = form.time_to_live.data link = ''.join( random.choice(string.ascii_lowercase + string.digits) for _ in range(32)) tour = Tournament(form.name.data, form.description.data, user, time, time_to_live, form.place.data, link, bool(int(form.private.data)), bool(int(form.platform.data)), bool(int(form.online.data)), bool(int(form.for_team_allowed.data))) last = tour.add() return return_ok_status(last)
def get(self, tournament_id): tasks = Task.get_all_tasks_by_tournament_id(tournament_id) if tasks: return return_ok_status(TaskSchema(many=True).dump(tasks).data) return return_bad_status('bad')