From 9718058151001167e19add1146672936fba4d546 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 22:41:00 +0300 Subject: [PATCH 01/12] Document source --- print_service/models/__init__.py | 2 +- print_service/routes/file.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/print_service/models/__init__.py b/print_service/models/__init__.py index 0d6538b..186edb1 100644 --- a/print_service/models/__init__.py +++ b/print_service/models/__init__.py @@ -42,6 +42,7 @@ class File(Model): DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow ) number_of_pages: Mapped[int] = Column(Integer) + source: Mapped[str] = Column(String) owner: Mapped[UnionMember] = relationship('UnionMember', back_populates='files') print_facts: Mapped[list[PrintFact]] = relationship('PrintFact', back_populates='file') @@ -88,5 +89,4 @@ class PrintFact(Model): owner: Mapped[UnionMember] = relationship('UnionMember', back_populates='print_facts') file: Mapped[File] = relationship('File', back_populates='print_facts') - sheets_used: Mapped[int] = Column(Integer) diff --git a/print_service/routes/file.py b/print_service/routes/file.py index 3139837..6a20469 100644 --- a/print_service/routes/file.py +++ b/print_service/routes/file.py @@ -71,6 +71,7 @@ class SendInput(BaseModel): description='Название файла', example='filename.pdf', ) + source: str options: PrintOptions = PrintOptions() @@ -128,7 +129,7 @@ async def send(inp: SendInput, settings: Settings = Depends(get_settings)): except RuntimeError: raise PINGenerateError() filename = generate_filename(inp.filename) - file_model = FileModel(pin=pin, file=filename) + file_model = FileModel(pin=pin, file=filename, source=inp.source) file_model.owner = user file_model.option_copies = inp.options.copies file_model.option_pages = inp.options.pages From c8f03632a661743f3c0216e751fa7fb33d30a4d0 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 22:57:45 +0300 Subject: [PATCH 02/12] Document source --- .../a68c6bb2972c_add_document_source.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 migrations/versions/a68c6bb2972c_add_document_source.py diff --git a/migrations/versions/a68c6bb2972c_add_document_source.py b/migrations/versions/a68c6bb2972c_add_document_source.py new file mode 100644 index 0000000..65da73d --- /dev/null +++ b/migrations/versions/a68c6bb2972c_add_document_source.py @@ -0,0 +1,28 @@ +"""add_document_source + +Revision ID: a68c6bb2972c +Revises: d63e9f7661dd +Create Date: 2023-07-26 22:56:57.273888 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'a68c6bb2972c' +down_revision = 'd63e9f7661dd' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('file', sa.Column('source', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('file', 'source') + # ### end Alembic commands ### From 2eab1d3515b314352053498fca92e5ba875de6b6 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 22:58:38 +0300 Subject: [PATCH 03/12] Document source --- migrations/versions/a68c6bb2972c_add_document_source.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/versions/a68c6bb2972c_add_document_source.py b/migrations/versions/a68c6bb2972c_add_document_source.py index 65da73d..49fe035 100644 --- a/migrations/versions/a68c6bb2972c_add_document_source.py +++ b/migrations/versions/a68c6bb2972c_add_document_source.py @@ -5,8 +5,8 @@ Create Date: 2023-07-26 22:56:57.273888 """ -from alembic import op import sqlalchemy as sa +from alembic import op # revision identifiers, used by Alembic. From 5367db8d9b7f258192d5b5bf4b93f79cdcc5f5b9 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 23:23:15 +0300 Subject: [PATCH 04/12] Document source --- .../versions/44494b133481_print_options.py | 5 +++- .../a68c6bb2972c_add_document_source.py | 28 ------------------- print_service/models/__init__.py | 2 +- print_service/routes/file.py | 2 +- 4 files changed, 6 insertions(+), 31 deletions(-) delete mode 100644 migrations/versions/a68c6bb2972c_add_document_source.py diff --git a/migrations/versions/44494b133481_print_options.py b/migrations/versions/44494b133481_print_options.py index b809a92..ca3f580 100644 --- a/migrations/versions/44494b133481_print_options.py +++ b/migrations/versions/44494b133481_print_options.py @@ -20,9 +20,12 @@ def upgrade(): op.add_column('file', sa.Column('option_pages', sa.String(), nullable=True)) op.add_column('file', sa.Column('option_copies', sa.Integer(), nullable=True)) op.add_column('file', sa.Column('option_two_sided', sa.Boolean(), nullable=True)) - + op.add_column('file', sa.Column('source', sa.String(), nullable=True)) + op.execute(f'UPDATE "file" SET source = "unknown"') + op.alter_column('file', 'source', nullable=False) def downgrade(): op.drop_column('file', 'option_two_sided') op.drop_column('file', 'option_copies') op.drop_column('file', 'option_pages') + op.drop_column('file', 'source') \ No newline at end of file diff --git a/migrations/versions/a68c6bb2972c_add_document_source.py b/migrations/versions/a68c6bb2972c_add_document_source.py deleted file mode 100644 index 49fe035..0000000 --- a/migrations/versions/a68c6bb2972c_add_document_source.py +++ /dev/null @@ -1,28 +0,0 @@ -"""add_document_source - -Revision ID: a68c6bb2972c -Revises: d63e9f7661dd -Create Date: 2023-07-26 22:56:57.273888 - -""" -import sqlalchemy as sa -from alembic import op - - -# revision identifiers, used by Alembic. -revision = 'a68c6bb2972c' -down_revision = 'd63e9f7661dd' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('file', sa.Column('source', sa.String(), nullable=True)) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('file', 'source') - # ### end Alembic commands ### diff --git a/print_service/models/__init__.py b/print_service/models/__init__.py index 186edb1..abf9b0e 100644 --- a/print_service/models/__init__.py +++ b/print_service/models/__init__.py @@ -42,7 +42,7 @@ class File(Model): DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow ) number_of_pages: Mapped[int] = Column(Integer) - source: Mapped[str] = Column(String) + source: Mapped[str] = Column(String, default='unknown', nullable=True) owner: Mapped[UnionMember] = relationship('UnionMember', back_populates='files') print_facts: Mapped[list[PrintFact]] = relationship('PrintFact', back_populates='file') diff --git a/print_service/routes/file.py b/print_service/routes/file.py index 6a20469..d8c9b1f 100644 --- a/print_service/routes/file.py +++ b/print_service/routes/file.py @@ -71,7 +71,7 @@ class SendInput(BaseModel): description='Название файла', example='filename.pdf', ) - source: str + source: str | None = None options: PrintOptions = PrintOptions() From 916361068816878299a6998c4a0386cb2a004ad1 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 23:24:57 +0300 Subject: [PATCH 05/12] Document source. Linting --- migrations/versions/44494b133481_print_options.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/migrations/versions/44494b133481_print_options.py b/migrations/versions/44494b133481_print_options.py index ca3f580..0216364 100644 --- a/migrations/versions/44494b133481_print_options.py +++ b/migrations/versions/44494b133481_print_options.py @@ -24,8 +24,9 @@ def upgrade(): op.execute(f'UPDATE "file" SET source = "unknown"') op.alter_column('file', 'source', nullable=False) + def downgrade(): op.drop_column('file', 'option_two_sided') op.drop_column('file', 'option_copies') op.drop_column('file', 'option_pages') - op.drop_column('file', 'source') \ No newline at end of file + op.drop_column('file', 'source') From e3b276a96e3d4aacea0e372650144e02088f44bb Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 23:36:07 +0300 Subject: [PATCH 06/12] Document source. Linting --- migrations/versions/44494b133481_print_options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/versions/44494b133481_print_options.py b/migrations/versions/44494b133481_print_options.py index 0216364..1412437 100644 --- a/migrations/versions/44494b133481_print_options.py +++ b/migrations/versions/44494b133481_print_options.py @@ -21,7 +21,7 @@ def upgrade(): op.add_column('file', sa.Column('option_copies', sa.Integer(), nullable=True)) op.add_column('file', sa.Column('option_two_sided', sa.Boolean(), nullable=True)) op.add_column('file', sa.Column('source', sa.String(), nullable=True)) - op.execute(f'UPDATE "file" SET source = "unknown"') + op.execute(f'UPDATE "file" SET source = unknown') op.alter_column('file', 'source', nullable=False) From 9d5d7784e0daa2b38ede3bb768620c62e095e139 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Wed, 26 Jul 2023 23:42:24 +0300 Subject: [PATCH 07/12] Document source. Linting --- migrations/versions/44494b133481_print_options.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/migrations/versions/44494b133481_print_options.py b/migrations/versions/44494b133481_print_options.py index 1412437..80c53fe 100644 --- a/migrations/versions/44494b133481_print_options.py +++ b/migrations/versions/44494b133481_print_options.py @@ -21,8 +21,6 @@ def upgrade(): op.add_column('file', sa.Column('option_copies', sa.Integer(), nullable=True)) op.add_column('file', sa.Column('option_two_sided', sa.Boolean(), nullable=True)) op.add_column('file', sa.Column('source', sa.String(), nullable=True)) - op.execute(f'UPDATE "file" SET source = unknown') - op.alter_column('file', 'source', nullable=False) def downgrade(): From e48d1145387d3eed98c81e6006810987f90ecc05 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Thu, 27 Jul 2023 00:04:06 +0300 Subject: [PATCH 08/12] Document source. Linting --- migrations/versions/44494b133481_print_options.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/migrations/versions/44494b133481_print_options.py b/migrations/versions/44494b133481_print_options.py index 80c53fe..b809a92 100644 --- a/migrations/versions/44494b133481_print_options.py +++ b/migrations/versions/44494b133481_print_options.py @@ -20,11 +20,9 @@ def upgrade(): op.add_column('file', sa.Column('option_pages', sa.String(), nullable=True)) op.add_column('file', sa.Column('option_copies', sa.Integer(), nullable=True)) op.add_column('file', sa.Column('option_two_sided', sa.Boolean(), nullable=True)) - op.add_column('file', sa.Column('source', sa.String(), nullable=True)) def downgrade(): op.drop_column('file', 'option_two_sided') op.drop_column('file', 'option_copies') op.drop_column('file', 'option_pages') - op.drop_column('file', 'source') From deb82dbf578d01c12d37611245ee2ab200ea79c1 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Thu, 27 Jul 2023 00:05:22 +0300 Subject: [PATCH 09/12] Document source. Linting --- .../a68c6bb2972c_add_document_source.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 migrations/versions/a68c6bb2972c_add_document_source.py diff --git a/migrations/versions/a68c6bb2972c_add_document_source.py b/migrations/versions/a68c6bb2972c_add_document_source.py new file mode 100644 index 0000000..49fe035 --- /dev/null +++ b/migrations/versions/a68c6bb2972c_add_document_source.py @@ -0,0 +1,28 @@ +"""add_document_source + +Revision ID: a68c6bb2972c +Revises: d63e9f7661dd +Create Date: 2023-07-26 22:56:57.273888 + +""" +import sqlalchemy as sa +from alembic import op + + +# revision identifiers, used by Alembic. +revision = 'a68c6bb2972c' +down_revision = 'd63e9f7661dd' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('file', sa.Column('source', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('file', 'source') + # ### end Alembic commands ### From 0a0daacbd9bcac8e46c09b656563949196b95d9e Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Thu, 27 Jul 2023 00:13:51 +0300 Subject: [PATCH 10/12] Document source. Linting --- migrations/versions/a68c6bb2972c_add_document_source.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/migrations/versions/a68c6bb2972c_add_document_source.py b/migrations/versions/a68c6bb2972c_add_document_source.py index 49fe035..a8726cc 100644 --- a/migrations/versions/a68c6bb2972c_add_document_source.py +++ b/migrations/versions/a68c6bb2972c_add_document_source.py @@ -17,12 +17,8 @@ def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### op.add_column('file', sa.Column('source', sa.String(), nullable=True)) - # ### end Alembic commands ### def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### op.drop_column('file', 'source') - # ### end Alembic commands ### From 0fddf39eac2f576e8bf11c7e202c65aaacccf277 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Thu, 27 Jul 2023 00:29:29 +0300 Subject: [PATCH 11/12] Document source. Tests. --- tests/test_routes/test_file.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_routes/test_file.py b/tests/test_routes/test_file.py index a04465c..864e245 100644 --- a/tests/test_routes/test_file.py +++ b/tests/test_routes/test_file.py @@ -20,13 +20,27 @@ def test_post_success(union_member_user, client, dbsession): "surname": union_member_user['surname'], "number": union_member_user['union_number'], "filename": "filename.pdf", + "source": "webapp", "options": {"pages": "", "copies": 1, "two_sided": False}, } res = client.post(url, data=json.dumps(body)) assert res.status_code == status.HTTP_200_OK db_file = dbsession.query(File).filter(File.pin == res.json()['pin']).one_or_none() assert db_file is not None + assert db_file.source == 'webapp' + body2 = { + "surname": union_member_user['surname'], + "number": union_member_user['union_number'], + "filename": "filename2.pdf", + "options": {"pages": "", "copies": 1, "two_sided": False}, + } + res2 = client.post(url, data=json.dumps(body2)) + assert res2.status_code == status.HTTP_200_OK + db_file2 = dbsession.query(File).filter(File.pin == res2.json()['pin']).one_or_none() + assert db_file2 is not None + assert db_file2.source == 'unknown' dbsession.delete(db_file) + dbsession.delete(db_file2) dbsession.commit() @@ -35,6 +49,7 @@ def test_post_unauthorized_user(client): "surname": 'surname', "number": 'union_number', "filename": "filename.pdf", + "source": "vkbot", "options": {"pages": "", "copies": 1, "two_sided": False}, } res = client.post(url, data=json.dumps(body)) From 610ee28e81851ba6f8fa38d07add55e3cfa67103 Mon Sep 17 00:00:00 2001 From: Artem Morozov Date: Thu, 27 Jul 2023 00:35:18 +0300 Subject: [PATCH 12/12] Document source. Fixes. --- print_service/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/print_service/models/__init__.py b/print_service/models/__init__.py index abf9b0e..d1ffcfe 100644 --- a/print_service/models/__init__.py +++ b/print_service/models/__init__.py @@ -42,7 +42,7 @@ class File(Model): DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow ) number_of_pages: Mapped[int] = Column(Integer) - source: Mapped[str] = Column(String, default='unknown', nullable=True) + source: Mapped[str] = Column(String, default='unknown', nullable=False) owner: Mapped[UnionMember] = relationship('UnionMember', back_populates='files') print_facts: Mapped[list[PrintFact]] = relationship('PrintFact', back_populates='file')