Ejemplo n.º 1
0
def choose_video(room_id):
    user = anon_user()
    room = Room.query.get(room_id)
    cap = room.capitan_id
    if room:
        now = time = datetime.now(tz=None)
        sub_items = []
        real_user = cur_user()
        if real_user:
            subs = real_user.subscriptions
            for sub in subs:
                for video in sub.videos:
                    sub_items.append(video)
        video_pack = Video.get(need_geo=True)
        return render_template('choose_video.html',
                               user=cur_user(),
                               items=video_pack[0],
                               cap=cap,
                               room=room,
                               anon=user,
                               now=now,
                               sub_items=sub_items,
                               geo_items=json.dumps([
                                   video.serialize() for video in video_pack[1]
                               ]))
    else:
        return redirect(url_for('viewroom'))
Ejemplo n.º 2
0
def match(form, field):
    user = None
    if cur_user():
        user = cur_user()
    elif form.login.data is not '':
        user = User.get(login=form.login.data)
    if user and not user.check_pass(field.data):
        raise ValidationError("Неправильный пароль")
Ejemplo n.º 3
0
def views_story():
    videos = Video.get()
    items = []
    for video in videos:
        if cur_user() in video.viewers:
            items.append(video)

    return render_template('views_story.html', user=cur_user(), items=items)
Ejemplo n.º 4
0
def cabinet(usr, tab=0):
    """
    Отвечает за вывод страницы личного кабинета
    :return: Страница личного кабинета
    """

    video_list = Video.get()
    user = cur_user()
    cabinet_owner = User.get(login=usr)
    is_cabinet_settings_available = False

    if user == cabinet_owner:
        is_cabinet_settings_available = True

    items = cabinet_owner.videos

    form = UserProfileForm()
    form_acc = AccountSettingsForm()
    if request.method == 'POST':
        form_name = request.form['form-name']
        tab = 2
        if form_name == 'form':
            tab = 1
        if form_name == 'form' and form.validate():
            tab = 1
            user = cur_user()
            folder = str(user.id)
            if form.change_name.data:
                user.change_name(form.change_name.data)
            if form.channel_info.data:
                user.change_channel_info(form.channel_info.data)
            if 'avatar' in request.files:
                avatar_url = avatars.save(form.avatar.data, folder=folder)
                user.update_avatar(json.dumps({"url": avatar_url}))
            if 'background' in request.files:
                background_url = backgrounds.save(form.background.data,
                                                  folder=folder)
                user.update_background(json.dumps({"url": background_url}))
            return redirect(
                url_for("cabinet", usr=cabinet_owner.login, tab=tab))
        elif form_name == 'form_acc' and form_acc.validate():
            tab = 2
            user = cur_user()
            if form_acc.change_password.data:
                user.save(form_acc.change_password.data)
            return redirect(
                url_for("cabinet", usr=cabinet_owner.login, tab=tab))
    now = time = datetime.now(tz=None)
    return render_template('user/cabinet.html',
                           form=form,
                           form_acc=form_acc,
                           user=user,
                           items=items,
                           settings=is_cabinet_settings_available,
                           usr=cabinet_owner,
                           subscribed=(user in cabinet_owner.subscribers),
                           now=now,
                           tab=tab)
Ejemplo n.º 5
0
def feedback():
    user = cur_user()

    form = FeedbackForm()
    if form.validate_on_submit():
        email = form.feedback_email.data
        form.feedback_email.data = ''
        text = form.feedback_text.data
        form.feedback_text.data = ''
        feedback = Feedback(email, text)

        message = {
            "content": '',
            "embeds": [{
                "title": email,
                "description": text
            }]
        }
        message = json.dumps(message)
        headers = {'content-type': 'application/json'}
        requests.post(DISCORD_ADDRESS, data=message, headers=headers)

        return render_template('feedback.html',
                               user=user,
                               form=form,
                               CAPTCHA_KEY=CAPTCHA_PUBLIC_KEY,
                               message='Спасибо за ваше сообщение!')

    return render_template('feedback.html',
                           user=user,
                           form=form,
                           CAPTCHA_KEY=CAPTCHA_PUBLIC_KEY,
                           message='')
Ejemplo n.º 6
0
def viewroom():
    user = anon_user()
    join_form = JoinForm(prefix="Submit_Join")
    add_room_form = AddRoomForm(prefix="Submit_Add")
    user.action = ""
    db.session.commit()

    if request.method == 'POST':
        form_name = request.form['form-name']
        if form_name == 'form_add' and add_room_form.validate():
            name = add_room_form.token.data
            room = Room(name=name, capitan_id=user.id)
            db.session.add(room)
            db.session.commit()
            return redirect(url_for('room', room_id=room.id))
        elif form_name == 'form_join' and join_form.validate():
            room = Room.query.filter_by(name=str(join_form.token.data)).first()
            if room:
                return redirect(url_for('room', room_id=room.id))

    return render_template('viewroom.html',
                           user=cur_user(),
                           join_form=join_form,
                           rooms=Room.get()[::-1],
                           anon=user,
                           add_room_form=add_room_form)
