Example #1
0
    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('Турнир успешно удален!')
Example #4
0
    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('Задача успешно удалена!')
Example #5
0
 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('Неверный код подтверждения!')
Example #6
0
 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.')
Example #7
0
 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.')
Example #8
0
 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('Все изменено.')
Example #13
0
    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')