From 08b04eba7297bfce41f47d2841a88164c48e6f85 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Wed, 15 Nov 2023 23:58:36 +0300 Subject: [PATCH 1/2] Forgot to add data.py in commit --- db/data.py | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/db/data.py b/db/data.py index 3f4964e..ddbf6b1 100644 --- a/db/data.py +++ b/db/data.py @@ -9,59 +9,70 @@ from sqlalchemy import Column, DateTime, ForeignKey, create_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship load_dotenv(join(dirname(__file__), '..', '.env')) -DATABASE_PASSWORD=os.getenv('DATABASE_PASSWORD') -DATABASE_NAME=os.getenv('DATABASE_NAME') -DATABASE_USER=os.getenv('DATABASE_USER') -DATABASE_PORT=os.getenv('DATABASE_PORT') -DATABASE_HOST=os.getenv('DATABASE_HOST') -engine = create_engine(f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}", echo=True) +DATABASE_PASSWORD = os.getenv('DATABASE_PASSWORD') +DATABASE_NAME = os.getenv('DATABASE_NAME') +DATABASE_USER = os.getenv('DATABASE_USER') +DATABASE_PORT = os.getenv('DATABASE_PORT') +DATABASE_HOST = os.getenv('DATABASE_HOST') +engine = create_engine( + f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}", echo=True) class Base(DeclarativeBase): pass + class User(Base): __tablename__ = 'user' - + id: Mapped[int] = mapped_column(primary_key=True) user_name: Mapped[Optional[str]] - - admin: Mapped['Admin'] = relationship(back_populates='user', cascade='all, delete-orphan') - + + admin: Mapped['Admin'] = relationship( + back_populates='user', cascade='all, delete-orphan') + def __repr__(self) -> str: return f'User(id={self.id!r}, user_name={self.user_name!r})' def __str__(self) -> str: return f'User(id={self.id!r}, user_name={self.user_name!r})' - + + class Admin(Base): __tablename__ = 'admin' - - user_id: Mapped[int] = mapped_column(ForeignKey('user.id'), primary_key=True) + + user_id: Mapped[int] = mapped_column( + ForeignKey('user.id'), primary_key=True) user: Mapped['User'] = relationship(back_populates='admin') - posts: Mapped[List['Post']] = relationship(back_populates='user', cascade='all, delete') + posts: Mapped[List['Post']] = relationship( + back_populates='user', cascade='all, delete') + class Post(Base): __tablename__ = 'post' - + uuid: Mapped[UUID] = mapped_column(primary_key=True) posted: Mapped[bool] = mapped_column(default=False) from_user_id: Mapped[int] = mapped_column(ForeignKey('admin.user_id')) user: Mapped['Admin'] = relationship(back_populates='posts') text: Mapped[str] media_group_id: Mapped[str] - images: Mapped[List['Image']] = relationship(back_populates='post', cascade='all, delete') + images: Mapped[List['Image']] = relationship( + back_populates='post', cascade='all, delete') timestamp = Column(DateTime, default=datetime.utcnow) - + def __repr__(self) -> str: return f"UUID: {self.uuid}. From_user_id: {self.from_user_id}. media group id: {self.media_group_id}. Text: {self.text}" + class Image(Base): __tablename__ = 'photo' message_id: Mapped[int] = mapped_column(primary_key=True) post: Mapped['Post'] = relationship(back_populates='images') post_id: Mapped[int] = mapped_column(ForeignKey('post.uuid')) file_id: Mapped[str] - + has_spoiler: Mapped[bool] + + if __name__ == '__main__': - Base.metadata.create_all(engine) \ No newline at end of file + Base.metadata.create_all(engine) From 4296eb0314a4e0b9bb0b932b8aac3ebd8c7bd9fb Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Wed, 15 Nov 2023 23:58:50 +0300 Subject: [PATCH 2/2] Added has_spoiler to images without spoiler --- handlers/admin_commands.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handlers/admin_commands.py b/handlers/admin_commands.py index f14546e..cfbf242 100644 --- a/handlers/admin_commands.py +++ b/handlers/admin_commands.py @@ -46,7 +46,7 @@ class Admin_commands: Post.media_group_id == message.media_group_id).first() if post: photo = Image(message_id=message.message_id, - post=post, file_id=message.photo[-1].file_id, has_spoiler=message.has_media_spoiler) + post=post, file_id=message.photo[-1].file_id, has_spoiler=bool(message.has_media_spoiler)) session.add(photo) session.commit() else: @@ -201,7 +201,7 @@ class Admin_commands: Post.posted == False).order_by(Post.timestamp.asc()).first() if post: images = MediaGroupBuilder(caption=post.text) - for image in post.images: + for image in post.images[::-1]: images.add_photo( image.file_id, has_spoiler=image.has_spoiler) await message.answer_media_group(images.build()) @@ -218,7 +218,7 @@ class Admin_commands: post_user = session.get(Admin, message.from_user.id) post.user = post_user photo = Image(message_id=message.message_id, - post=post, file_id=message.photo[-1].file_id, has_spoiler=message.has_media_spoiler) + post=post, file_id=message.photo[-1].file_id, has_spoiler=bool(message.has_media_spoiler)) session.add(photo) session.add(post) session.commit()