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'))
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("Неправильный пароль")
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)
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)
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='')
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)
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='Игра')
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())
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)
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())
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'])
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)
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'))
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
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())
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())
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]]))
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)
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)
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))
def main(): return render_template('main.html', user=cur_user())
def profile(): user = cur_user() if user: return render_template('user.html', user=user) else: return redirect(url_for("login"))
def internal_server_error(e): return render_template('500.html', user=cur_user()), 500
def page_not_found(e): return render_template('404.html', user=cur_user()), 404
def forbidden(e): return render_template('403.html', user=cur_user()), 403
def subs_s(): user = cur_user() subs = user.subscriptions return render_template('subs.html', user=user, subs=subs)