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
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!')
- conn.commit()
+ raise NotFoundException(f'Unknown page: /{site}')
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:
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:
"""Update or insert Day of date and fields defined in postvars."""
day = Day.by_date(conn, date, create=True)
+ if 'comment' not in postvars.keys():
+ raise BadFormatException('missing Day.comment value')
day.comment = postvars['comment'][0]
day.save(conn)
postvars: dict[str, list[str]]) -> None:
"""Update or insert Process of id_ and fields defined in postvars."""
process = Process.by_id(conn, id_, create=True)
+ if 'title' not in postvars.keys():
+ raise BadFormatException('missing Process.title value')
+ if 'description' not in postvars.keys():
+ raise BadFormatException('missing Process.description value')
+ if 'effort' not in postvars.keys():
+ raise BadFormatException('missing Process.effort value')
process.title.set(postvars['title'][0])
process.description.set(postvars['description'][0])
effort = postvars['effort'][0]
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) -> \