Ejemplo n.º 7
0
def game():
    user = cur_user()
    if user is None:
        return redirect(url_for('auth'))
    if user.level != -1:
        return redirect(url_for('game_level', level=user.level))
    return render_template('game.html', user=user, title='Игра')
Ejemplo n.º 8
0
def login():
    form = LogForm()

    if form.validate_on_submit():
        session["Login"] = form.login.data
        return redirect(url_for("main"))

    return render_template('log.html', form=form, user=cur_user())
Ejemplo n.º 9
0
def search_results():
    presearch = ''
    if request.method == 'POST':
        presearch = request.form['presearch']
    user = cur_user()
    now = datetime.now(tz=None)
    return render_template('search_results.html',
                           user=user,
                           now=now,
                           presearch=presearch)
Ejemplo n.º 10
0
def registration():
    form = RegForm()

    if form.validate_on_submit():
        user = User(form.login.data, form.name.data)
        user.save(form.password.data)
        session["Login"] = user.login
        return redirect(url_for("main"))

    return render_template('registration.html', form=form, user=cur_user())
Ejemplo n.º 11
0
def upload():
    """
    Отвечает за вывод страницы загрузки и загрузку файлов
    :return: Страница загрузки
    """

    form = UploadVideoForm()

    if form.validate_on_submit():
        file = request.files['video']

        video = save_video(file, form.title.data)

        if not video:
            form.video.errors.append(
                ValidationError('Ошибка при загрузке видео'))
            return render_template('upload_video.html',
                                   form=form,
                                   user=cur_user(),
                                   formats=app.config['ALLOWED_EXTENSIONS'])

        data = JSONDecoder().decode(form.geotag_data.data)
        if data['needed']:
            for coords in data['coords']:
                geo_tag = Geotag(*coords)
                video.geotags.append(geo_tag)

        if form.tags.data:
            tags = form.tags.data.split(',')
            for tag_name in tags:
                video_tag = Tag.create_unique(text=tag_name)
                video.tags.append(video_tag)
        db.session.commit()
        return redirect(url_for("main"))

    if not form.geotag_data.data:
        form.geotag_data.data = dumps({'needed': False, 'coords': []})

    return render_template('upload_video.html',
                           form=form,
                           user=cur_user(),
                           formats=app.config['ALLOWED_EXTENSIONS'])
Ejemplo n.º 12
0
def videos_map():
    videos_with_coords = []
    user = cur_user()

    for video in Video.get():
        if video.geotags:
            videos_with_coords.append(video)

    return render_template('videos_map.html',
                           user=user,
                           videos=videos_with_coords)
Ejemplo n.º 13
0
def room(room_id):
    user = anon_user()
    room_form = RoomForm()
    room = Room.query.get(room_id)
    if room:
        room_map_url = str(room_id) + '_map'
        raw_user_rooms = RoomDeviceColorConnector.query.filter_by(anon=user)
        user_rooms = [rac.room for rac in raw_user_rooms]
        users = room.get_devices()

        if not (room in user_rooms) and (room.captain != user):
            color_id = len(users) + 1
            if color_id > 6:
                return redirect(url_for('viewroom'))
            col = Color.query.get(color_id)
            rac = RoomDeviceColorConnector(anon=user, room=room, color=col)
            db.session.add(rac)
            socketio.emit('update', len(users) + 2, broadcast=True)

        users = room.get_devices()

        for member in users:
            rac = RoomDeviceColorConnector.query.filter_by(
                room=room, anon=member).first()
            member.color = rac.color.color
            db.session.commit()

        image_form = UploadImageForm()
        if image_form.validate_on_submit():
            return image_loaded(request, room, user, users, image_form,
                                room_form)

        session_key = 'yt_video_' + str(room_id)
        yt_video = session.get(session_key)

        if user.id == room.capitan_id and yt_video is not None:
            yt_video = JSONDecoder().decode(yt_video)

        return render_template(
            'room.html',
            room=room,
            user=cur_user(),
            users=users,
            count=len(users) + 1,
            image_form=image_form,
            room_form=room_form,
            loaded=False,
            anon=user,
            room_map=room_map_url,
            map_ex=os.path.exists(basedir + '/images/' + str(room.id) +
                                  '_map.jpg'),
            yt_video=yt_video)
    else:
        return redirect(url_for('viewroom'))
Ejemplo n.º 14
0
def log():
    """
    Отвечает за вывод страницы входа и вход
    :return: Страница входа
    """

    form = LogForm()

    if form.validate_on_submit():
        session["Login"] = form.login_log.data
        return redirect(url_for("main"))

    return render_template('user/login.html', form=form, user=cur_user())
