home · contact · privacy
Redirect / to /day, throw informative Exception on other unknown paths.
[plomtask] / plomtask / http.py
index ddea087cb38fae73c713da589ef901925141cc5e..1046eccbb1523c784717ca8d5f7a970d11404b85 100644 (file)
@@ -6,7 +6,8 @@ from urllib.parse import urlparse, parse_qs
 from os.path import split as path_split
 from jinja2 import Environment as JinjaEnv, FileSystemLoader as JinjaFSLoader
 from plomtask.days import Day, todays_date
-from plomtask.misc import HandledException
+from plomtask.exceptions import HandledException, BadFormatException, \
+        NotFoundException
 from plomtask.db import DatabaseConnection, DatabaseFile
 from plomtask.processes import Process
 
@@ -43,17 +44,20 @@ class TaskHandler(BaseHTTPRequestHandler):
                 try:
                     id__ = int(id_) if id_ else None
                 except ValueError as e:
-                    raise HandledException(f'Bad ?id= value: {id_}') from e
+                    raise BadFormatException(f'Bad ?id= value: {id_}') from e
                 html = self.do_GET_process(conn, id__)
             elif 'processes' == site:
                 html = self.do_GET_processes(conn)
+            elif '' == site:
+                self._redirect('/day')
+                return
             else:
-                raise HandledException('Test!')
+                raise NotFoundException(f'Unknown page: /{site}')
             conn.commit()
             conn.close()
             self._send_html(html)
         except HandledException as error:
-            self._send_msg(error)
+            self._send_msg(error, code=error.http_code)
 
     def do_GET_calendar(self, conn: DatabaseConnection,
                         start: str, end: str) -> str:
@@ -92,13 +96,13 @@ class TaskHandler(BaseHTTPRequestHandler):
                 try:
                     id__ = int(id_) if id_ else None
                 except ValueError as e:
-                    raise HandledException(f'Bad ?id= value: {id_}') from e
+                    raise BadFormatException(f'Bad ?id= value: {id_}') from e
                 self.do_POST_process(conn, id__, postvars)
             conn.commit()
             conn.close()
             self._redirect('/')
         except HandledException as error:
-            self._send_msg(error)
+            self._send_msg(error, code=error.http_code)
 
     def do_POST_day(self, conn: DatabaseConnection,
                     date: str, postvars: dict[str, list[str]]) -> None:
@@ -117,7 +121,7 @@ class TaskHandler(BaseHTTPRequestHandler):
         try:
             process.effort.set(float(effort))
         except ValueError as e:
-            raise HandledException(f'Bad effort value: {effort}') from e
+            raise BadFormatException(f'Bad effort value: {effort}') from e
         process.save(conn)
 
     def _init_handling(self) -> \