def get_user_level_by_post_count(post_count): # level = "Эксперт" если у пользователя более 4-х постов if post_count >= 4: level_id = session.query( WritersLevel.id).filter_by(level_name="Эксперт").first()[0] return level_id # level = "Бывалый" если у пользователя от 2-х до 4-х постов включительно elif 2 <= post_count < 4: level_id = session.query( WritersLevel.id).filter_by(level_name="Бывалый").first()[0] return level_id else: return 0
def create_tag(tag_name): tag = Tag(tag_name=tag_name) session.add(tag) print(f"Тэг '{tag}' добавлен.") session.commit() tag_id = session.query(Tag.id).filter_by(tag_name=tag_name).first()[0] return tag_id
def find_tag(tag_name_for_find): query_result = session.query(Tag).filter_by( tag_name=tag_name_for_find).first() if not query_result: print(f"Тэг '{tag_name_for_find}' отсутствует в таблице тэгов!") else: print(f"Тэг '{tag_name_for_find}' существует в таблице тэгов!")
def create_user(nickname, fullname): user = User(nickname=nickname, fullname=fullname) session.add(user) print("Создан новый пользователь:", nickname, fullname) session.commit() user_id = session.query(User.id).filter_by(nickname=nickname, fullname=fullname).first()[0] return user_id
def create_writers_level(level_name): writers_level = WritersLevel(level_name=level_name) session.add(writers_level) print(f"Добавлен уровень писателя '{writers_level}'.") session.commit() writers_level_id = session.query( WritersLevel.id).filter_by(level_name=level_name) return writers_level_id
def all_user_posts_with_2tags(user_nickname, tag1, tag2): user_id = get_user_id_by_nickname(nickname=user_nickname) posts_items = session.query(Post.post_title, Post.post_text).join(Post.tags).join(Post.user). \ filter(or_(Tag.tag_name == tag1, Tag.tag_name == tag2)). \ filter(User.id == user_id).distinct() print( f"Посты пользователя '{user_nickname}' с тэгами '{tag1}' и '{tag2}': ") for post_title, post_text in posts_items: print(f"Пост '{post_title}':") print(post_text)
def get_post_id_by_post_title(post_title): post_id = session.query( Post.id).filter_by(post_title=post_title).first()[0] return post_id
def get_user_info_by_id(user_id): user_info = session.query(User).filter_by(id=user_id).first() return user_info.fullname, user_info.nickname, user_info.level_id, user_info.date_registration, user_info.active
def get_user_id_by_nickname(nickname): user_id = session.query(User.id).filter_by(nickname=nickname).first()[0] return user_id
def update_user_level(user_id, new_user_level): session.query(User).filter_by(id=user_id).update( {User.level_id: new_user_level}) session.commit() print(f"Обновлен уровень писателя у пользователя с id={user_id}")
def get_post_count_by_user(user_id): user_posts_list = session.query(Post).filter_by(user_id=user_id).all() post_count = len(user_posts_list) return post_count
def get_current_user_level(user_id): user_level = session.query(User.level_id).filter_by(id=user_id).first()[0] return user_level
def get_writers_level_id_by_level_name(level_name): level_id = session.query( WritersLevel.id).filter_by(level_name=level_name).first()[0] return level_id
def select_all_users(): user_list = session.query(User).all() print("Список пользователей:") for user in user_list: print("ФИО: ", user.fullname, ", nickname:", user.nickname, "уровень писателя:", user.level_id)