From: Christian Heller Date: Tue, 19 Mar 2024 23:46:13 +0000 (+0100) Subject: Minor class method reorganizations. X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/te"st.html?a=commitdiff_plain;h=9e32ae00d4435932d55695be4e757ff109c76f26;p=plomtask Minor class method reorganizations. --- diff --git a/plomtask/days.py b/plomtask/days.py index f1920b4..d64b34b 100644 --- a/plomtask/days.py +++ b/plomtask/days.py @@ -25,9 +25,11 @@ class Day: if not self.datetime: raise HandledException(f'Given date of wrong format: {self.date}') - def save(self, db_conn: DatabaseConnection): - """Add (or re-write) self to database.""" - db_conn.exec('REPLACE INTO days VALUES (?)', (self.date,)) + def __eq__(self, other: object): + return isinstance(other, self.__class__) and self.date == other.date + + def __lt__(self, other): + return self.date < other.date @classmethod def from_table_row(cls, row: Row): @@ -59,8 +61,6 @@ class Day: """Return what weekday matches self.date.""" return self.datetime.strftime('%A') - def __eq__(self, other: object): - return isinstance(other, self.__class__) and self.date == other.date - - def __lt__(self, other): - return self.date < other.date + def save(self, db_conn: DatabaseConnection): + """Add (or re-write) self to database.""" + db_conn.exec('REPLACE INTO days VALUES (?)', (self.date,)) diff --git a/plomtask/db.py b/plomtask/db.py index 50eb737..d6966e6 100644 --- a/plomtask/db.py +++ b/plomtask/db.py @@ -7,27 +7,27 @@ from plomtask.misc import HandledException PATH_DB_SCHEMA = 'scripts/init.sql' -class DatabaseFile: +class DatabaseFile: # pylint: disable=too-few-public-methods """Represents the sqlite3 database's file.""" def __init__(self, path): self.path = path - self.check() - - def check(self): - """Check file exists and is of proper schema.""" - self.exists = isfile(self.path) - if self.exists: - self.validate_schema() + self._check() def remake(self): """Create tables in self.path file as per PATH_DB_SCHEMA sql file.""" with sql_connect(self.path) as conn: with open(PATH_DB_SCHEMA, 'r', encoding='utf-8') as f: conn.executescript(f.read()) - self.check() + self._check() + + def _check(self): + """Check file exists and is of proper schema.""" + self.exists = isfile(self.path) + if self.exists: + self._validate_schema() - def validate_schema(self): + def _validate_schema(self): """Compare found schema with what's stored at PATH_DB_SCHEMA.""" sql_for_schema = 'SELECT sql FROM sqlite_master ORDER BY sql' msg_err = 'Database has wrong tables schema. Diff:\n' diff --git a/plomtask/http.py b/plomtask/http.py index b6019ef..afcaa11 100644 --- a/plomtask/http.py +++ b/plomtask/http.py @@ -22,17 +22,6 @@ class TaskHandler(BaseHTTPRequestHandler): """Handles single HTTP request.""" server: TaskServer - def send_html(self, html: str, code: int = 200): - """Send HTML as proper HTTP response.""" - self.send_response(code) - self.end_headers() - self.wfile.write(bytes(html, 'utf-8')) - - def send_msg(self, msg: str, code: int = 400): - """Send message in HTML formatting as HTTP response.""" - html = self.server.jinja.get_template('msg.html').render(msg=msg) - self.send_html(html, code) - def do_GET(self): """Handle any GET request.""" try: @@ -49,9 +38,9 @@ class TaskHandler(BaseHTTPRequestHandler): raise HandledException('Test!') conn.commit() conn.close() - self.send_html(html) + self._send_html(html) except HandledException as error: - self.send_msg(error) + self._send_msg(error) def do_GET_calendar(self, conn: DatabaseConnection): """Show Days.""" @@ -62,3 +51,14 @@ class TaskHandler(BaseHTTPRequestHandler): """Show single Day.""" day = Day.by_date(conn, date) return self.server.jinja.get_template('day.html').render(day=day) + + def _send_html(self, html: str, code: int = 200): + """Send HTML as proper HTTP response.""" + self.send_response(code) + self.end_headers() + self.wfile.write(bytes(html, 'utf-8')) + + def _send_msg(self, msg: str, code: int = 400): + """Send message in HTML formatting as HTTP response.""" + html = self.server.jinja.get_template('msg.html').render(msg=msg) + self._send_html(html, code)