From 7f041d6300d80db2c774eecfc3d4fe88ffbf7598 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Tue, 30 Nov 2021 18:28:31 +0100 Subject: [PATCH] =?UTF-8?q?DB:=20Paper=20si=20pamatuje,=20zda=20a=20kdy=20?= =?UTF-8?q?jsme=20ho=20zkou=C5=A1eli=20opravit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To je potřeba, aby automatické opravování nezkoušelo tentýž paper pořád dokola. --- db/db.ddl | 6 ++++-- db/upgrade-20211130.sql | 4 ++++ mo/db.py | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 db/upgrade-20211130.sql diff --git a/db/db.ddl b/db/db.ddl index 3709f66c..83eda992 100644 --- a/db/db.ddl +++ b/db/db.ddl @@ -219,11 +219,13 @@ CREATE TABLE papers ( bytes int DEFAULT NULL, -- velikost souboru file_name varchar(255) DEFAULT NULL, -- relativní cesta k souboru orig_file_name varchar(255) DEFAULT NULL, -- původní cesta, pokud PDF bylo poničené - note text NOT NULL DEFAULT '' -- komentář uploadujícího + note text NOT NULL DEFAULT '', -- komentář uploadujícího + fixed_at timestamp with time zone DEFAULT NULL -- Sémantika práce s poničenými soubory: -- - správná PDF mají orig_file_name=NULL -- - pokud někdo odevzdá poničené, vyplní se orig_file_name, ale file_name=NULL - -- - časem se spustí oprava, která vyplní i file_name a přepočítá bytes + -- - časem se spustí oprava, která vyplní i file_name, přepočítá bytes a nastaví fixed_at + -- - pokud oprava selže, nastaví pouze fixed_at ); CREATE INDEX papers_for_task_index ON papers (for_task); diff --git a/db/upgrade-20211130.sql b/db/upgrade-20211130.sql new file mode 100644 index 00000000..0ea3b0d2 --- /dev/null +++ b/db/upgrade-20211130.sql @@ -0,0 +1,4 @@ +SET ROLE 'mo_osmo'; + +ALTER TABLE papers ADD COLUMN + fixed_at timestamp with time zone DEFAULT NULL; diff --git a/mo/db.py b/mo/db.py index ed3bcd3c..f78500f3 100644 --- a/mo/db.py +++ b/mo/db.py @@ -629,6 +629,7 @@ class Paper(Base): file_name = Column(String(255)) orig_file_name = Column(String(255)) note = Column(Text, nullable=False, server_default=text("''::text")) + fixed_at = Column(DateTime(True)) task = relationship('Task') for_user_obj = relationship('User', primaryjoin='Paper.for_user == User.user_id') @@ -650,6 +651,9 @@ class Paper(Base): def is_broken(self) -> bool: return self.file_name is None + def is_nonfixable(self) -> bool: + return self.is_broken() and self.fixed_at is not None + def is_fixed(self) -> bool: return self.orig_file_name is not None and self.file_name is not None -- GitLab