def Message_not_found(message_id): if not str(message_id).isdigit(): abort(404, error=f"{message_id} not int") db_sess = db_session.create_session() message = db_sess.query(Message).get(message_id) if not message: abort(404, error=f"Message {message_id} not found")
def delete(self, message_id): Message_not_found(message_id) db_sess = db_session.create_session() message = db_sess.query(Message).get(message_id).first() db_sess.delete(message) db_sess.commit() return jsonify({'success': 'OK'})
def Discussion_not_found(discussion_id): if not str(discussion_id).isdigit(): abort(404, error=f"{discussion_id} not int") db_sess = db_session.create_session() discussion = db_sess.query(Discussion).get(discussion_id) if not discussion: abort(404, error=f"Discussion {discussion_id} not found")
def post(self): if not request.json: return jsonify({'error': 'Empty request'}) args = parser_ms.parse_args() db_sess = db_session.create_session() a = ['user_id', 'content', 'answers_to_id', 'discussion_id'] for i in a: if i not in request.json: return jsonify({'error': 'Bad info'}) elif len(request.json.values()) != len(a): return jsonify({'error': 'Bad info'}) if not db_sess.query(Discussion).filter( request.json['discussion_id'] == Discussion.id).first(): return jsonify({'error': 'Discussion not found'}) if not db_sess.query(User).filter( request.json['user_id'] == User.id).first(): return jsonify({'error': 'user not found'}) if not db_sess.query(User).filter( request.json['answers_to_id'] == User.id).first(): return jsonify({'error': 'responds to not found'}) message = Message( user_id=args['user_id'], content=args['content'], answers_to_id=args['answers_to_id'], discussion_id=args['discussion_id'], ) db_sess.add(message) db_sess.commit() return jsonify({'success': 'OK'})
def get(self): db_sess = db_session.create_session() forums = db_sess.query(Forum).all() return jsonify({ 'forum': [item.to_dict(only=('title', 'creator_id')) for item in forums] })
def get(self, forum_id): Forum_not_found(forum_id) db_sess = db_session.create_session() forum = db_sess.query(Forum).get(forum_id) if not forum or forum is None: abort(404, error=f"Forum {forum_id} not found") return jsonify({'forum': forum.to_dict(only=('title', 'creator_id'))})
def User_not_found(user_id): if not str(user_id).isdigit(): abort(404, error=f"{user_id} not int") db_sess = db_session.create_session() user = db_sess.query(User).get(user_id) if not user: abort(404, error=f"User {user_id} not found")
def private_page(): s = db_session.create_session() s.add(current_user) s.merge(current_user) resp = render_template('private.html', title='Личный кабинет', len=len) s.close() return resp
def post(self): if not request.json: return jsonify({'error': 'Empty request'}) db_sess = db_session.create_session() a = ['uniq_name', 'lvl', 'is_banned', 'password'] for i in a: if i not in request.json: return jsonify({'error': 'Bad info'}) if db_sess.query(User).filter( request.json['uniq_name'] == User.uniq_name).first(): return jsonify( {'error': 'Пользователь с таким uniq_name уже есть'}) if db_sess.query(User).filter( request.json['vk_id'] == User.vk_id).first(): return jsonify({'error': 'Пользователь с таким vk_id уже есть'}) if request.json['vk_id'].isdigit(): vk_id = requests.get(f'https://vk.com/id{request.json["vk_id"]}') else: vk_id = requests.get(f'https://vk.com/{request.json["vk_id"]}') if not vk_id: return jsonify({'error': 'Пользователь с таким vk_id нет'}) password = generate_password_hash(request.json['password']) request.json['password'] = password args = parser_us.parse_args() user = User(uniq_name=args['uniq_name'], name=args['name'], about=args['about'], vk_id=args['vk_id'], lvl=args['lvl'], is_banned=args['is_banned'], hashed_password=args['password']) db_sess.add(user) db_sess.commit() return jsonify({'success': 'OK'})
def Forum_not_found(forum_id): if not str(forum_id).isdigit(): abort(404, error=f"{forum_id} not int") db_sess = db_session.create_session() forum = db_sess.query(User).get(forum_id) if not forum or forum is None: abort(404, error=f"Forum {forum_id} not found")
def login(): form = LoginForm() if form.validate_on_submit(): auth_index = form.user_auth_index.data if auth_index.startswith('@') and len(auth_index) == 1: render_template('login.html', title='Авторизация', form=form, message='VK_id пуст') db_sess = db_session.create_session() if auth_index.startswith('@'): user = db_sess.query(User).filter( User.vk_id == auth_index[1:]).first() else: user = db_sess.query(User).filter( User.uniq_name == auth_index).first() if user and user.check_password(form.password.data): login_user(user, remember=form.remember_me.data) return redirect("/") return render_template( 'login.html', title='Авторизация', form=form, message='Пользователя с таким логином не существует') return render_template('login.html', title='Авторизация', form=form)
def create_task_page(group_id): s = db_session.create_session() group = s.query(Group).filter(Group.id == group_id).first() if not group: s.close() abort(404) form = forms.CreateTaskForm() form.performer_id.choices = [(user.id, f'{user.name} (id: {user.id})') for user in group.users if user.id != current_user.id] if form.validate_on_submit(): task = Task(name=form.name.data, author_id=current_user.id, performer_id=form.performer_id.data, group_id=group_id, priority=form.priority.data, description=form.description.data) s.add(task) s.commit() s.close() return redirect(f'/group/{group_id}') resp = render_template('private_create_edit_task.html', title='Создание задачи', group=group, form=form, edit=False) s.close() return resp
def register(): form = RegisterForm() if form.validate_on_submit(): if form.password.data != form.password_again.data: return render_template('register.html', title='Регистрация', form=form, message="Пароли не совпадают") if len(form.password.data) < 5: return render_template( 'register.html', title='Регистрация', form=form, message="Пароль должен содержать 5 и более символов") if len(form.uniq_name.data) < 3: return render_template( 'register.html', title='Регистрация', form=form, message="Ник должен содержать 3 и более символов") db_sess = db_session.create_session() if db_sess.query(User).filter( User.uniq_name == form.uniq_name.data).first(): return render_template('register.html', title='Регистрация', form=form, message="Такой пользователь уже есть") if form.vk_id.data: if db_sess.query(User).filter( User.vk_id == form.vk_id.data).first(): return render_template('register.html', title='Регистрация', form=form, message="Такой vk_id уже есть") if form.vk_id.data.isdigit(): vk_id = requests.get(f'https://vk.com/id{form.vk_id.data}') else: vk_id = requests.get(f'https://vk.com/{form.vk_id.data}') if not vk_id: return render_template('register.html', title='Регистрация', form=form, message="Такой vk_id не существует") user = User() user.uniq_name = form.uniq_name.data user.about = form.about.data user.vk_id = form.vk_id.data if form.vk_id.data else None user.name = form.name.data if form.name.data else form.uniq_name.data user.set_password(form.password.data) user.profile_picture = user.conver_to_binary( fr'{os.getcwd()}\static\img\default_image.jpg') db_sess.add(user) db_sess.commit() login_user(user, remember=form.remember_me.data) return redirect('/register/load_photo') return render_template('register.html', title='Reg', form=form)
def get(self, discussion_id): Discussion_not_found(discussion_id) db_sess = db_session.create_session() discussion = db_sess.query(Discussion).get(discussion_id) return jsonify({ 'discussion': discussion.to_dict(only=('title', 'forum_id', 'creator_id')) })
def delete(self, discussion_id): Discussion_not_found(discussion_id) db_sess = db_session.create_session() discussion = db_sess.query(Discussion).get(discussion_id) for j in db_sess.query(Discussion).filter(discussion.messages).all(): db_sess.delete(j) db_sess.delete(discussion) db_sess.commit() return jsonify({'success': 'OK'})
def get(self, user_id): User_not_found(user_id) db_sess = db_session.create_session() users = db_sess.query(User).get(user_id) return jsonify({ 'user': users.to_dict(only=('name', 'about', 'lvl', 'is_banned')) })
def get(self): db_sess = db_session.create_session() discussions = db_sess.query(Discussion).all() return jsonify({ 'discussion': [ item.to_dict(only=('title', 'creator_id')) for item in discussions ] })
def get(self): db_sess = db_session.create_session() messages = db_sess.query(Message).all() return jsonify({ 'message': [ item.to_dict(only=('surname', 'name', 'age', 'position')) for item in messages ] })
def get(self): db_sess = db_session.create_session() users = db_sess.query(User).all() return jsonify({ 'user': [ item.to_dict(only=('name', 'about', 'lvl', 'is_banned')) for item in users ] })
def get(self, message_id): Message_not_found(message_id) db_sess = db_session.create_session() message = db_sess.query(Message).get(message_id) return jsonify({ 'message': message.to_dict(only=('user_id', 'content', 'answers_to_id', 'discussion_id')) })
def delete(self, forum_id): Forum_not_found(forum_id) db_sess = db_session.create_session() forum = db_sess.query(Forum).get(forum_id) if not forum or forum is None: abort(404, error=f"Forum {forum_id} not found") for j in db_sess.query(Forum).filter(forum.discussions).all(): for z in j.messages: db_sess.delete(z) db_sess.delete(j) db_sess.delete(forum) db_sess.commit() return jsonify({'success': 'OK'})
def group_page(group_id): s = db_session.create_session() group = s.query(Group).filter(Group.id == group_id).first() if not group: s.close() abort(404) resp = render_template('private_group.html', title=group.name, group=group, len=len, STATUS_TO_STR=forms.STATUS_TO_STR) s.close() return resp
def task_page(group_id, task_id): s = db_session.create_session() group = s.query(Group).filter(Group.id == group_id).first() if not group or task_id not in set(task.id for task in group.tasks): s.close() abort(404) task = s.query(Task).filter(Task.id == task_id).first() resp = render_template('private_task.html', title=f'Задача: {task.name}', group=group, task=task, STATUS_TO_STR=forms.STATUS_TO_STR) s.close() return resp
def delete(self, user_id): User_not_found(user_id) db_sess = db_session.create_session() user = db_sess.query(User).get(user_id) for i in db_sess.query(User).filter(User.forums).all(): for j in i.forums: for k in j.discussions: for p in k.messages: db_sess.delete(p) db_sess.delete(k) db_sess.delete(j) db_sess.delete(user) db_sess.commit() return jsonify({'success': 'OK'})
def post(self): if not request.json: return jsonify({'error': 'Empty request'}) args = parser_fr.parse_args() db_sess = db_session.create_session() if not db_sess.query(User).filter( request.json['creator_id'] == User.id).first(): return jsonify({'error': 'user not found'}) forum = Forum( title=args['title'], creator_id=args['creator_id'], ) db_sess.add(forum) db_sess.commit() return jsonify({'success': 'OK'})
def join_group_page(): form = forms.JoinGroupForm() s = db_session.create_session() if form.validate_on_submit(): s.add(current_user) s.merge(current_user) if not form.id.data.isdigit(): resp = render_template('private_join_group.html', title='Присоединиться к группе', form=form, message='ID должен быть целым числом!') s.close() return resp group = s.query(Group).filter(Group.id == int(form.id.data)).first() if not group: resp = render_template('private_join_group.html', title='Присоединиться к группе', form=form, message='Такой группы не существует!') s.close() return resp if len(group.users) == group.max_members: resp = render_template( 'private_join_group.html', title='Присоединиться к группе', form=form, message= 'В группе достигнуто максимальное количество участников!') s.close() return resp if current_user in group.users: resp = render_template('private_join_group.html', title='Присоединиться к группе', form=form, message='Вы уже состоите в этой группе!') s.close() return resp group.users.append(current_user) s.merge(group) s.commit() s.close() return redirect('/private') resp = render_template('private_join_group.html', title='Присоединиться к группе', form=form) s.close() return resp
def finish_task(group_id, task_id): s = db_session.create_session() group = s.query(Group).filter(Group.id == group_id).first() if not group or task_id not in set(task.id for task in group.tasks): s.close() abort(404) task = s.query(Task).filter(Task.id == task_id).first() if current_user.id != task.performer_id: s.close() abort(403) task.status = 2 s.merge(task) s.commit() s.close() return redirect(f'/group/{group_id}')
def create_group_page(): form = forms.CreateGroupForm() s = db_session.create_session() if form.validate_on_submit(): group = Group(form.name.data, form.max_members.data, current_user.id) group.users.append(current_user) s.merge(group) s.commit() resp = redirect('/private') s.close() return resp s.add(current_user) s.merge(current_user) resp = render_template('private_create_group.html', title='Создание группы', form=form) s.close() return resp
def load(): form = PhotoLoader() if form.submit.data: if form.image.data is not None: db_sess = db_session.create_session() f = form.image.data filename = secure_filename(f.filename) # os.remove(f'/static/img/{current_user.profile_picture_name}', dir_fd=None) надо как то удалить f.save(rf'{os.getcwd()}\static\img\{filename}') if current_user.profile_picture_name != 'default_image.jpg': os.remove(f'static/img/{current_user.profile_picture_name}') current_user.profile_picture_name = filename current_user.profile_picture = current_user.conver_to_binary( rf'{os.getcwd()}\static\img\{filename}') db_sess.merge(current_user) db_sess.commit() return render_template('LoadPhoto.html', title='Load Photo', form=form) return render_template('LoadPhoto.html', title='Load Photo', form=form)
def index(): forum_form = ForumForm() discussion_form = DiscussionForm() db_sess = db_session.create_session() if request.method == 'POST': if request.form.get('delete_discussion'): delete_discussion(request.form['delete_discussion'], db_sess) elif request.form.get('delete_forum'): delete_forum(request.form['delete_forum'], db_sess) if forum_form.forum_submit.data and forum_form.validate(): forum = Forum(title=forum_form.forum_title.data, creator_id=current_user.id) db_sess.add(forum) db_sess.commit() forum_form.forum_title.data = None if discussion_form.discussion_submit.data and discussion_form.validate(): discussion = Discussion(title=discussion_form.discussion_title.data, forum_id=request.form['forum_id'], creator_id=current_user.id) db_sess.add(discussion) db_sess.commit() message = Message(user_id=current_user.id, content=discussion_form.message.data, discussion_id=discussion.id) db_sess.add(message) db_sess.commit() discussion_form.discussion_title.data = None discussion_form.message.data = None return redirect(f'/discussion/{discussion.id}') forums = db_sess.query(Forum).all() forums_and_discussions = {forum: forum.discussions for forum in forums} return render_template("index.html", slovar=forums_and_discussions, discussion_form=discussion_form, forum_form=forum_form)