def save_video(video_file, title):
    ext = secure_filename(video_file.filename).split('.')[-1]
    video_hash = md5(video_file.read()).hexdigest()
    video_file.seek(0)

    video = Video(title)
    video.save(video_hash, cur_user())
    videos.save(video_file, folder=str(video.id), name='video.' + ext)
    video.add_path(join_path(app.config['VIDEO_SAVE_PATH'], video.id))

    try:
        prepare_video(video.id, ext)
    except OSError:
        video.delete_video()
        return None
    return video
Ejemplo n.º 16
0
def reg():
    """
    Отвечает за вывод страницы регистрации и регистрацию
    :return: Страница регистрации
    """

    form = RegForm()

    if form.validate_on_submit():
        user = User(form.login_reg.data)
        user.save(form.password_reg.data)
        session["Login"] = user.login
        return redirect(url_for("main"))

    return render_template('user/registration.html',
                           form=form,
                           user=cur_user())
Ejemplo n.º 17
0
def auth():
    auth_form = LoginForm()

    if auth_form.validate_on_submit():
        users_holder = read_auth_data()
        check = users_holder.check_logpas(auth_form.login.data,
                                          auth_form.password.data)
        if check == 1:
            auth_form.login.errors.append('Неизвестный логин')
        if check == 2:
            auth_form.password.errors.append('Неправильный пароль')
        if check == 0:
            session['login'] = auth_form.login.data
            return redirect(url_for('game'))
    return render_template('auth_page.html',
                           form=auth_form,
                           title="Вход",
                           user=cur_user())
Ejemplo n.º 18
0
def main():
    user = cur_user()
    sub_items = []
    if user:
        subs = user.subscriptions
        for sub in subs:
            for video in sub.videos:
                sub_items.append(video)

    now = time = datetime.now(tz=None)
    video_pack = Video.get(need_geo=True)
    return render_template('main.html',
                           user=user,
                           items=video_pack[0],
                           sub_items=sub_items,
                           now=now,
                           geo_items=json.dumps(
                               [video.serialize() for video in video_pack[1]]))
Ejemplo n.º 19
0
def choose_youtube_video(room_id):
    user = anon_user()
    room = Room.query.get(room_id)
    cap = room.capitan_id
    if request.method == 'POST':
        video_js = dumps({
            'preview': request.form['preview'],
            'id': request.form['id']
        })

        session['yt_video_' + str(room_id)] = video_js

        room.yt_video_id = request.form['id']
        db.session.commit()

        return 'OK'
    if user.id == cap:
        return render_template('choose_youtube.html',
                               room_id=room_id,
                               user=cur_user())
    else:
        return abort(403)
Ejemplo n.º 20
0
def game_level(level):
    max_level = 6
    user = cur_user()
    if user is None:
        return redirect(url_for('auth'))
    if user.level < level and user.level != -1:
        return redirect(url_for('game_level', level=user.level))
    if level > max_level or level < 1:
        return redirect(url_for('game_level', level=user.level))

    if level == max_level:
        return render_template('the_end.html', title='Конец', user=user)
    if level == 1:
        return level_1(user)
    if level == 2:
        return level_2(user)
    if level == 3:
        return level_3(user)
    if level == 4:
        return level_4(user)

    return render_template('game_' + str(level) + '.html',
                           title='Уровень ' + str(level),
                           user=user)
Ejemplo n.º 21
0
def play(vid):
    video = Video.get(video_id=vid)
    if not video:
        abort = Aborter()
        return abort(404)

    user = cur_user()
    usr = User.get(login=video.user.login)

    if user and user not in video.viewers:
        video.add_viewer(user)

    likened = 0
    if user in video.likes:
        likened = 1
    if user in video.dislikes:
        likened = -1
    return render_template('video_page.html',
                           user=user,
                           vid=vid,
                           video=video,
                           lkd=likened,
                           usr=usr,
                           subscribed=(user in usr.subscribers))
Ejemplo n.º 22
0
def main():
    return render_template('main.html', user=cur_user())
Ejemplo n.º 23
0
def profile():
    user = cur_user()
    if user:
        return render_template('user.html', user=user)
    else:
        return redirect(url_for("login"))
Ejemplo n.º 24
0
def internal_server_error(e):
    return render_template('500.html', user=cur_user()), 500
Ejemplo n.º 25
0
def page_not_found(e):
    return render_template('404.html', user=cur_user()), 404
Ejemplo n.º 26
0
def forbidden(e):
    return render_template('403.html', user=cur_user()), 403
Ejemplo n.º 27
0
def subs_s():
    user = cur_user()
    subs = user.subscriptions
    return render_template('subs.html', user=user, subs=subs)